SystemJS 相对路径
SystemJS relative paths
我有一个非常基本的 config.js
文件,只要它部署在根 URL 下,它就能按预期工作。这是示例 config.js
文件:
System.config({
//use typescript for compilation
transpiler: 'typescript',
//typescript compiler options
typescriptOptions: {
emitDecoratorMetadata: true
},
//map tells the System loader where to look for things
map: {
app: "./src",
},
//packages defines our app package
packages: {
app: {
main: './app.ts',
defaultExtension: 'ts'
}
}
});
只要这个文件是从根路径<script src="/config.js">
加载并且位置是
http://localhost/config.js and http://localhost/src/app.ts 一切正常。
我现在正在尝试将 config.js
文件移动到更深的目录并像这样加载它:<script src="/a/b/c/d/e/config.js">
,但是如果我这样做,我需要对路径进行硬编码config.js
文件本身如:
//map tells the System loader where to look for things
map: {
app: "./a/b/c/d/e/src",
},
是否可以不在 config.js
文件中再次对整个路径进行硬编码?我原以为领先的 ./
意味着 "relative to" 但事实并非如此。如果我不再次对完整路径进行硬编码,它就不起作用。什么是(或是否存在)指示相对位置的语法?
'./' 的意思是相对的,但它是相对于加载 js 文件的 'context' 的。我假设您将它加载到位于根文件夹中的 index.html 之类的页面中 - 即您的 'context' 并且所有路径都将相对于它。因此,通过将 config.js 移动到任何其他非根位置,然后将其加载到根 html 页面中 - 不会更改其仍将是根文件夹的上下文,而 src 文件的位置已更改并且现在您被迫在 config.js 中为他们提供新路径。
为了更简单,您可以使用 systemjs baseURL 属性。然后你将只需要在一个地方更改路径,而无需为每个包重写它们。
我有一个非常基本的 config.js
文件,只要它部署在根 URL 下,它就能按预期工作。这是示例 config.js
文件:
System.config({
//use typescript for compilation
transpiler: 'typescript',
//typescript compiler options
typescriptOptions: {
emitDecoratorMetadata: true
},
//map tells the System loader where to look for things
map: {
app: "./src",
},
//packages defines our app package
packages: {
app: {
main: './app.ts',
defaultExtension: 'ts'
}
}
});
只要这个文件是从根路径<script src="/config.js">
加载并且位置是
http://localhost/config.js and http://localhost/src/app.ts 一切正常。
我现在正在尝试将 config.js
文件移动到更深的目录并像这样加载它:<script src="/a/b/c/d/e/config.js">
,但是如果我这样做,我需要对路径进行硬编码config.js
文件本身如:
//map tells the System loader where to look for things
map: {
app: "./a/b/c/d/e/src",
},
是否可以不在 config.js
文件中再次对整个路径进行硬编码?我原以为领先的 ./
意味着 "relative to" 但事实并非如此。如果我不再次对完整路径进行硬编码,它就不起作用。什么是(或是否存在)指示相对位置的语法?
'./' 的意思是相对的,但它是相对于加载 js 文件的 'context' 的。我假设您将它加载到位于根文件夹中的 index.html 之类的页面中 - 即您的 'context' 并且所有路径都将相对于它。因此,通过将 config.js 移动到任何其他非根位置,然后将其加载到根 html 页面中 - 不会更改其仍将是根文件夹的上下文,而 src 文件的位置已更改并且现在您被迫在 config.js 中为他们提供新路径。
为了更简单,您可以使用 systemjs baseURL 属性。然后你将只需要在一个地方更改路径,而无需为每个包重写它们。