摘要:還有,運(yùn)行項(xiàng)目時(shí),會(huì)使用或命令。指定組件歸屬的。這個(gè)是創(chuàng)建服務(wù)類的命令,支持的選項(xiàng)配置參考上面幾種命令。當(dāng)為時(shí),會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的路由模塊,默認(rèn)。目前對(duì)該命令的使用,只接觸到默認(rèn)配置,還不清楚一些選項(xiàng)配置的適用場(chǎng)景,后續(xù)有了解再補(bǔ)充。
本系列文章內(nèi)容梳理自以下來源:
官方的教程,其實(shí)已經(jīng)很詳細(xì)且易懂,這里再次梳理的目的在于復(fù)習(xí)和鞏固相關(guān)知識(shí)點(diǎn),剛開始接觸學(xué)習(xí) Angular 的還是建議以官網(wǎng)為主。
因?yàn)檫@系列文章,更多的會(huì)帶有我個(gè)人的一些理解和解讀,由于目前我也才剛開始接觸 Angular 不久,在該階段的一些理解并不一定是正確的,擔(dān)心會(huì)有所誤導(dǎo),所以還是以官網(wǎng)為主。
Angular 的項(xiàng)目其實(shí)相比老舊的前端項(xiàng)目模式或者是 Vue 的項(xiàng)目來說,都會(huì)比較重一點(diǎn),因?yàn)樗耍?模塊 @NgModel, 組件 @Component, 指令 @Directive 等各種各樣的東西,而每一種類型的 ts 文件,都需要有一些元數(shù)據(jù)的配置項(xiàng)。
這就導(dǎo)致了,如果是手工創(chuàng)建 ts 文件,需要自己編寫很多重復(fù)代碼,因此,可以借助 Angular-CLI 命令來創(chuàng)建這些文件,自動(dòng)生成所需的這些重復(fù)代碼。
而且,不僅在創(chuàng)建文件方面,在對(duì)項(xiàng)目的編譯、打包等各種操作中也需要借助 Angular-CLI。
所以,日常開發(fā)中,不管是借助 WebStrom 的圖形操作,還是直接自己使用命令方式,都需要跟 Angular-CLI 打交道,了解一些基本的配置和命令也是有好處的。
安裝的方式就不講了,要么直接使用 WebStrom 內(nèi)置的,要么借助 npm 下載一個(gè),要么通過 WebStrom 創(chuàng)建的 Angular 項(xiàng)目的 package.json 中就會(huì)自動(dòng)配置一個(gè) cli 依賴庫(kù)。
命令格式:ng commandNameOrAlias arg [optionalArg] [options]
也就是 ng 之后帶相應(yīng)命令或命令的別名,接著帶命令所需的參數(shù),如果有多個(gè)參數(shù)就緊接著,最后是一些選項(xiàng)配置,選項(xiàng)的格式都加 --
前綴,如 --spec=false
示例:ng g component --flat --spec=false
g 是 generate 命令的別名,component 是 g 命令的參數(shù),表示要?jiǎng)?chuàng)建組件,--flat 和 --spec 是選項(xiàng)配置,具體意思后面說。
Angular-CLI 大體上兩種類型的命令,一是創(chuàng)建或修改文件,二是類似運(yùn)行某個(gè)腳本來編譯、構(gòu)建項(xiàng)目。
比如創(chuàng)建項(xiàng)目生成初始骨架的命令、創(chuàng)建組件、指令、服務(wù)這類文件命令;
或者是執(zhí)行 build 編譯命令,或者是 serve 構(gòu)建命令等等。
以下是概覽,粗體字是我較為常接觸的:
命令 | 別名 | 說明 |
---|---|---|
generate | g | 創(chuàng)建相應(yīng)的文件,如組件、指令、管道、服務(wù)、模塊、路由、實(shí)體類等 |
build | b | 編譯項(xiàng)目,并輸出最后的文件到指定目錄,可以配置很多參數(shù)來達(dá)到各種效果,比如實(shí)時(shí)更新等目的 |
serve | s | 編譯項(xiàng)目,并讓它運(yùn)行起來,且默認(rèn)支持實(shí)時(shí)更新修改 |
new | n | 創(chuàng)建新項(xiàng)目,生成項(xiàng)目初始骨架,默認(rèn)包括根模塊、根視圖,還有基本的各種配置文件 |
e2e | e | 編譯并運(yùn)行項(xiàng)目,跑起來后,運(yùn)行 e2e 測(cè)試 |
lint | l | 對(duì)項(xiàng)目進(jìn)行 lint 檢查 |
test | t | 運(yùn)行單元測(cè)試 |
help | 查看命令的幫助信息 | |
... | ... | 還有一些沒用過,也不大清楚的命令,后續(xù)再補(bǔ)充 |
其實(shí),這么多命令中,我最常使用的,就只有 ng g
命令,也就是 generate 命令,用來生成各種類型的文件代碼,比如生成組件、生成服務(wù)等。
因?yàn)轫?xiàng)目開發(fā)過程中,就是在編寫組件,編寫服務(wù),而這些文件又都需要一些元數(shù)據(jù)配置,自己創(chuàng)建 ts 文件再去寫那么代碼有些繁瑣,借助命令比較方便。
還有,運(yùn)行項(xiàng)目時(shí),會(huì)使用 build 或 serve 命令。
所以,下面就只介紹這三個(gè)命令,其他命令,等到后續(xù)有接觸,深入了解后再補(bǔ)充。
ng g component xxx
是用來創(chuàng)建組件的,直接使用該命令,會(huì)默認(rèn)在當(dāng)前目錄下創(chuàng)建一個(gè) xxx 文件夾,并在內(nèi)部創(chuàng)建以下幾個(gè)文件:
每個(gè)文件內(nèi)都會(huì)自動(dòng)生成一些所需的代碼,另外,還會(huì)在當(dāng)前目錄所屬的模塊文件中,將該 xxxComponent 組件聲明在相應(yīng)的 declarations 列表中。
以上是命令的默認(rèn)行為,如果要改變這個(gè)默認(rèn)行為,有兩種方式,一是使用命令時(shí)攜帶一些選項(xiàng)配置,二是直接修改 angular.json 配置文件來替換掉默認(rèn)行為。
先介紹第一種方式,使用命令時(shí),加上一些選項(xiàng)配置:
選項(xiàng)配置 | 說明 |
---|---|
--export=true|false | 生成的組件在對(duì)應(yīng)的模塊文件中,是否自動(dòng)在 exports 列表中聲明該組件好對(duì)外公開,默認(rèn)值 false。 |
--flat=true|false | 當(dāng)為 true 時(shí),生成的組件不自動(dòng)創(chuàng)建 xxx 的文件夾,直接在當(dāng)前目錄下創(chuàng)建那幾份文件,默認(rèn)值 false。 |
--spec=true|false | 當(dāng)為 false 時(shí),不自動(dòng)創(chuàng)建 .spec.ts 文件,默認(rèn)值為 true。 |
--skipTests=true|false | 當(dāng)為 true 時(shí),不自動(dòng)創(chuàng)建 .spec.ts 文件,默認(rèn)值 false。該選項(xiàng)配置是新版才有,舊版就使用 --spec 配置。 |
--styleext=css|scss|sass|less|styl | 設(shè)置組件是否使用預(yù)處理器,舊版接口 |
--style=css|scss|sass|less|styl | 設(shè)置組件是否使用預(yù)處理器,新版接口 |
--entryComponent=true|false | 當(dāng)為 true 時(shí),生成的組件自動(dòng)在其對(duì)應(yīng)的模塊內(nèi)的 entryComponents 列表中聲明,默認(rèn) false。 |
--inlineStyle=true|false | 當(dāng)為 true 時(shí),組件使用內(nèi)聯(lián)的 style,不創(chuàng)建對(duì)應(yīng)的 css 文件,默認(rèn) false。 |
--inlineTemplate=true|false | 當(dāng)為 true 時(shí),組件使用內(nèi)聯(lián)的模板,不創(chuàng)建對(duì)應(yīng)的 html 文件,默認(rèn) false。 |
--lintFix=true|false | 當(dāng)為 true 時(shí),組件創(chuàng)建后,自己進(jìn)行 lintFix 操作,默認(rèn) false。 |
--module=module | 指定組件歸屬的模塊,默認(rèn)當(dāng)前目錄所屬的模塊。 |
--prefix=prefix | 指定組件 selector 取值的前綴,默認(rèn) app。 |
--project=project | 指定組件歸屬的 project。 |
--selector=selector | 指定組件的 selector 名。 |
--skipImport=true|false | 當(dāng)為 true,生成的組件不在對(duì)應(yīng)的模塊中聲明任何信息,默認(rèn) false。 |
--changeDetection=Default|OnPush | 設(shè)置改變組件的檢測(cè)策略,默認(rèn) Default。 |
以上,是使用 ng g component 命令時(shí),可以攜帶的一些選項(xiàng)配置,來修改默認(rèn)的行為,其中,如果選項(xiàng)配置為 true,那么 value 值可以省略,如 --flat=true
可以簡(jiǎn)寫成 --flat
。
比如:ng g component xxx --flat --inlineStyle --inlineTemplate --spec=false --export
另外,其實(shí)這些選項(xiàng)配置中,除了前面幾項(xiàng)可能比較常用外,其他的我基本都還沒怎么接觸過。
下面,講講第二種方式,修改 angular.json 配置文件來修改默認(rèn)行為:
也就是在 projects 里選擇當(dāng)前項(xiàng)目,然后再其 schematics 下進(jìn)行配置,至于 @schematics/angular:component
這串怎么來的,可以去開頭第一行所指的那份 schema.json 文件中查找。
其實(shí),這份 schema.json 文件,就是 Angular-CLI 的默認(rèn)配置,當(dāng)忘記都有哪些命令或參數(shù),除了可以借助 help 命令或到官網(wǎng)查閱外,也可以到這份文件中查閱。
除了組件外,也還有指令、模塊等命令的默認(rèn)配置,可以看下其中一項(xiàng)默認(rèn)配置:
{
"@schematics/angular:component": {
"type": "object",
"properties": {
"changeDetection": {
"description": "Specifies the change detection strategy.",
"enum": [
"Default",
"OnPush"
],
"type": "string",
"default": "Default",
"alias": "c"
},
"entryComponent": {
"type": "boolean",
"default": false,
"description": "Specifies if the component is an entry component of declaring module."
},
"export": {
"type": "boolean",
"default": false,
"description": "Specifies if declaring module exports the component."
},
"flat": {
"type": "boolean",
"description": "Flag to indicate if a directory is created.",
"default": false
},
"inlineStyle": {
"description": "Specifies if the style will be in the ts file.",
"type": "boolean",
"default": false,
"alias": "s"
},
"inlineTemplate": {
"description": "Specifies if the template will be in the ts file.",
"type": "boolean",
"default": false,
"alias": "t"
},
"module": {
"type": "string",
"description": "Allows specification of the declaring module.",
"alias": "m"
},
"prefix": {
"type": "string",
"format": "html-selector",
"description": "The prefix to apply to generated selectors.",
"alias": "p"
},
"selector": {
"type": "string",
"format": "html-selector",
"description": "The selector to use for the component."
},
"skipImport": {
"type": "boolean",
"description": "Flag to skip the module import.",
"default": false
},
"spec": {
"type": "boolean",
"description": "Specifies if a spec file is generated.",
"default": true
},
"styleext": {
"description": "The file extension to be used for style files.",
"type": "string",
"default": "css"
},
"viewEncapsulation": {
"description": "Specifies the view encapsulation strategy.",
"enum": [
"Emulated",
"Native",
"None",
"ShadowDom"
],
"type": "string",
"alias": "v"
}
}
}
}
可以看到,在官網(wǎng)中看到的關(guān)于 component 的各個(gè)選項(xiàng)配置的信息,其實(shí)在這份文件中也全列出來了,每一項(xiàng)配置的值類型,描述,默認(rèn)值都清清楚楚在文件中了。
這個(gè)是創(chuàng)建指令的命令,組件其實(shí)是指令的一種,所以,上面介紹的關(guān)于組件命令中的各種選項(xiàng)配置,在指令這里也基本都可以使用,這里不列舉了,清楚相關(guān)默認(rèn)文件來源后,不懂的,去翻閱下就可以了。
因?yàn)橹噶畈]有對(duì)應(yīng)的 Template 模板和 CSS 樣式文件,所以,默認(rèn)生成的文件中,只有 xxx.directive.ts 和 xxx.spec.ts 兩份文件。
這個(gè)是創(chuàng)建管道的命令,它支持的選項(xiàng)配置跟指令的命令基本一樣。
所以,同樣的,它生成的也只有兩份文件,ts 文件和測(cè)試文件。
這個(gè)是創(chuàng)建服務(wù)類的命令,支持的選項(xiàng)配置參考上面幾種命令。
默認(rèn)生成的有兩份文件,ts 和 測(cè)試文件。
創(chuàng)建實(shí)體類,接口,或枚舉的命令,因?yàn)檫@些類型的文件,默認(rèn)需要的代碼模板并不多,即使不用命令創(chuàng)建,手動(dòng)創(chuàng)建也行。
創(chuàng)建一個(gè)模塊,這個(gè)命令有幾個(gè)比較常用的選項(xiàng)配置:
當(dāng)為 true 時(shí),在當(dāng)前目錄下創(chuàng)建指定的 xxx.module.ts 和 xxx-routing.module.ts 文件,默認(rèn) false,會(huì)自動(dòng)創(chuàng)建 xxx 的文件夾。
當(dāng)為 true 時(shí),會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的 routing 路由模塊,默認(rèn) false。
創(chuàng)建路由模塊時(shí),配置項(xiàng)是 Child 還是 Root,默認(rèn) Child。
以上,是 ng generate
命令的常見用法,它還可以用來創(chuàng)建其他東西,但我常用的就這幾種,而且,很多時(shí)候,都不是使用默認(rèn)的行為,因此常常需要配置選項(xiàng)配置一起使用。
另外,為什么非得用 Angular-CLI 命令來創(chuàng)建文件,用 WebStrom 自己創(chuàng)建個(gè) ts 文件不行嗎?
借助 CLI 工具其實(shí)就是為了高效開發(fā),減少繁瑣的處理,比如,創(chuàng)建一個(gè) xxx.component.ts 文件:
import { Component, OnInit } from "@angular/core";
@Component({
selector: "app-cc",
template: `
cc works!
`,
styles: []
})
export class CcComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
上面就是執(zhí)行了 ng g component cc --inlineStyle --inlineTemplate
命令后創(chuàng)建的 cc.component.ts 文件的內(nèi)容,如果不借助 CLI 工具,那么這些代碼就需要自己手動(dòng)去輸入,即使復(fù)制黏貼也比較繁瑣。
使用該命令,可以編譯我們的項(xiàng)目,并在本地某個(gè)端口上運(yùn)行該項(xiàng)目,默認(rèn)還可以做到實(shí)時(shí)更新修改,不用重新編譯,是本地調(diào)試項(xiàng)目常用的命令。
目前對(duì)該命令的使用,只接觸到默認(rèn)配置,還不清楚一些選項(xiàng)配置的適用場(chǎng)景,后續(xù)有了解再補(bǔ)充。
該命令用來將 Angular 項(xiàng)目編譯、打包輸出到指定目錄下,最終輸出的文件就是些 HTML,CSS,JavaScript 這些瀏覽器能夠識(shí)別、運(yùn)行的文件。
有時(shí)候,前端和后端的工作都由同一個(gè)人開發(fā),此時(shí)在本地調(diào)試時(shí),前端就沒必要造假數(shù)據(jù),可以直接將 Angular 項(xiàng)目編譯輸出到后端項(xiàng)目的容器中,直接在本地調(diào)試后端接口。
那么,這種時(shí)候就不能用 ng serve
命令了,只能使用 ng build
命令,但該命令,默認(rèn)只是編譯項(xiàng)目,那么豈不是每次代碼發(fā)生修改,都得重新跑一次 ng build
命令?當(dāng)項(xiàng)目有些復(fù)雜時(shí),豈不是需要浪費(fèi)很多時(shí)間?
這種時(shí)候,就該來了解了解這個(gè)命令的一些選項(xiàng)配置了,經(jīng)過配置,它也可以達(dá)到類似 ng serve
命令一樣自動(dòng)檢測(cè)文件變更并增量更新部署,提高開發(fā)效率。
選項(xiàng)配置 | 說明 |
---|---|
--watch=true|false | 當(dāng)為 true 時(shí),會(huì)自動(dòng)檢測(cè)文件變更,并同步更新,默認(rèn) false |
還有其他配置項(xiàng),沒使用過,就用過這個(gè),因?yàn)槲覀兪侵苯忧岸撕蠖艘黄鹱?,后端用?spring boot,所以 Angular 項(xiàng)目使用 ng build
命令編譯輸出到后端項(xiàng)目的容器中,后端跑起來,就可以直接在本地調(diào)試了。
大家好,我是 dasu,歡迎關(guān)注我的公眾號(hào)(dasuAndroidTv),公眾號(hào)中有我的聯(lián)系方式,歡迎有事沒事來嘮嗑一下,如果你覺得本篇內(nèi)容有幫助到你,可以轉(zhuǎn)載但記得要關(guān)注,要標(biāo)明原文哦,謝謝支持~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/1128.html
摘要:通過這四條命令,可以快速創(chuàng)建一個(gè)項(xiàng)目。本章主要關(guān)注,這條命令。在下載好之后,通過在命令行輸入可以獲得的指令詳細(xì)介紹。如果新建一個(gè)項(xiàng)目?jī)H僅用上述條,顯然是不滿足開發(fā)需求的,在介紹條屬性。本章對(duì)的介紹到此為止,下章具體介紹路由。 angular-cli 腳手架大大方便了,項(xiàng)目的開發(fā),使用也非常簡(jiǎn)單。https://cli.angular.io/ 提供了搭建一個(gè)angular項(xiàng)目的簡(jiǎn)單介紹。...
摘要:安裝好后,在命令提示符下輸入回車后就會(huì)自動(dòng)安裝好的最新版本,如果你的網(wǎng)絡(luò)環(huán)境和我的一樣,處處受限的話,我建議你先安裝后,利用安裝。好了,基本的前端和后端程序已經(jīng)構(gòu)建完成了,下面需要對(duì)前端和后端環(huán)境進(jìn)行一下配置。 學(xué)習(xí)了一段時(shí)間的angular4知識(shí),結(jié)合以前自學(xué)的nodejs-express后端框架知識(shí),做了一個(gè)利用angular4作為前端,node-express作為后端服務(wù)器的網(wǎng)站...
摘要:如何在中使用動(dòng)畫前端掘金本文講一下中動(dòng)畫應(yīng)用的部分。與的快速入門指南推薦前端掘金是非常棒的框架,能夠創(chuàng)建功能強(qiáng)大,動(dòng)態(tài)功能的。自發(fā)布以來,已經(jīng)廣泛應(yīng)用于開發(fā)中。 如何在 Angular 中使用動(dòng)畫 - 前端 - 掘金本文講一下Angular中動(dòng)畫應(yīng)用的部分。 首先,Angular本生不提供動(dòng)畫機(jī)制,需要在項(xiàng)目中加入Angular插件模塊ngAnimate才能完成Angular的動(dòng)畫機(jī)制...
摘要:由于之前安裝的是的版本,需要卸載了,安裝最新的版本。清除緩存,確保卸載干凈具體參考安裝最新版本安裝成功后提示意思是版的需要版本最低,我之前的是的版本。先安裝,去下載安裝。在命令行輸入檢查是否安裝成功。 最近聽了大漠老師分享的angular6的講解(附個(gè)鏈接大漠老師課程:http://www.ngfans.net/topic/2...),像是沙漠中發(fā)現(xiàn)了綠洲一樣,決定好好學(xué)習(xí)一番,于是準(zhǔn)...
閱讀 858·2021-11-24 10:44
閱讀 2794·2021-11-11 16:54
閱讀 3203·2021-10-08 10:21
閱讀 2107·2021-08-25 09:39
閱讀 2915·2019-08-30 15:56
閱讀 3467·2019-08-30 13:46
閱讀 3504·2019-08-23 18:09
閱讀 2096·2019-08-23 17:05