第一篇文章是: "使用angular cli生成angular5專案" : http://www.cnblogs.com/cgzl/p/8594571.html
這篇文章主要是講生成 Components, Directive, Service, class, interface, enum等等.
ng generate <藍本名> 命令.
該命令的格式是 ng generate <藍本名> <引數>.
也可以使用--dry-run引數來列出要生成的檔案, 而不是真的生成.
例如:
ng generate component person, 就會生成一個person.component.ts.
ng generate service sales-data 就會生成一個sales-data.service.ts.
ng generate class user-model 就會生成一個user-model.ts 裡面是UserModel類.
Components.
ng generate xxx xxx的命令還是有點長, 這裡angular cli內建了命令的別名, 例如:
ng generate component person 這個命令,
裡面的generate 可以使用字母 g 代替,
裡面的component 可以使用字母 c 代替.
所以這兩個命令是相等的:
ng generate component person
ng g c person
可以到這裡檢視component相關的命令和別名:
https://github.com/angular/angular-cli/wiki/generate-component
可能常用的命令引數有:
- --flat 表示是否不需要建立資料夾
- --inline-template (-it) 模板是否應該放在ts檔案裡
- --inline-style (-is) 樣式是否應該放在ts檔案裡.
- --spec 是否需要建立spec檔案(測試檔案)
- --view-encapsulation (-ve) View Encapsulation策略 (簡單理解為樣式檔案的作用範圍策略).
- --change-detection (-cd) 變化檢查策略.
- --prefix 設定這個component的字首
- --dry-run (-d), 列印出生成的檔案列表, 而不直接生成.
看下面兩對作用相同的命令, 還是使用別名方便:
ng generate component person ng generate component person --inline-template --inline-style ng g c person ng g c person -it -is
下面來試試這些命令:
建立專案: ng new my-app 等npm install結束後再進行操作.
建立好專案後, 進入該目錄, 執行命令:
ng g c person -d
該命令將會生成上述4個檔案, 並更新app.module.ts.
下面把-d引數去掉, 生成檔案:
可以看到檔案生成在專案裡了. 並且更新了app.module.ts, 在裡面做了component的宣告.
再試試生成另外一個component, 使用一些引數 View Encapsulation 和 Change Detection Strategy:
ng g c student -ve Emulated -cd OnPush
可以看到引數起作用了.
通過原始碼管理頁, 可以看到這兩個命令對app.module進行了哪些更新:
分別對生成的兩個component進行了宣告.
然後我commit一下..
Directive.
ng g d filter-box -d
這是檔案報告, 下面真正的生成:
ng g d filter-box
通過vscode的原始碼管理, 可以看到變化:
directive生成了兩個檔案和component一樣, 也在app.module進行了宣告.
看一下目錄結構:
生成的directive的結構是沒有目錄, 也就是flat的.
如果不想生成flat樣式的, 想讓其擁有自己的資料夾, 那麼就是用--flat引數:
ng g d filter-box2 --flat false
這樣就有自己的資料夾了.
commit一下.
Service.
ng g s order-data -d
可以看到 這個命令會生成flat結構的service.
然後把-d去掉, 真實生成檔案:
ng g s order-data
可以從原始碼管理看到, 只生成了兩個檔案, 並沒有在app.module裡面註冊:
當然可以在這裡寫程式碼把剛才生成的service註冊進去.
但是正確的做法是使用 -m 引數來指定需要註冊的module:
ng g s order-data2 -m app
這次生成的order-data2 service就會在app.module.ts裡面進行註冊了.
然後再commit一下.
Model/Interface/Enum/Pipe.
model:
ng g cl models/user
這個命令會建立models資料夾, 然後在裡面建立user這個model:
interface:
ng g i models/animal
enum:
ng g e models/gender
commit一下.
Pipe.
ng g p camel-case
除了生成兩個檔案之外, 這個命令預設也會更新app.module.
Module.
ng g m login
可以看到module預設是自帶資料夾的.
然後我試試新增一個component, 目的是要在login module進行宣告:
可以看到我要建立的welcome component預設是在app.module裡面進行宣告的, 這時候如果想要在login module進行宣告, 就要使用 -m 引數:
去掉-d執行生成命令後:
可以看到welcome component這次實在login module進行的宣告.
今天先寫到這, 更多的引數還是要檢視官方文件: https://github.com/angular/angular-cli