Angular2 是 AngularJS 的下一个版本,它继承了 AngularJS 中的部分思想又加入了一些新的改进。 Angular2 相比于 React 和 Vue 来说要复杂很多,这三者的出发点都是组件化和数据驱动视图,但 Angular2 多出了这些思想:
@XXX
Angular2 引入的这些思想都是为了分解和简化大型项目的难度,但对于开发小项目来说这些可能都是累赘,对于初学者来说可能会难以掌握。 在语言选择上虽然 Angular2 官方对 TypeScript 和 JavaScript 都提供了支持,但通常选择 Angular2 的项目都会使用 TypeScript, 原因在于 Angular2 本身就是使用 TypeScript 开发,在项目中使用 TypeScript 相比 JavaScript 开发体验会好很多。
看到这你可能会被 Angular2 的复杂所吓到,先来看看如何用 Angular2 来开发 Hello,Webpack。
Hello,Webpack
这个应用只有一个视图组件 AppComponent 用于渲染 Hello,Webpack,组件代码如下:
AppComponent
import {Component} from '@angular/core'; // 通过注解的方式描述清楚了这个视图组件所需的模版、样式、数据、逻辑。 @Component({ // 标签名称 selector: 'app-root', // HTML 模版 template: '<h1>{{msg}}</h1>', // CSS 样式 styles: ['h1{ color:red; }'] }) export class AppComponent { msg = 'Hello,Webpack'; }
光有组件还不够,还需要实例化 AppComponent 视图组件,并把它渲染到 DOM 中去。Angular2 规定可运行的应用至少有一个 NgModule 也就是需要一个根 NgModule。 这个根 NgModule 描述了如何启动应用,代码如下:
// 让 Angular2 正常运行需要的 polyfill import 'core-js/es6/reflect'; import 'core-js/es7/reflect'; import 'zone.js/dist/zone'; // Angular2 框架核心模块 import {NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; // 项目自定义视图组件 import {AppComponent} from './app.component'; @NgModule({ // 该 NgModule 所依赖的视图组件 declarations: [AppComponent], // 该 NgModule 所依赖的其它 NgModule imports: [BrowserModule], // 应用的根视图组件,只有根 NgModule 需要设置 bootstrap: [AppComponent] }) class AppModule { } // 从 AppModule 启动应用 platformBrowserDynamic().bootstrapModule(AppModule);
Angular2 应用启动后会去解析当前 DOM 树找出名叫 app-root 的 HTML 标签,并以这个标签为 Angular2 应用的运行容器, 所以还需要改造 index.html 加入 app-root HTML 标签,代码如下:
app-root
index.html
<html> <head> <meta charset="UTF-8"> </head> <body> <app-root></app-root> <!--导入 Webpack 输出的 JavaScript 文件--> <script src="./dist/bundle.js"></script> </body> </html>
要让 Hello,Webpack 跑起来,需要安装以下模块:
# Angular2 框架基础核心模块 npm i -S @angular/core @angular/common # Angular2 框架浏览器环境运行库,类似于 react-dom npm i -S @angular/platform-browser # 要让 Angular2 正常跑起来所依赖的运行环境和 polyfill npm i -S core-js rxjs zone.js # 在浏览器里运行过程中动态的编译 HTML 模版 npm i -S @angular/platform-browser-dynamic @angular/compiler
以上是一个最小的能正常运行的 Angular2 应用,可见 Angular2 依赖很多,使用繁杂。
由于 Angular2 应用采用 TypeScript 开发,构建和前面讲过的(3.2 使用 TypeScript 语言 类似,不同在于 tsconfig.json 配置。 由于 Angular2 项目中采用了注解的语法,而且 @angular/platform-browser 源码中有许多 DOM 操作,配置需要修改为如下:
tsconfig.json
@angular/platform-browser
{ "compilerOptions": { "target": "es5", "module": "commonjs", "sourceMap": true, // 开启对 注解 的支持 "experimentalDecorators": true, // Angular2 依赖新的 JavaScript API 和 DOM 操作 "lib": [ "es2015", "dom" ] }, "exclude": [ "node_modules/*" ] }
其它配置保持和在(3.2 使用 TypeScript 语言的一样,安装好前面提到的 Angular2 框架依赖的模块后,重新执行构建打开网页,你会看到由 Angular2 渲染出来的 Hello,Webpack。
本实例提供项目完整代码
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8