【发布时间】:2015-12-24 02:48:46
【问题描述】:
我想importangular,实例化AngularJS模块,然后再导入另一个要求Angular已经实例化的文件:
import angular from 'angular';
var app = angular.module('app', []);
import 'src/app.js';
angular.element(window).ready(function(){
angular.bootstrap(document, ['app']);
});
但是 Babel 将它编译成这个(TLDR:将所有导入提升到顶部)
System.register([], function (_export2) {
return {
setters: [],
execute: function () {
System.register(['angular', 'src/app.js'], function (_export) {
var angular, app;
return {
setters: [function (_angular) {
angular = _angular.default;
}, function (_srcAppJs) {}],
execute: function () {
app = angular.module('app', []);
angular.element(window).ready(function () {
angular.bootstrap(document, ['app']);
});
}
};
});
}
};
});
更新:@just-boris
我很清楚System.import().then。问题是 app.js 还包含 imports 文件,这些文件构成了 Angular 组件,这些文件需要实例化 module。
导入文件示例:
angular.module('app').controller( [ function () {} ] );
System.import().then 不等到依赖树
解决了,因为它没有任何意义。
System.import('app').then(function(){
// But wait, app.js's dependencies aren't resolved!
// The Angular components aren't loaded yet!
// The following will throw errors:
angular.element(window).ready(function(){
angular.bootstrap(document, ['app']);
});
});
【问题讨论】:
-
为什么不把 app.js 所依赖的行为放到 app.js 中呢?还是它的依赖项之一?
-
@AndrewMarshall 我会遇到同样的问题。查看修改。
标签: javascript angularjs ecmascript-6 babeljs systemjs