我有一个非常简单的 Angular2 应用程序,只是一个 'hello world'。我做了一个看似不合理的决定:在我的开发项目和最终部署到 Spring 后端的文件夹之间使用不同的目录结构。
因为这个差异,我在 TypeScript 导入方面出现了问题,当我尝试在浏览器中打开应用程序时,这一行代码最终导致 404 错误(无法找到 /angular2/core 库):
import {Component, View} from 'angular2/core';
长话短说,我最终加回了/app文件夹以使一切正常工作,但我修改了我的导入语句如下:
import {Component, View} from '../node_modules/angular2/core';
然而,这导致一些奇怪的行为。由于在库路径中指定了../node_modules
,原因不明的是,JS实际上会使用ajax调用来检索npm_modules/angular2/
文件夹中的每个单独文件,从头开始加载所有Angular2文件,即使这些文件已经包含在我的HTML标题中:
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script>
当我终于意识到发生了什么,我把导入语句回滚到
import {Component, View} from 'angular2/core';
一切都正常工作了。Angular2现在完全从上面的脚本标签加载,并且没有通过额外的ajax调用加载文件。
有人能解释一下这是什么原因吗?我认为这是正常行为,但我不明白导入是如何工作的,为什么指定更详细的路径会产生如此大的差异。