从“@angular”而不是“angular2”导入 *

Posted

技术标签:

【中文标题】从“@angular”而不是“angular2”导入 *【英文标题】:import * from "@angular" instead of "angular2"从“@angular”而不是“angular2”导入 * 【发布时间】:2016-09-05 08:10:31 【问题描述】:

我在 angular2 中有点困惑。许多例子显示像

import  Component  from "@angular/core"

但实际上在node_module 中存在angular2目录。所以逻辑上应该是

import  Component  from "angular2/core" 

这两者有什么区别?

【问题讨论】:

Angular 应用程序是模块化的。它们由许多文件组成,每个文件都有一个用途。 Angular 本身是模块化的。它是一个库模块的集合,每个模块由几个相关的特性组成,我们将使用它们来构建我们的应用程序。当我们需要模块中的某些东西时,我们将其导入。这里我们从 @angular/core 导入 Angular 组件装饰器函数,因为我们需要它来定义我们的组件。 app/app.component.ts (import) import Component from '@angular/core'; @mayur,我想你可能误解了这个问题。 OP 没有询问使用什么或为什么使用导入功能,而是询问"@" 符号的使用。 Gunter的以下答案解释了这一点。查看他们发布的链接中的更改日志。 【参考方案1】:

这是从 beta.17 到 rc.0 的更新引入的更改

https://github.com/angular/angular/blob/master/CHANGELOG.md#200-rc0-2016-05-02

【讨论】:

知道为什么要切换吗? @RyanRahlf AFAIK NPM 上的命名空间有名称限制,@ 就是其中之一。他们也不希望为不同的 Angular 版本使用不同的命名空间,只为所有 Angular 提供一个命名空间。 如果您在 r.c. 项目中使用低于 beta.17 的模块会怎样?那你用什么语法呢? 什么 beta 17 模块?我敢肯定,如果版本不同,Angular2 模块将无法协同工作。或许运气好的话,如果它们的版本只有一点点不同,你就可以做一些事情,但总是有太多的变化,这是不太可能的。 @GünterZöchbauer。如果我只导入import Component from '@angular/core'这样的一个组件而不是import * from '@angular/core',会不会影响代码的有效性,而不是乍一看?

以上是关于从“@angular”而不是“angular2”导入 *的主要内容,如果未能解决你的问题,请参考以下文章

如何从 src/images 文件夹而不是 angular 2 中的 assets 文件夹加载图像

为啥我应该在构造函数而不是 ngOnInit 中创建我的 Angular2 响应式表单?

如何使用带有表单数据主体而不是 json 主体的 http 'POST'? (Angular2/打字稿)

Angular 2 - 替换历史而不是推送

如何将第 3 方脚本从 Web 动态加载到 Angular2 组件中

Angular2 模块级样式表