Angular-cli是angular团队针对Angular2提供的脚手架,用于环境搭建,运行等;具体参考Angular-cli GitHub
Angular的启动过程,需要先回答三个问题:
- 启动时加载了哪个页面?
- 启动时加载了哪些脚本?
- 这些脚本到底做了什么事?
OK,让我们来打开.Angular-cli.json
1 { 2 "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 "project": { 4 "name": "angular-reddit-test" 5 }, 6 "apps": [ 7 { 8 "root": "src", 9 "outDir": "dist", 10 "assets": [ 11 "assets", 12 "favicon.ico" 13 ], 14 "index": "index.html", 15 "main": "main.ts", 16 "polyfills": "polyfills.ts", 17 "test": "test.ts", 18 "tsconfig": "tsconfig.app.json", 19 "testTsconfig": "tsconfig.spec.json", 20 "prefix": "app", 21 "styles": [ 22 "styles.css" 23 ], 24 "scripts": [], 25 "environmentSource": "environments/environment.ts", 26 "environments": { 27 "dev": "environments/environment.ts", 28 "prod": "environments/environment.prod.ts" 29 } 30 } 31 ], 32 "e2e": { 33 "protractor": { 34 "config": "./protractor.conf.js" 35 } 36 }, 37 "lint": [ 38 { 39 "project": "src/tsconfig.app.json", 40 "exclude": "**/node_modules/**" 41 }, 42 { 43 "project": "src/tsconfig.spec.json", 44 "exclude": "**/node_modules/**" 45 }, 46 { 47 "project": "e2e/tsconfig.e2e.json", 48 "exclude": "**/node_modules/**" 49 } 50 ], 51 "test": { 52 "karma": { 53 "config": "./karma.conf.js" 54 } 55 }, 56 "defaults": { 57 "styleExt": "css", 58 "component": {} 59 } 60 }
apps的数组,数组中的对象有一个index属性,和一个main属性。
默认情况下:
index属性指向src(root属性)目录中的index.html,他是angular应用启动时加载的页面。
main属性指向了src下面的main.ts,他是angular应用启动时加载的脚本,main.ts负责引导angular应用启动。
我们来看一下main.ts,这里是一个angular应用的起点。
import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; if (environment.production) { enableProdMode(); } platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.log(err));
- import { enableProdMode } from '@angular/core'; 导入angular核心模块的enableProdMode方法,此方法用来关闭angular应用的开发者模式。
- import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 从浏览器模块中导入一个platformBrowserDynamic方法,这个方法会告诉angular使用哪个模块来启动应用。
- AppModule,也就是命令行工具生成的那个整个应用的主模块
- environment:环境配置,angular对多环境的一个支持。
- if (environment.production) {
enableProdMode();
} 如果当前是生产环境,就调用enableProdMode方法关闭开发者模式。 - platformBrowserDynamic().bootstrapModule(AppModule); 最后调用bootstrapModule()这个方法,传入AppModule作为启动模块来启动应用,是整个angular应用的起点,程序是通过这里来开始运行的。
angular在知道要用AppModule作为主模块以后,他会加载AppModule模块,然后angular会分析AppModule模块需要依赖哪些模块,并加载哪些模块。
在app.module.ts文件中我们会看中,AppModule模块会依赖BrowserModule、FormsModule和HttpModule模块,加载这些模块之后,会再分析这些模块需要依赖哪些模块,然后再去加载哪些模块,以此类推,直到加载完所有所需的模块。
当加载完以后,angular会在index.html文件中寻找启动模块指定的主组件对应的css选择器,也就是说启动后angular会在index.html文件中找<app-root>,会用主组件也就是AppComponent中指定的模板内容(app.component.html),用这里面的内容替换到<app-root>这个标签,在这个整个过程完成之前,页面将会展示<app-root>这个标签中的内容,也即时loading…这样的一个字符串。
启动程序:
ng serve
开始编译应用,如果出现webpack:Compiled successful就代表编译成功了,我们就可以在浏览器中输入http://localhost:4200
//设置不同端口 ng server --port **
--------------------------------------------------------------------
1.ng new
命令,快速创建一个新的项目
$ ng new angular2_hello_world
2.运行应用
ng serve
3. 制作Component
$ ng generate component **
-----------------------refrence-----------------------------------
http://www.ituring.com.cn/book/tupubarticle/13538
cli
什么是Angular-cli
简言之:就是NG团队自行维护的一个`脚手架`[内置单元测试及webpack2打包工具等] -- 前身是ember-cli
;
官网:https://cli.angular.io/
Github: https://github.com/angular/angular-cli
npm: https://www.npmjs.com/package/angular-cli
范围 | 命令 | 作用 |
---|---|---|
new | ng new new_project | 初始化新项目 |
Component | ng g component my-new-component | 新建一个组件 |
Directive | ng g directive my-new-directive | 新建一个指令 |
Pipe | ng g pipe my-new-pipe | 新建一个管道 |
Service | ng g service my-new-service | 新建一个服务 |
Class | ng g class my-new-class | 新建一个类 |
Interface | ng g interface my-new-interface | 新建一个接口 |
Enum | ng g enum my-new-enum | 新建一个枚举 |
Module | ng g module my-module | 新建一个模块 |