首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何导入系统js SFX库

如何导入系统js SFX库
EN

Stack Overflow用户
提问于 2015-08-08 00:14:47
回答 1查看 826关注 0票数 3

我已经按照https://github.com/systemjs/builder#example---common-bundles中的描述将几个js文件编译到一个SFX中(虽然使用'+‘而不是'&',但这部分似乎可以工作):

代码语言:javascript
复制
gulp.task('systemjs', ['copy-assets'], function(done){
  return new Builder({
    baseURL: '.',

    // opt in to Babel for transpiling over Traceur
    transpiler: 'traceur'

    // etc. any SystemJS config
  }).buildSFX('src/elements/my-test.js + src/elements/my-test2.js + src/elements/model/user.js', 'dist/elements.js')

      .then(function() {
        console.log('Build complete');

  }).catch(function(err) {
        console.log('Build error');
        console.log(err);
    });

});

但是当我尝试导入生成的js文件时,我找不到任何lib:

代码语言:javascript
复制
<script src="./bower_components/system.js/dist/system-csp-production.js"></script>

<script>

    System.import('elements.js').then(function(m) {
        console.log(m);//never invoked
    });
</script>

任何帮助都是非常感谢的!

更新:

到目前为止,我找到的唯一解决方案是使用sfxGlobalName并创建“特殊的”js文件,该文件包含对要包含的所有其他文件的引用,然后将其包含到html中:

all.js:

代码语言:javascript
复制
 import {MyTest} from 'src/elements/my-test.js';
    export var myTest = MyTest;
    
    import {MyTest2} from 'src/elements/my-test2.js';
    export var myTest2 = MyTest2;

index.html:

代码语言:javascript
复制
 <script src="./bower_components/system.js/dist/system-polyfills.js"></script>

<script src="elements.js"></script>

然后可以访问导入的对象,如下所示

代码语言:javascript
复制
elements.myTest

一口吞下:

代码语言:javascript
复制
gulp.task('systemjs', ['copy-assets'], function(done){
  return new Builder({
    baseURL: '.',

    // opt in to Babel for transpiling over Traceur
    transpiler: 'traceur'

    // etc. any SystemJS config
  }).buildSFX('src/elements/all.js', 'dist/elements.js', { sfxGlobalName: 'elements', minify: false, sourceMaps:false })

      .then(function() {
        console.log('Build complete');

  }).catch(function(err) {
        console.log('Build error');
        console.log(err);
    });

});

有没有更好的办法?

示例应用程序位于github上:

代码语言:javascript
复制
git clone https://github.com/bushuyev/test_test.git
cd test_test
git checkout tags/1.0
npm install
bower install
gulp wct
EN

回答 1

Stack Overflow用户

发布于 2015-08-11 05:13:55

您不能通过System.import API导入sfx包,因为您尝试导入的模块已经编译,这意味着它是按照选择的格式(es6、cjs、amd)包装的。在尝试导入已编译的cjs文件时,您将看到相同的行为(例如,通过Browserify)。

为了能够导入模块,最好不要使用SFX将它们捆绑在一起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31882316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档