Angular 2 NgModule vs Angular 1 module
一直想写关于 Angular 1.x 与 Angular 2.x (Angular 4.x 已发布) 区别的文章,方便 Angular 1.x 的用户快速的过渡到 Angular 2.x。在浏览文章的时候,发现 Todd Motto 大神,已经写了相关的系列文章。英文好的同学,建议直接阅读 From angular.module to ngModule 原文哈,因为我并不打算完整地翻译。废话不多说,接下来我们开始进入正题。 目录
Angular 1.xAngular 1.x 在框架层面上大量依赖模块的支持,模块为我们提供了更好的方式去组织应用程序。 Root Module在 Angular 1.x 应用程序启动的时候,它会启动入口文件通过 angular.module(name,[requires],[configFn]); 参数说明:
当调用 angular.module('app',[]); // This is a setter 当调动 angular.module('app'); // This is a getter 接下来我们来创建根模块及App组件: const AppComponent = { template: ` <h1>Root Component</h1> ` }; angular .module('app',[]) // 创建根模块 .component('app',AppComponent); // 创建App组件 为了引导 Angular 1.x 应用程序的启动,我们必须在主入口文件(通常为index.html) 文件的 <body ng-app="app"> <app></app> </body> Child Module随着应用程序越来越庞大,考虑系统的可维护行和可扩展性,我们可以按功能对系统进行切割,划分出各个特性模块。即使用 const ContactsComponent = { template: ` <h3>Contacts go here.</h3> ` }; angular .module('contacts',[]) .component('contacts',ContactsComponent); 创建完子模块,我们需要在根模块中导入,才能保证系统能正常运行。具体如下: angular .module('app',['contacts']) // 第二个参数:声明依赖的模块名称 .component('app',AppComponent); // 定义AppComponent组件 在根模块导入 const AppComponent = { template: ` <h1>Root Component</h1> <contacts></contacts> ` }; angular .module('app',['contacts']) .component('app',AppComponent); Angular 2Angular 2 在 RC5 中引入了 Angular 2 应用程序,是由组件构成,即整个应用程序是一颗组件树。接下来我们先来创建根组件,随后在创建根模块。 Root Componentapp.component.ts import { Component } from '@angular/core'; // 导入核心模块中的Component装饰器 @Component({ // 定义组件相关的metadata信息 selector: 'app',// 用于定义组件在HTML代码中匹配的标签 template: ` // 为组件指定一个内联的模板 <h1>Root Component</h1> ` }) export class AppComponent {} 使用 app.module.ts import {NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {AppComponent} from './app.component'; @NgModule({ imports: [BrowserModule],// 导入依赖的模块 bootstrap: [AppComponent],// 设置启动入口根组件 declarations: [AppComponent] // 声明AppComponent组件 }) export class AppModule {} 接下来创建 main.ts // main.ts import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; import {AppModule} from './app.module'; platformBrowserDynamic().bootstrapModule(AppModule); 最后在主入口文件(通常为index.html) 文件,添加我们创建的 <body> <app> loading... </app> </body> Child Component定义 contacts 子组件: contact.component.ts import {Component} from '@angular/core'; @Component({ selector: 'contacts',template: ` <h3> Contacts go here. </h3> ` }) export class ContactsComponent { } 在 AppModule 组件导入 ContactsComponent 组件: app.module.ts import {NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {AppComponent} from './app.component'; import {ContactsComponent} from './contacts.component'; @NgModule({ imports: [BrowserModule],bootstrap: [AppComponent],declarations: [AppComponent,ContactsComponent] }) export class AppModule {} 接下来更新 AppComponent 组件,应用我们新创建的 ContactsComponent 组件: import {Component} from '@angular/core'; @Component({ selector: 'app',providers: [],template: ` <h1>Root Component</h1> <contacts></contacts> ` }) export class AppComponent {} 我有话说1.在 Angular 2 中除了根模块之外还包含其它什么模块及模块还有哪些相关知识及注意事项? 在 Angular 2 中除了根模块(RootModule)之外,常见的还有共享模块(ShareModule)、核心模块(CoreModule) 、特性模块(FeatureModule) 等。 详细内容请参考 - Angular 模块 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Angularjs> 1.3 $validator导致modelValue未定义
- Shell执行/调用Java/Jar程序例子的实例详解
- MacVim从?/ .vimrc获取所有设置,但不是颜色,我必须再次获取
- Binary Serialization and BinaryFormatter with WebServic
- 字符串测试/文件测试/整数比较/逻辑操作符
- Angular ng-class样式切换
- angular – fakeAsync不等待异步操作完成
- webserive实践
- 在Angular中使用javascript – ng-click vs watch
- angular – 为什么我的API管理不使用AD B2C自动化我的应用程