Angular 应用程序以及 Angular 本身都依赖于很多第三方包 ( 包括 Angular 自己 ) 提供的特性和功能。这些包由 Node 包管理器 (npm) 负责安装和维护。
Angular2开发时依赖的包在package.json文件中都有定义。
{
"dependencies": {
"@angular/common": "~2.1.1",
"@angular/compiler": "~2.1.1",
"@angular/core": "~2.1.1",
"@angular/forms": "~2.1.1",
"@angular/http": "~2.1.1",
"@angular/platform-browser": "~2.1.1",
"@angular/platform-browser-dynamic": "~2.1.1",
"@angular/router": "~3.1.1",
"@angular/upgrade": "~2.1.1",
"angular-in-memory-web-api": "~0.1.13",
"core-js": "^2.4.1",
"reflect-Metadata": "^0.1.8",
"rxjs": "5.0.0-beta.12",
"systemjs": "0.19.39",
"zone.js": "^0.6.25"
},
"devDependencies": {
"@types/core-js": "^0.9.34",
"@types/node": "^6.0.45",
"concurrently": "^3.0.0",
"lite-server": "^2.2.2",
"typescript": "^2.0.3"
}
}
dependencies和devDependencies
package.json
包含两组包:dependencies和devDependencies。
dependencies下的这些包是运行本应用的基础,而devDependencies下的只在开发此应用时才用得到。 通过为install
命令添加--production
参数,你在产品环境下安装时排除devDependencies下的包,就像这样:
npm install my-application --production
dependencies
应用程序的package.json
文件中,dependencies
区下有三类包:
-
特性- 特性包为应用程序提供了框架和工具方面的能力。
-
填充 (Polyfills)- 填充包弥合了不同浏览器上的 JavaScript 实现方面的差异。
- 其它- 其它库对本应用提供支持,比如
bootstrap
包提供了 HTML 中的小部件和样式。
特性包
@angular/core- 框架中关键的运行期部件,每一个应用都需要它。 包括所有的元数据装饰器:Component
、Directive
,依赖注入系统,以及组件生命周期钩子。
@angular/core- Critical runtime parts of the framework needed by every application. Includes all Metadata decorators,Component
,107); padding:0px 4px">Directive,dependency injection,and the component lifecycle hooks.
@angular/common- 常用的那些由 Angular 开发组提供的服务、管道和指令。
@angular/compiler- Angular 的模板编译器。 它会理解模板,并且把模板转化成代码,以供应用程序运行和渲染。 开发人员通常不会直接跟这个编译器打交道,而是通过platform-browser-dynamic
或离线模板编译器间接使用它。
@angular/platform-browser- 与 DOM 和浏览器相关的每样东西,特别是帮助往 DOM 中渲染的那部分。 这个包还包含 bootstrapStatic 方法,用来引导那些在产品构建时需要离线预编译模板的应用程序。
@angular/platform-browser-dynamic- 为应用程序提供一些提供商和bootstrap方法,以便在客户端编译模板。不要用于离线编译。 我们使用这个包在开发期间引导应用,以及引导 plunker 中的范例。
@angular/http- Angular 的 HTTP 客户端。
@angular/router- 路由器。
@angular/upgrade- 一组用于升级 Angular 1 应用的工具。
system.js- 是一个动态的模块加载器, 与ES2015 模块规范兼容。 还有很多其它选择,比如广受欢迎的webpack。 SystemJS 被用在了我们的文档范例中。因为它能工作。
今后,应用程序很可能还会需要更多的包,比如 HTML 控件、主题、数据访问,以及其它多种工具。