我有一个非常基本的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和http://localhost/src/app.ts一切正常。
我现在正在尝试将config.js
文件移动到更深的目录并加载它:<script src="/a/b/c/d/e/config.js">
,但是如果我这样做,那么我需要对{{{}上的路径进行硬编码1}}文件本身就像:
config.js
是否有可能不再在 //map tells the System loader where to look for things
map: {
app: "./a/b/c/d/e/src",
},
文件中对整个路径进行硬编码?我本以为领先的config.js
意味着“相对于”,但事实并非如此。如果我不再对全路径进行硬编码,则它不起作用。什么是(或存在)指示相对位置的语法?
答案 0 :(得分:5)
&#39; ./ 39;确实是指亲戚,但它与“背景”有关。你加载js文件的地方。我假设您将其加载到位于根文件夹中的index.html之类的页面中 - 这是您的上下文&#39;并且所有路径都将相对于它。因此,通过将config.js移动到任何其他非root位置,然后将其加载到根html页面 - 不会更改其仍将是根文件夹的上下文,而src文件的位置已更改,现在您被迫提供config.js中新的路径。
为了方便起见,您可以使用systemjs baseURL属性。然后,您只需在一个地方更改路径,而无需为每个包重写它们。