什么是SystemJS配置中的模块Vs位置Vs包?

时间:2017-02-15 12:12:56

标签: systemjs

我对SystemJS配置中使用的各种术语感到困惑。它涉及模块,位置,包等......

JS中的模块不是单个文件,是模块或文件的集合吗?如果是这样,模块如何成为包的别名?

这来自documentation page

  

map选项与path类似,但在规范化过程中很早就起作用了。它允许您将模块别名映射到位置或包:

1 个答案:

答案 0 :(得分:1)

是模块是一个单独的文件,在javascript中它只是.js关键字后的引号中的文件名(带有假定的from扩展名)

import ... from 'some-module';

在SystemJS配置文件中,pathsmap可用于定义some-module引用的实际文件或网址。

配置文件中的

packages允许您为特定位置或其下的所有模块应用一组配置参数(默认扩展,模块格式,自定义加载程序等)(packages对象中的键)

packages中的一个设置是main,类似于节点main中的package.json(除了它的默认值为空,不是index.js):它确定当包位置本身出现在from语句的import中时加载了哪个文件。

所以,我认为"模块如何成为包的别名?"关于这个的问题

  

地图选项与路径类似,但很早就行动了   规范化过程。它允许您将模块别名映射到a   地点或包裹:

可以在这个例子中解释:

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

当SystemJS将这些mappackagespath设置应用于

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。