angular8教程(1)-了解項(xiàng)目結(jié)構(gòu)

在開始閱讀我這個(gè)系列教程之前茅特,強(qiáng)烈建議想學(xué)習(xí)angular框架的先通讀一遍中文版官方文檔甲馋,并且搭建好開發(fā)環(huán)境凳寺。這個(gè)系列教程的示例代碼會(huì)基于我的另一個(gè)系列教程Springboot入門教程中的后臺(tái)代碼摹菠,所以有條件的話最好先把后臺(tái)的代碼跑起來景图。
預(yù)備環(huán)境:Node.js 版本 10.9.0 或更高版本,并且安裝了安裝 Angular CLI搪缨。

首先我們利用angular cli創(chuàng)建一個(gè)新項(xiàng)目食拜,在命令行運(yùn)行ng new angular-schoolmanager-cli
創(chuàng)建的時(shí)候有兩個(gè)需要選擇:1. 是否導(dǎo)入angular的route模塊,選是副编,2. 選擇樣式的文件類型负甸,推薦選擇scss,當(dāng)然也可以用最常見的css痹届。


創(chuàng)建新項(xiàng)目

angular cli是官方的腳手架工具呻待,可以幫助我們自動(dòng)構(gòu)建一個(gè)基于angular框架的前端項(xiàng)目框架,自動(dòng)引入了angular相關(guān)的各個(gè)庫(kù)队腐。所以等命令行下載完所有依賴庫(kù)蚕捉,我們就可以直接用npm start來運(yùn)行這個(gè)項(xiàng)目了。

下面我依然推薦用IntelliJ IDEA來作為開發(fā)工具柴淘,2019以上的版本對(duì)angular的支持很好迫淹,可以用快捷的菜單自動(dòng)創(chuàng)建angular的組件。并且用idea打開我們創(chuàng)建的angular項(xiàng)目之后为严,可以看到開發(fā)工具已經(jīng)為我們配置好了啟動(dòng)項(xiàng)敛熬。


啟動(dòng)配置

然后我們來簡(jiǎn)單了解一下這個(gè)項(xiàng)目結(jié)構(gòu),這樣我們就知道應(yīng)該從哪開始著手編寫代碼了梗脾。


angular cli項(xiàng)目結(jié)構(gòu)

e2e目錄荸型,這個(gè)是作為e2e測(cè)試時(shí)使用的,我們暫時(shí)不用看炸茧。
node_modules目錄瑞妇,這個(gè)目錄下放的是下載的依賴庫(kù),如果熟悉nodejs的就會(huì)知道梭冠,nodejs中的npm工具可以根據(jù)配置的依賴庫(kù)名稱和版本找尋對(duì)應(yīng)的庫(kù)并下載到這個(gè)目錄下面辕狰,這個(gè)就類似于java中的maven或gradle的自動(dòng)導(dǎo)入依賴包的功能。

src目錄控漠,這個(gè)自然就是項(xiàng)目代碼的主目錄了蔓倍,這個(gè)后面再說。
其余的下面的那些文件其實(shí)我們都不用過多關(guān)注盐捷,那些都是angular cli官方為我們配置好的偶翅,不需要修改。唯一需要注意的一個(gè)是package.json這個(gè)文件碉渡,我們可以打開看一下


package.json

我們可以看到聚谁,這個(gè)文件里面包含了項(xiàng)目名稱,版本滞诺。scripts是npm命令對(duì)應(yīng)的ng腳本命令形导,例如
"start": "ng serve"表示npm start命令环疼,對(duì)應(yīng)的是ng server就是啟動(dòng)項(xiàng)目服務(wù)器,所以我上面說的是用npm start來啟動(dòng)項(xiàng)目朵耕,而官方文檔上是用ng serve炫隶,用的就是同一個(gè)命令。dependencies就是配置的依賴庫(kù)的名稱及版本號(hào)阎曹,在你運(yùn)行npm install命令的時(shí)候伪阶,會(huì)根據(jù)這里的配置自動(dòng)下載對(duì)應(yīng)的庫(kù),如果需要引入新的庫(kù)芬膝,可以在這里添加之后再運(yùn)行npm install望门。devDependencies是開發(fā)環(huán)境下需要依賴的庫(kù),一般不需要特別修改锰霜。

再回來看src目錄筹误,因?yàn)閍ngular官方推薦使用typescript作為標(biāo)準(zhǔn)開發(fā)語言,所以這個(gè)目錄下面的大部分都是typescript的文件癣缅。
app目錄厨剪,是整個(gè)項(xiàng)目的核心目錄,后面我們需要編碼都是在這里面添加修改友存。這里創(chuàng)建項(xiàng)目的時(shí)候默認(rèn)創(chuàng)建了根模塊app祷膳,我們下面再分析。
assets屡立,類似于android開發(fā)中的assets目錄直晨,用來存放一些原始的靜態(tài)文件,例如圖片文件等膨俐。
environments勇皇,用來配置不同環(huán)境的,默認(rèn)有開發(fā)和生產(chǎn)兩個(gè)環(huán)境的配置文件焚刺。
index.html敛摘,因?yàn)閍ngular cli構(gòu)建的是單頁應(yīng)用,所以只有一個(gè)html文件乳愉,所有頁面都會(huì)被渲染到這個(gè)html中兄淫。
main.ts,項(xiàng)目的主入口蔓姚,可以看到里面引入了app這個(gè)根模塊捕虽。
styles.scss,全局的樣式文件坡脐,在這里面寫的樣式會(huì)被應(yīng)用到整個(gè)項(xiàng)目中泄私。
test.ts,單元測(cè)試的入口。

