周末一直在尝试使用jspm和systemjs。一切都工作正常,除了捆绑jspm优惠。我可以加载单个文件,但jsmp拒绝加载包文件(已优化)。
我正在使用以下方法创建捆绑文件:
jspm bundle lib/login assets/js/1-login.js --inject
这会更新config.js文件,如下所示:
System.config({
baseURL: "/",
defaultJSExtensions: true,
transpiler: "babel",
babelOptions: {
"optional": [
"optimisation.modules.system"
]
},
paths: {
"github:*": "jspm_packages/github/*",
"npm:*": "jspm_packages/npm/*"
},
bundles: {
"1-login.js": [
"lib/login.js",
"lib/sample.js"
]
},
map: {....}
});
LIB / login.js
import * as sample from 'lib/sample'
export function test() {
sample.testMethod();
}
LIB / sample.js
import $ from 'jquery'
export function testMethod( ) {
console.log( $('body') );
}
所以,根据jsmp文档:
只要请求其中一个模块,就会截获请求,并在继续模块加载之前先动态加载bundle。
我的理解是运行
System.import('lib/login.js');
应该加载bundle(和优化文件),但不是 - 它只是加载实际文件。我在这里错过了什么?作为一个额外的问题,为什么jquery不在捆绑列表中?
答案 0 :(得分:1)
好吧,弄清楚我哪里出错了。
我将所有生成的资源保留在assets/js
中,但在我的config.json中,我没有更改baseUrl
来反映这一点。事实上我确实在baseUrl
中设置了package.json
,这就是为什么jspm没有抛出很多错误的原因。
这与jquery没有加载的原因相同,所以问题解决了:)