systemjs.config.js在angular 2打包结构中做什么?
还有,var map,packages,var config在这里做什么我有点困惑,他们做任何configuration。我看到每个项目,我发现无处不在,他们把这个文件。 这个function是做什么的?
(function(global) { // map tells the System loader where to look for things var map = { 'app': 'app', // 'dist', 'rxjs': 'node_modules/rxjs', 'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api', '@angular': 'node_modules/@angular', 'primeng': 'node_modules/primeng' }; // packages tells the System loader how to load when no filename and/or no extension var packages = { 'app': { main: 'boot.js', defaultExtension: 'js' }, 'rxjs': { defaultExtension: 'js' }, 'angular2-in-memory-web-api': { defaultExtension: 'js' }, 'primeng': { defaultExtension: 'js' } }; var packageNames = [ '@angular/common', '@angular/compiler', // ]; // add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' } packageNames.forEach(function(pkgName) { packages[pkgName] = { main: 'index.js', defaultExtension: 'js' }; }); var config = { map: map, packages: packages } // filterSystemConfig - index.html's chance to modify config before we register it. if (global.filterSystemConfig) { global.filterSystemConfig(config); } System.config(config); })(this);
它允许configurationSystemJS来加载使用TypeScript编译器编译的模块。 对于匿名模块(每个JS文件一个模块),它允许将模块的名称映射到实际包含模块JavaScript代码的JS文件。
这里是一个例子。 如果我尝试导入名为app/test
的模块,SystemJS将执行:
- 尝试find一个预先注册的模块(与
System.register('app/test', ...
- 如果不是的话,它会查看它的configuration来构build执行加载相应文件的请求:
- 有一个
app
的map
条目 - 有一个与
defaultExtension
=js
app
packages
入口
- 有一个
- 请求将是
http://localhost:3000/app/test.js
如果您有map: { app: dist }
,请求将是http://localhost:3000/dist/test.js