Angular項(xiàng)目目錄結(jié)構(gòu)詳解

首先看一下整體的目錄結(jié)構(gòu):

angular整體的目錄結(jié)構(gòu)

可以看到,命令行工具自動(dòng)生成了很多文件和目錄驶俊,我們來說說這些目錄是干什么的

首層目錄:

  • 【node_modules 】 第三方依賴包存放目錄
  • 【e2e 】 端到端的測試目錄 用來做自動(dòng)測試的
  • 【src 】 應(yīng)用源代碼目錄
  • 【.angular-cli.json 】 Angular命令行工具的配置文件剥汤。后期可能會(huì)去修改它,引一些其他的第三方的包 比如jquery等
    -【 karma.conf.js】 karma是單元測試的執(zhí)行器允睹,karma.conf.js是karma的配置文件
  • 【package.json 】 這是一個(gè)標(biāo)準(zhǔn)的npm工具的配置文件运准,這個(gè)文件里面列出了該應(yīng)用程序所使用的第三方依賴包。實(shí)際上我們在新建項(xiàng)目的時(shí)候缭受,等了半天就是在下載第三方依賴包胁澳。下載完成后會(huì)放在node_modules這個(gè)目錄中,后期我們可能會(huì)修改這個(gè)文件米者。
  • 【protractor.conf.js】 也是一個(gè)做自動(dòng)化測試的配置文件
  • 【README.md】 說明文件
  • 【tslint.json】 是tslint的配置文件韭畸,用來定義TypeScript代碼質(zhì)量檢查的規(guī)則,不用管它

src目錄:

  • app目錄 包含應(yīng)用的組件和模塊蔓搞,我們要寫的代碼都在這個(gè)目錄
  • assets目錄 資源目錄胰丁,存儲(chǔ)靜態(tài)資源的 比如圖片
  • environments目錄 環(huán)境配置。Angular是支持多環(huán)境開發(fā)的喂分,我們可以在不同的環(huán)境下(開發(fā)環(huán)境锦庸,測試環(huán)境,生產(chǎn)環(huán)境)共用一套代碼蒲祈,主要用來配置環(huán)境的
  • index.html 整個(gè)應(yīng)用的根html甘萧,程序啟動(dòng)就是訪問這個(gè)頁面
  • main.ts 整個(gè)項(xiàng)目的入口點(diǎn)萝嘁,Angular通過這個(gè)文件來啟動(dòng)項(xiàng)目
  • polyfills.ts 主要是用來導(dǎo)入一些必要庫,為了讓Angular能正常運(yùn)行在老版本下
  • styles.css 主要是放一些全局的樣式
  • tsconfig.app.json TypeScript編譯器的配置,添加第三方依賴的時(shí)候會(huì)修改這個(gè)文件
  • tsconfig.spec.json 不用管
  • test.ts 也是自動(dòng)化測試用的
  • typings.d.ts 不用管

app目錄(重點(diǎn))
app目錄是我們要編寫的代碼目錄扬卷。我們寫的代碼都是放在這個(gè)目錄酿愧。
一個(gè)Angular程序至少需要一個(gè)模塊和一個(gè)組件。在我們新建項(xiàng)目的時(shí)候命令行已經(jīng)默認(rèn)生成出來了邀泉。

app目錄

pp.component.ts:這個(gè)文件表示組件嬉挡,
組件是Angular應(yīng)用的基本構(gòu)建模塊,可以理解為一段帶有業(yè)務(wù)邏輯和數(shù)據(jù)的Html
我們來看看app.component.ts中的代碼汇恤,并解釋下代碼的意義

下圖是源代碼庞钢,我只是把title的值給改了下


pp.component.ts源代碼

其次,來看看每行代碼的意義因谎,可以復(fù)制到編輯器上去看:

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

這里是從Angular核心模塊里面引入了component裝飾器

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

用裝飾器定義了一個(gè)組件以及組件的元數(shù)據(jù) 所有的組件都必須使用這個(gè)裝飾器來注解
組件元數(shù)據(jù) Angular會(huì)通過這里面的屬性來渲染組件并執(zhí)行邏輯

  • selector就是css選擇器基括,表示這個(gè)組件可以通過app-root的HTML頁面標(biāo)簽來來調(diào)用,index.html中有個(gè)<app-root>Loading...</app-root>標(biāo)簽财岔,這個(gè)標(biāo)簽用來展示該組件的內(nèi)容
  • templateUrl 指定了一個(gè)html文件作為組件的模板风皿,定義了組件的布局和內(nèi)容。在這里定義app.component.html匠璧,最終在index.html中<app-root>/<app-root>這個(gè)標(biāo)簽的內(nèi)容將展示app.component.html里面的內(nèi)容桐款。也就是templateUrl所定義的頁面定義了用戶最終看見的頁面的布局和內(nèi)容。
  • styleUrls 指定了一組css文件夷恍∧д#可以在這個(gè)css中編寫這個(gè)組件模板要用到的樣式。也就是app.component.html和app.component.css兩個(gè)文件酿雪。
export class AppComponent {
    title = '學(xué)習(xí)Angular';
}

這個(gè)類實(shí)際上就是該組件的控制器遏暴,我們的業(yè)務(wù)邏輯就是在這個(gè)類中編寫

AppComponent本來就是一個(gè)普通的typescript類,但是上面的組件元數(shù)據(jù)裝飾器告訴Angular指黎,AppComponent是一個(gè)組件朋凉,需要把一些元數(shù)據(jù)附加到這個(gè)類上,Angular就會(huì)把AppComponent當(dāng)組件來處理