再來看app目錄挖滤,angular項(xiàng)目是模塊化(module)的,叫作NgModule浅役,每個(gè)項(xiàng)目至少有一個(gè)根模塊斩松,就是這里的appmodule,我們先看app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

這里定義了一個(gè)AppModule觉既,其中由這幾個(gè)部分構(gòu)成
declarations惧盹,聲明了該模塊中的各個(gè)組件(component),現(xiàn)在只有一個(gè)AppComponent瞪讼,后續(xù)如果創(chuàng)建了新的組件钧椰,需要在這里聲明。
imports符欠,引入的模塊嫡霞,可以是在這個(gè)項(xiàng)目中創(chuàng)建的模塊,也可以是引入的第三方庫(kù)的模塊希柿,都在這邊引入诊沪。
providers,貢獻(xiàn)的全局服務(wù)曾撤,我的理解是不屬于組件的其他類別的公共服務(wù)端姚,如log的模板。
bootstrap挤悉,這里引用一下官方的說法“應(yīng)用的主視圖渐裸,稱為根組件。它是應(yīng)用中所有其它視圖的宿主装悲。只有根模塊才應(yīng)該設(shè)置這個(gè) bootstrap 屬性昏鹃。”

以app.component命名的都是AppComponent這個(gè)組件的相關(guān)文件衅斩,其中
app.component.html是模板視圖文件盆顾,里面都是用html標(biāo)簽構(gòu)成的視圖,當(dāng)然除了標(biāo)準(zhǔn)的html標(biāo)簽畏梆,angular還支持一些擴(kuò)展型的標(biāo)簽和語法您宪。
app.component.ts,里面是AppComponent組件的邏輯代碼奠涌,我們看一下這個(gè)代碼

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  title = 'angular-schoolmananger-cli';
}

@Component注釋代表的是這個(gè)類是一個(gè)組件宪巨,其中
selector表示這個(gè)組件應(yīng)用到html標(biāo)簽時(shí)的名稱,我們可以看到在index.html中就引入了這個(gè)標(biāo)簽<app-root></app-root>溜畅。
templateUrl就是這個(gè)組件引用的模板文件捏卓,即app.component.html。
styleUrls就是這個(gè)組件引用的樣式文件,即app.component.scss怠晴,在這個(gè)樣式文件中引用的樣式只會(huì)在該組件中生效遥金,這個(gè)文件目前是空的,如果不需要的話也可以刪除蒜田。
class AppComponent中定義了一個(gè)變量title稿械,說明所有關(guān)于這個(gè)組件的邏輯代碼都要在這里添加。app.component.html和app.component.ts的關(guān)系就有點(diǎn)類似于android開發(fā)中xml布局文件和activity的關(guān)系冲粤,因?yàn)閍ngular同樣也是遵循mvc架構(gòu)模式的框架美莫。
最后還有一個(gè)app-routing.module.ts,這個(gè)文件是在項(xiàng)目創(chuàng)建時(shí)第一個(gè)選擇路由為是的時(shí)候創(chuàng)建的梯捕,里面包含了項(xiàng)目的路由模塊厢呵,這個(gè)我們下一篇教程再詳細(xì)講述。

這篇教程中我簡(jiǎn)單介紹了一下整個(gè)angular項(xiàng)目的基本結(jié)構(gòu)傀顾,挑出了一些需要重點(diǎn)關(guān)注的部分做了分析襟铭,具體想要更清楚的知道項(xiàng)目的結(jié)構(gòu)內(nèi)容的還是請(qǐng)參考官方文檔項(xiàng)目文件結(jié)構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锣笨,隨后出現(xiàn)的幾起案子蝌矛,更是在濱河造成了極大的恐慌,老刑警劉巖错英,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件入撒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡椭岩,警方通過查閱死者的電腦和手機(jī)茅逮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來判哥,“玉大人献雅,你說我怎么就攤上這事∷疲” “怎么了挺身?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锌仅。 經(jīng)常有香客問我章钾,道長(zhǎng),這世上最難降的妖魔是什么热芹? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任贱傀,我火速辦了婚禮,結(jié)果婚禮上伊脓,老公的妹妹穿的比我還像新娘府寒。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布株搔。 她就那樣靜靜地躺著剖淀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纤房。 梳的紋絲不亂的頭發(fā)上祷蝌,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音帆卓,去河邊找鬼。 笑死米丘,一個(gè)胖子當(dāng)著我的面吹牛剑令,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拄查,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吁津,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了堕扶?” 一聲冷哼從身側(cè)響起碍脏,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稍算,沒想到半個(gè)月后典尾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糊探,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年钾埂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片科平。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褥紫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞪慧,到底是詐尸還是另有隱情髓考,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布弃酌,位于F島的核電站氨菇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矢腻。R本人自食惡果不足惜门驾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望多柑。 院中可真熱鬧奶是,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至及汉,卻和暖如春沮趣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坷随。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工房铭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人温眉。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓缸匪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親类溢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凌蔬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354