【发布时间】:2016-05-11 15:15:55
【问题描述】:
我有一个非常简单的“hello world”Angular2 应用程序。我还做出了一个明显不合理的决定,即在我的开发项目和 Spring 后端的最终部署文件夹之间使用不同的目录结构。
由于这种差异,我在导入 TypeScript 时遇到了问题,当我尝试在浏览器中打开实际应用程序时,这条线最终产生了 404 错误(无法找到 /angular2/core 库):
import {Component, View} from 'angular2/core';
长话短说,我最终添加了 /app 文件夹以使一切正常,但我最终修改了我的导入语句,如下所示:
import {Component, View} from '../node_modules/angular2/core';
然而,这最终导致了一些奇怪的行为。出于某种原因,在库路径中指定 ../node_modules 会导致 JS 使用 ajax 调用从头开始加载所有 Angular2 文件,以从 npm_modules/angular2/ 文件夹中检索每个单独的文件,即使这是我的 HTML 标头的一部分:
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script>
当我终于意识到发生了什么时,我将导入语句恢复为
import {Component, View} from 'angular2/core';
这一切都奏效了。 Angular2 现在已完全从上面的脚本标签加载,并且没有文件被额外的 ajax 调用加载。
有人能解释一下是什么原因造成的吗?我认为这是正常行为,但我不明白导入的工作原理以及为什么指定更详细的路径会产生如此大的影响。
【问题讨论】:
-
有关在 TS 世界中导入模块的更多详细信息:typescriptlang.org/docs/handbook/module-resolution.html 文档在这方面做得很好。真的。
标签: import typescript angular