Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ecmascript 6 如何从包中调用命名模块_Ecmascript 6_Systemjs - Fatal编程技术网

Ecmascript 6 如何从包中调用命名模块

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只导入

我有一个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
只导入
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
模块中的任何内容