使用Angular CLI從藍(lán)本生成代碼詳解
第一篇文章是: "使用angular cli生成angular5項(xiàng)目" :http://www.dhdzp.com/article/136621.htm
這篇文章主要是講生成 Components, Directive, Service, class, interface, enum等等.
ng generate <藍(lán)本名> 命令.
該命令的格式是 ng generate <藍(lán)本名> <參數(shù)>.
也可以使用--dry-run參數(shù)來(lái)列出要生成的文件, 而不是真的生成.
例如:
ng generate component person, 就會(huì)生成一個(gè)person.component.ts.
ng generate service sales-data 就會(huì)生成一個(gè)sales-data.service.ts.
ng generate class user-model 就會(huì)生成一個(gè)user-model.ts 里面是UserModel類.
Components.
ng generate xxx xxx的命令還是有點(diǎn)長(zhǎng), 這里angular cli內(nèi)置了命令的別名, 例如:
ng generate component person 這個(gè)命令,
里面的generate 可以使用字母 g 代替,
里面的component 可以使用字母 c 代替.
所以這兩個(gè)命令是相等的:
ng generate component person ng g c person
可以到這里查看component相關(guān)的命令和別名:
https://github.com/angular/angular-cli/wiki/generate-component
可能常用的命令參數(shù)有:
- --flat 表示是否不需要?jiǎng)?chuàng)建文件夾
- --inline-template (-it) 模板是否應(yīng)該放在ts文件里
- --inline-style (-is) 樣式是否應(yīng)該放在ts文件里.
- --spec 是否需要?jiǎng)?chuàng)建spec文件(測(cè)試文件)
- --view-encapsulation (-ve) View Encapsulation策略 (簡(jiǎn)單理解為樣式文件的作用范圍策略).
- --change-detection (-cd) 變化檢查策略.
- --prefix 設(shè)定這個(gè)component的前綴
- --dry-run (-d), 打印出生成的文件列表, 而不直接生成.
看下面兩對(duì)作用相同的命令, 還是使用別名方便:
ng generate component person ng generate component person --inline-template --inline-style ng g c person ng g c person -it -is
下面來(lái)試試這些命令:
建立項(xiàng)目: ng new my-app 等npm install結(jié)束后再進(jìn)行操作.
建立好項(xiàng)目后, 進(jìn)入該目錄, 執(zhí)行命令:
ng g c person -d

該命令將會(huì)生成上述4個(gè)文件, 并更新app.module.ts.
下面把-d參數(shù)去掉, 生成文件:


可以看到文件生成在項(xiàng)目里了. 并且更新了app.module.ts, 在里面做了component的聲明.
再試試生成另外一個(gè)component, 使用一些參數(shù) View Encapsulation 和 Change Detection Strategy:
ng g c student -ve Emulated -cd OnPush

可以看到參數(shù)起作用了.
通過(guò)源碼管理頁(yè), 可以看到這兩個(gè)命令對(duì)app.module進(jìn)行了哪些更新:

分別對(duì)生成的兩個(gè)component進(jìn)行了聲明.
然后我commit一下..
Directive.
ng g d filter-box -d

這是文件報(bào)告, 下面真正的生成:
ng g d filter-box
通過(guò)vscode的源碼管理, 可以看到變化:

directive生成了兩個(gè)文件和component一樣, 也在app.module進(jìn)行了聲明.
看一下目錄結(jié)構(gòu):

生成的directive的結(jié)構(gòu)是沒(méi)有目錄, 也就是flat的.
如果不想生成flat樣式的, 想讓其擁有自己的文件夾, 那么就是用--flat參數(shù):
ng g d filter-box2 --flat false


這樣就有自己的文件夾了.
commit一下.
Service.
ng g s order-data -d

可以看到 這個(gè)命令會(huì)生成flat結(jié)構(gòu)的service.
然后把-d去掉, 真實(shí)生成文件:
ng g s order-data

可以從源碼管理看到, 只生成了兩個(gè)文件, 并沒(méi)有在app.module里面注冊(cè):

當(dāng)然可以在這里寫代碼把剛才生成的service注冊(cè)進(jìn)去.
但是正確的做法是使用 -m 參數(shù)來(lái)指定需要注冊(cè)的module:
ng g s order-data2 -m app


這次生成的order-data2 service就會(huì)在app.module.ts里面進(jìn)行注冊(cè)了.
然后再commit一下.
Model/Interface/Enum/Pipe.
model:
ng g cl models/user
這個(gè)命令會(huì)創(chuàng)建models文件夾, 然后在里面創(chuàng)建user這個(gè)model:


interface:
ng g i models/animal
enum:
ng g e models/gender

commit一下.
Pipe.
ng g p camel-case

除了生成兩個(gè)文件之外, 這個(gè)命令默認(rèn)也會(huì)更新app.module.

Module.
ng g m login


可以看到module默認(rèn)是自帶文件夾的.
然后我試試添加一個(gè)component, 目的是要在login module進(jìn)行聲明:

可以看到我要?jiǎng)?chuàng)建的welcome component默認(rèn)是在app.module里面進(jìn)行聲明的, 這時(shí)候如果想要在login module進(jìn)行聲明, 就要使用 -m 參數(shù):

去掉-d執(zhí)行生成命令后:

可以看到welcome component這次實(shí)在login module進(jìn)行的聲明.
今天先寫到這, 更多的參數(shù)還是要查看官方文檔:https://github.com/angular/angular-cli
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Angularjs 手寫日歷的實(shí)現(xiàn)代碼(不用插件)
本篇文章介紹了Angularjs 手寫日歷的實(shí)現(xiàn)代碼(不用插件),整理了詳細(xì)的代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
Angular?Component屬性綁定target和attr.target的區(qū)別分析
這篇文章主要介紹了Angular?Component屬性綁定target和attr.target的區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
詳解利用Angular實(shí)現(xiàn)多團(tuán)隊(duì)模塊化SPA開(kāi)發(fā)框架
本篇文章主要介紹了詳解利用Angular實(shí)現(xiàn)多團(tuán)隊(duì)模塊化SPA開(kāi)發(fā)框架,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
AngularJS基于ui-route實(shí)現(xiàn)深層路由的方法【路由嵌套】
這篇文章主要介紹了AngularJS基于ui-route實(shí)現(xiàn)深層路由的方法,涉及AngularJS路由嵌套操作相關(guān)實(shí)現(xiàn)步驟與技巧,需要的朋友可以參考下2016-12-12
AngularJS的依賴注入實(shí)例分析(使用module和injector)
這篇文章主要介紹了AngularJS的依賴注入,結(jié)合實(shí)例形式分析了依賴注入的原理及使用module和injector實(shí)現(xiàn)依賴注入的步驟與操作技巧,需要的朋友可以參考下2017-01-01
angular 未登錄狀態(tài)攔截路由跳轉(zhuǎn)的方法
今天小編就為大家分享一篇angular 未登錄狀態(tài)攔截路由跳轉(zhuǎn)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Angular跨字段驗(yàn)證器中如何直接調(diào)用其它獨(dú)立的驗(yàn)證器
我們?cè)陂_(kāi)發(fā)的時(shí)候都會(huì)用到表單,那么驗(yàn)證器就是必不可少的東西,這篇文章主要給大家介紹了關(guān)于在Angular跨字段驗(yàn)證器中如何直接調(diào)用其它獨(dú)立的驗(yàn)證器的相關(guān)資料,需要的朋友可以參考下2022-03-03

