我对SystemJS配置中使用的各种术语感到困惑。它涉及模块,位置,包等......
JS中的模块不是单个文件,包是模块或文件的集合吗?如果是这样,模块如何成为包的别名?
map选项与path类似,但在规范化过程中很早就起作用了。它允许您将模块别名映射到位置或包:
答案 0 :(得分:1)
是模块是一个单独的文件,在javascript中它只是.js
关键字后的引号中的文件名(带有假定的from
扩展名)
import ... from 'some-module';
在SystemJS配置文件中,paths
和map
可用于定义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将这些map
,packages
和path
设置应用于
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。