組件相關(guān)的概念:

  • 1.組件元數(shù)據(jù)裝飾器(@Component)
    簡稱組件裝飾器醋安,用來告知Angular框架如何處理一個(gè)TypeScript類.
    Component裝飾器包含多個(gè)屬性杂彭,這些屬性的值叫做元數(shù)據(jù),Angular會(huì)根據(jù)這些元數(shù)據(jù)的值來渲染組件并執(zhí)行組件的邏輯

  • 2.模板(Template)
    我們可以通過組件自帶的模板來定義組件的外觀茬故,模板以html的形式存在盖灸,告訴Angular如何來渲染組件,一般來說磺芭,模板看起來很像html赁炎,但是我們可以在模板中使用Angular的數(shù)據(jù)綁定語法,來呈現(xiàn)控制器中的數(shù)據(jù)。

  • 3.控制器(controller)
    控制器就是一個(gè)普通的typescript類徙垫,他會(huì)被@Component來裝飾讥裤,控制器會(huì)包含組件所有的屬性和方法,絕大多數(shù)的業(yè)務(wù)邏輯都是寫在控制器里的姻报〖河ⅲ控制器通過數(shù)據(jù)綁定與模板來通訊,模板展現(xiàn)控制器的數(shù)據(jù)吴旋,控制器處理模板上發(fā)生的事件损肛。
    裝飾器,模板和控制器是組件的必備要素荣瑟。還有一些可選的元素治拿,比如:
    輸入屬性(@inputs):是用來接收外部傳入的數(shù)據(jù)的,Angular的程序結(jié)構(gòu)就是一個(gè)組件樹,輸入屬性允許在組件樹種傳遞數(shù)據(jù)
    提供器(providers):這個(gè)是用來做依賴注入的
    生命周期鉤子(LifeCycle Hooks):一個(gè)組件從創(chuàng)建到銷毀的過程中會(huì)有多個(gè)鉤子會(huì)被觸發(fā)笆焰,類似于Android中的Activity的生命周期
    樣式表:組件可以關(guān)聯(lián)一些樣式表
    動(dòng)畫(Animations): Angular提供了一個(gè)動(dòng)畫包來幫助我們方便的創(chuàng)建一些跟組件相關(guān)的動(dòng)畫效果劫谅,比如淡入淡出等
    輸出屬性(@Outputs):用來定義一些其他組件可能需要的事件或者用來在組件之間共享數(shù)據(jù)

簡單來說,組件的中關(guān)系就如下圖所示


組件關(guān)系

下面我們來看看模塊文件

app.module.ts:這個(gè)文件表示模塊

與AppComponent類似嚷掠,一個(gè)模塊也是一個(gè)帶著裝飾器的typeScript類捏检。
app.module.ts最上面也是一些引入文件,然后用NgModule這樣一個(gè)裝飾器聲明一個(gè)模塊不皆,在這個(gè)模塊聲明中

首先使用declarations屬性聲明了模塊中有什么東西贯城,在這個(gè)元數(shù)據(jù)里面只能聲明組件、指令和管道粟焊。
其次imports應(yīng)用正常運(yùn)轉(zhuǎn)還需要依賴的其他模塊冤狡。
下一個(gè)屬性是providers,默認(rèn)情況下它是空的项棠,用來聲明模塊中提供了什么服務(wù),這里只能聲明服務(wù)挎峦。
最后是bootstrap香追,聲明主組件是什么。
如下圖:

image.png

好了坦胶,新項(xiàng)目的目錄結(jié)構(gòu)就是這樣!

如果你想看看實(shí)際項(xiàng)目的搭建透典,可以點(diǎn)擊這里【Angular基礎(chǔ)+實(shí)戰(zhàn)】http://www.reibang.com/writer#/notebooks/20319746/notes/21579793/preview


資料參考

【原文地址】(http://blog.csdn.net/yuzhiqiang_1993/article/details/71191873

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市顿苇,隨后出現(xiàn)的幾起案子峭咒,更是在濱河造成了極大的恐慌,老刑警劉巖纪岁,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凑队,死亡現(xiàn)場離奇詭異,居然都是意外死亡幔翰,警方通過查閱死者的電腦和手機(jī)漩氨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門西壮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叫惊,你說我怎么就攤上這事款青。” “怎么了霍狰?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵抡草,是天一觀的道長。 經(jīng)常有香客問我蔗坯,道長康震,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任步悠,我火速辦了婚禮签杈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鼎兽。我一直安慰自己答姥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布谚咬。 她就那樣靜靜地躺著鹦付,像睡著了一般。 火紅的嫁衣襯著肌膚如雪择卦。 梳的紋絲不亂的頭發(fā)上敲长,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音秉继,去河邊找鬼祈噪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尚辑,可吹牛的內(nèi)容都是我干的辑鲤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼杠茬,長吁一口氣:“原來是場噩夢啊……” “哼月褥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓢喉,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤宁赤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后栓票,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體决左,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哆窿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片链烈。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挚躯,靈堂內(nèi)的尸體忽然破棺而出强衡,到底是詐尸還是另有隱情,我是刑警寧澤码荔,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布漩勤,位于F島的核電站,受9級(jí)特大地震影響缩搅,放射性物質(zhì)發(fā)生泄漏越败。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一硼瓣、第九天 我趴在偏房一處隱蔽的房頂上張望究飞。 院中可真熱鬧,春花似錦堂鲤、人聲如沸亿傅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葵擎。三九已至,卻和暖如春半哟,著一層夾襖步出監(jiān)牢的瞬間酬滤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工寓涨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盯串,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓戒良,卻偏偏與公主長得像嘴脾,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔬墩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容