2017-02-15 52 views
1

我很困惑SystemJS配置中使用的各種術語。它談論模塊,定位,包裝等等SystemJS配置中的模塊Vs位置Vs包是什麼?

是不是模塊在JS是一個單一的文件,並爲模塊或文件的集合?如果是這樣,一個模塊如何成爲一個包的別名?

這是從documentation page

地圖選項類似於路徑,但在歸一化過程的早期作用。它可以讓你的模塊別名映射到一個位置或包裝:

回答

1

是模塊是一個單一的文件,在JavaScript它只是文件名(與假設.js擴展)的報價後from關鍵字

import ... from 'some-module'; 

在SystemJS配置文件中,可以使用pathsmap來定義some-module引用的實際文件或URL。

packages在配置文件中,您可以爲位於或低於特定位置(packages對象中的密鑰)的所有模塊應用一組配置參數(默認擴展名,模塊格式,自定義加載程序等)。在packages

之一設置爲main,其類似於mainpackage.json在節點(除了它的默認值是空的,不index.js):它確定哪些文件當包裝位置本身在from出現在被加載import聲明。

所以,我認爲「一個模塊如何成爲一個包的別名?」關於此問題

map選項與路徑類似,但在 標準化過程中的行爲很早。它允許一個模塊別名映射到 位置或包:

可以在本實施例中進行說明:

paths: { 
    'npm:': 'node_modules/' 
}, 
map: { 
    'some-module': 'npm:some-module' 
}, 
packages: { 
    'some-module': { 
     main: './index.js' 
    } 
} 

當這些mappackagespath設置由SystemJS施加到

import something from 'some-module'; 

它們將導致SystemJS從node_modules/some-module/index.js加載baseURL下的模塊。

import something from 'some-module/subcomponent'; 

被映射到node_modules/some-module/subcomponent.js

注意:這是基於我對SystemJS 0.19的經驗。我還沒有試過0.20。