這次帶給大家Angular 4.0的架構使用詳解,Angular 4.0架構使用的注意事項有哪些,下面就是實戰案例,一起來看一下。
前言
前段時間Google發布了廣受歡迎的Angular JavaScript框架的4.0版本,該版本致力於縮小生成程式碼的體積,以及保持框架的簡化發布計劃。
我很久沒寫這種比較偏概念類的東西了,不過我覺得沒有形成一個知識架構,學習效率會大打折扣。在這裡把我的所理解的知識分享給大家,部分內容引用自官方文件。下面進入主題
# Angular架構概覽
# 這個架構圖展現了 Angular 應用中的 8 個主要建構塊:
模組(module)
- 元件(component)
- #模板(template)
- 元資料(metadata)
- 資料綁定 (data binding)
- #指令(dirctive)
- 服務(service)
- 依賴注入 (dependency injection)
# 接下來我會按順序並結合圖來講解一下。
# 1.模組 (module)
# Angular 或 ionic 新建的項目,都會存在一個根模組,預設名稱是 AppModule。如果你使用了模組化來創建應用,包括 AppModule,每個都會存在一個 @NgModule 裝飾器的類別(雖然他很像 java 中的註解,但是他的官方命名叫裝飾器)。我們新建的頁面,如果不使用懶加載,都要在 @NgModule 中先聲明後使用。
以下舉個例子,簡單介紹一下 @NgModule 中的內容
//app.module.ts import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; @NgModule({ imports: [ BrowserModule ], providers: [ Logger ], declarations: [ AppComponent ], exports: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { }
# imports 本模組聲明的元件模板所需的類別所在的其它模組。
- providers 服務的建立者,並加入到全域服務清單中,可用於套用任何部分。
- declarations 宣告本模組中擁有的檢視類別。 Angular 有三種視圖類別:元件、指令和管道。
- exports declarations 的子集,可用於其它模組的元件模板。
- bootstrap 指定應用程式的主視圖(稱為根元件),它是所有其它視圖的宿主。只有根模組才能設定 bootstrap 屬性。
# 在圖中的意義:看圖左上角,模組是用來接收一個用來描述模組屬性元資料物件的。
2.元件 (component)、範本 (template)、元資料 (metadata)
# 這次我們把這三點一起來講,先來看這段程式碼
//hero-list.component.ts @Component({ selector: 'hero-list', templateUrl: './hero-list.component.html', providers: [ HeroService ] }) export class HeroListComponent implements OnInit { /* . . . */ }
Component
# 組件是一個裝飾器,他能接受一個配置對象, Angular 會基於這些資訊創建和展示組件及其視圖。
selector:CSS 選擇器,它告訴 Angular 在父級 HTML 中尋找
標籤,建立並插入該元件。 - templateUrl:元件 HTML 模板的模組相對位址,如果使用 template 來寫的話是用「`」這個符號來直接寫 HTML 程式碼。
- providers:元件所需服務的依賴注入。
# template
# 模板就是那段 HTML 程式碼,可以用 templateUrl 引入外面的,也可以用 template`` 直接寫。
metadata
# 元資料裝飾器用類似的方式來指導 Angular 的行為。例如 @Input、@Output、@Injectable 等是一些最常用的裝飾器,用法就不在這裡展開了。
在圖中的意義:看圖中間那一塊,模板、元資料和元件共同描繪出這個視圖。
3.資料綁定 (data binding)
# 這裡一共展示四種資料綁定,看看範例程式碼:
//插值表达式 显示组件的hero.name属性的值
可能大家对各种括号看的眼花了,总结一下:
双花括号是单向绑定,传递的是值。方向是 组件 -> 模板。
- 方括号是单向绑定,传递的是属性。方向是 父组件 -> 子组件。
- 圆括号是事件绑定,处理点击等活动(action)。
- 方括号套圆括号是双向绑定,方向是 组件 模板。
在图中的意义:看图中间那一块,数据绑定给模板和组件提供数据交互的方式。
4.指令 (directive)
严格来说组件就是一个指令,但是组件非常独特,并在 Angular 中位于中心地位,所以在架构概览中,我们把组件从指令中独立了出来。
我们这里提到的指令有两种类型:
结构型 structural 指令和属性 attribute 型指令。
放一下原文证明一下组件确实算是一个指令:
While a component is technically a directive, components are so distinctive and central to Angular applications that this architectural overview separates components from directives.
Two other kinds of directives exist: structural and attribute directives.
结构型指令是 ngFor、ngIf 这种的,通过在 DOM 中添加、移除和替换元素来修改布局。
属性型指令是 ngModel 这种的,用来修改一个现有元素的外观或行为。
Angular 还有少量指令,它们或者修改结构布局(例如 ngSwitch ), 或者修改 DOM 元素和组件的各个方面(例如 ngStyle 和 ngClass)。之后我会单独写一篇讲他们用法的文章。
在图中的意义:看图右上角那一块,组件是一个带模板的指令,只是扩展了一些面向模板的特性。
5.服务 (service)
官方文档的概念:
服务是一个广义范畴,包括:值、函数,或应用所需的特性。服务没有什么特别属于 Angular 的特性。Angular 对于服务也没有什么定义,它甚至都没有定义服务的基类,也没有地方注册一个服务。
这就像你在 iOS 或者 Android 里单独建了一个类叫 httpService ,封装了网络请求服务一样,不是具体的什么东西,就是一个概念了解下就行。
在图中的意义:看图左下角角那一块,服务是用来封装可重用的业务逻辑。
6.依赖注入 (dependency injection)
依赖注入是提供类的新实例的一种方式,还负责处理类所需的全部依赖。大多数依赖都是服务。 Angular 使用依赖注入来提供新组件以及组件所需的服务。
比如我们要给某组件导入 HomeService 这个服务,看这段代码:
constructor(private service: HeroService) { ... }
这个constructor就是构造函数,依赖注入在 constructor 中进行。你也许会觉得前面写上 private、public 之类的很怪,这是 TypeScript 语法比较特殊,习惯就好。
当 Angular 创建组件时,会首先为组件所需的服务请求一个注入器 injector。我们必须先用注入器 injector 为 HeroService 注册一个提供商 provider。
看一下下面的代码,意思就是我们必须在 providers 写上才能用
@Component({ selector: 'hero-list', templateUrl: './hero-list.component.html', providers: [ HeroService ] })
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是Angular 4.0的架構使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具