2017-02-15 32 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。