Angular2 -- SystemJS解析


文 | Yeaseon

SystemJS

SystemJS是一個通用的動態模塊加載器,Angular2就是通過SystemJS加載所需的模塊。

SystemJS 配置函數

通過System.config函數進行配置:

System.config({
    configA: {},
    configB: 'value'
});

SystemJS 可配置項

  • babelOptions
  • bundle
  • defaultJSExtensions
  • depCache
  • map
  • meta
  • packages
  • paths
  • traceurOptions
  • transpiler
  • typescriptOptions

在Angular2的‘英雄聯盟’教程中,我們的systemjs.config.js腳本中只配置了mappackages兩項,其他配置選項詳情

map

map tells the System loader where to look for things

以下是Angular2中的配置:

var map = {
    'app':                        'app', // 'dist',
    '@angular':                   'node_modules/@angular',
    'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
    'rxjs':                       'node_modules/rxjs'
  };

packages

packages tells the System loader how to load when no filename and/or no extension

以下是Angular2中的配置:

var packages = {
    'app':                        { main: 'main.js',  defaultExtension: 'js' },
    'rxjs':                       { defaultExtension: 'js' },
    'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
  };
  • main: package的主要入口
  • defaultExtension:默認擴展名

然後完成對於SystemJS的配置:

var config = {
    map: map,
    packages: packages
  };
System.config(config);

System.import告訴SystemJS引入main文件,main文件是Angular啓動應用的地方。
在根目錄index.html

<script>
      System.import('app')
             .catch(function(err){ 
                console.error(err); 
             });
</script>

並沒有看到main相關的字眼,只有一個app被引入,這就要回到我們上面提到的packages配置項,SystemJS會自動尋找./app/main.j
s
,這樣我們的應用就可以在main中啓動了。

轉載:http://www.jianshu.com/p/db4be331b026

個人建了前端學習羣,旨在一起學習前端。純淨、純粹技術討論,非前端人員勿擾!入羣加我微信iamaixiaoxiao。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章