Ecmascript 6 如何从包中调用命名模块
我有一个ASP.NET5和TypeScript的项目。基本上这是我的Ecmascript 6 如何从包中调用命名模块,ecmascript-6,systemjs,Ecmascript 6,Systemjs,我有一个ASP.NET5和TypeScript的项目。基本上这是我的wwwroot文件夹 -wwwroot |-app ||-person.js ||-employee.js ||-init.js |-js ||-libraries.js // Contains: systemjs, ...etc ||-app.bundle.js person.js是一个es6模块,可导出类person employee.js导入person.js并导出class employee init.js只导入
wwwroot
文件夹
-wwwroot
|-app
||-person.js
||-employee.js
||-init.js
|-js
||-libraries.js // Contains: systemjs, ...etc
||-app.bundle.js
person.js
是一个es6模块,可导出类person
employee.js
导入person.js
并导出class employee
init.js
只导入employee.js
,创建一个新的employee
对象并控制台他的名字
//init.js
import { Employee } from "./employee";
var p = new Employee();
console.log(p.name);
现在,我使用systemjsbuilder
将这三个文件绑定到app.bundle.js
文件夹中,该文件夹产生了三个名为System.register
的调用:
System.register("wwwroot/app/person.js",...
System.register("wwwroot/app/employee.js",...
System.register("wwwroot/app/init.js"...
在我的index.cshtml
视图文件中,我有以下脚本标记:
<script type="text/javascript" src="./js/libraries.js"></script>
<!-- 2. Configure SystemJS -->
<script type="text/javascript">
System.config({
packages: {
js: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('js/app.bundle')
.then(null, console.error.bind(console));
</script>
System.config({
套餐:{
js:{
格式:'寄存器',
defaultExtension:'js'
}
}
});
System.import('js/app.bundle')
.then(null,console.error.bind(console));
显然,因为我已经命名了模块,所以没有调用init.js
中的任何内容
所以我的问题是,如何调用命名的系统。注册调用
注意:我是es6模块的新手,因此这是一个测试项目,目的是让想法正确。由此,我解决了以下问题:
<script type="text/javascript">
System.config({
bundles: {
'app.bundle.js': ['wwwroot/app/init']
},
packages: {
wwwroot: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('wwwroot/app/init')
.then(null, console.error.bind(console));
</script>
System.config({
捆绑包:{
'app.bundle.js':['wwwroot/app/init']
},
套餐:{
wwwroot:{
格式:'寄存器',
defaultExtension:'js'
}
}
});
System.import('wwwroot/app/init')
.then(null,console.error.bind(console));
解释:
一旦尝试导入捆绑包中的任何模块,捆绑包扩展将自动下载捆绑包
因此,我需要做的就是告诉systemjs
将init
模块注册到我的bundle中,它将下载bundle并执行init
模块中的任何内容