Welcome to Galaxy Software Services Corporation !
徵才專區
CSR專區
Vital CRM 國際認證
GSS部落格
叡揚資訊
關於叡揚
新聞與活動
產品與服務
叡揚e論壇
投資人關係
EN
中
簡
日
搜尋
關於叡揚
叡揚簡介
創辦人的話
叡揚大事紀
得獎肯定
合作夥伴
營業據點
聯絡我們
新聞與活動
新聞中心
資安電子報
影音專區
成功案例
行銷活動
產品與服務
企業e化應用軟體
S.P.E.E.D. 公文線上簽核管理系統
Radar 睿達人力資源管理系統
iota C.ai 對話服務平台
Tracko 多源智慧追蹤平台
B.E.S.T. 銀行信用風險資訊解決方案
BoDms 董事會提案暨會務管理系統
Vitals ESP 企業知識協作平台
Vitals HCA 評鑑協同管理系統
Vitals HAS 醫療數據分析系統
Vitals KPIM 指標管理系統
Openfind 網擎訊息安全解決方案
資訊安全
資訊安全系列產品
Checkmarx 源碼安全檢測
Digital.ai APP & Web 防護
Digital.ai APP & Web 相容性功能驗測
illumio 零信任微切分
Orca Security 雲端原生應用程式防護平台
Azul 安全高效 Java JDK
Mend.io Open Source 檢測
HCL 網頁應用程式弱點掃描軟體
Quokka APP 黑箱檢測
Secure Code Warrior 安全開發培訓平台
資安檢測服務
資安學程
資安白皮書
資安電子報
企業數位化智慧維運
企業數位化智慧維運
Axway API 管理平台
Axway ST 集中檔案傳輸管理
AVC 應用程式弱點整合平台
BMC Control-M 批次管理解決方案
BMC Helix Discovery & AISM 探索打造企業IT智慧管理平台
Dynatrace AI智慧維運與效能管理
DMP 數據治理平台
Noname Security 完整主動式API安全平台
Servicenow ITSM一站式IT服務管理平台
TIBCO 智能化資料平台
RPA 機器人流程自動化
Automation Anywhere 業務流程自動化RPA平台
UiPath 機器人流程自動化平台
Woodpecker XVR 次世代資安可視性解決方案
資源中心
雲端與大數據服務
Vital NetZero 零碳雲
Vital CRM 客戶關係管理
Vital BizForm 雲端智慧表單
Vital Knowledge 協同知識管理
Vital Finance 財務會計管理
Vital OD 雲端公文管理
Vital HCM 雲端人力資源管理
大數據分析解決方案
運帷服務
資訊系統維運與開發服務
QuEye CIA 軟體變更衝擊分析器
AI 解決方案
AI 解決方案介紹
AI 智慧公文解決方案
AI 財務報表辨識系統
政府共同供應契約
ESG解決方案
叡揚e論壇
叡揚e論壇
產品使用真心話
投資人關係
股東專區
重大訊息
主要股東
股東會
歷年股利
股利政策
法人說明會
聯繫窗口
公開資訊觀測站
公司治理
營運團隊
公司治理
董事會
功能性委員會
誠信經營
風險管理
智慧財產管理計畫
利害關係人與溝通
公司重要內規
CSR專區
財務資訊
每月營收資訊
財務報告
EN
中
簡
日
搜尋
徵才專區
CSR專區
Vital CRM 國際認證
GSS部落格
選單
首頁
分類
標籤
選擇分類
園丁來閒聊
工具平台
專案管理
資料庫
經驗分享
測試
設計
效能調校
程式語言
|_
.NET MVC
|_
.NET
|_
Java
|_
C#
|_
Python
|_
TypeScript
|_
VB.NET
園丁
資訊安全
開發工法
作業系統
前端
搜尋
訂閱文章
取消訂閱文章
設置
登入
帳號
密碼
記住我
登入
忘記帳號
重置密碼
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
6 分鐘閱讀時間
(1298 個字)
字體大小:
+
–
訂閱
取消訂閱
Angular # 13 - Components [1]
程式語言
前端
2021/07/01, 週四
828 點擊
0 評論
從
深入淺出系列
可以了解到 Angular App 最重要的就是 Component 了
接下來的幾篇將深入探討 Component
當 Angular CLI 在收到 ng generate component 指令後,會建立一系列相關的檔案及設定,其中
一定要存在
的東西有:
@Component
各位還記得的話,是個 Decorator
這個 Decorator 一定要掛在 class 上,Angular 才會當作 Component 處理
Controller
被 @Component 所裝飾的 class 就是 controller
所有的成員變數及方法都定義在這個地方
承上,邏輯主要也是寫在這
Template
如果沒有 template 還算是 component 嗎?
Template 中所定義的內容跟切版就會是使用者看到的 UI
在解析 Template 的時候會一併把事件跟資料綁定
非必要
的部份有:
Providers
:
可以針對 component 設定特有的 service
在 component 內可以使用的 service 除了在 root module 中定義之外,就是這個部份會補足的,某種意義上也算是種封裝
什麼時候要用哪一種 provider 有更詳細的區分方法,可以參考此
連結
,有非常詳細的說明各層級 providers 的使用時機及其影響
Input
:
如同前面的篇章所介紹的,component 可以透過定義 @Input() 裝飾的屬性,從父 Component 取得資料
承上,反過來說就是父 Component 可以傳資料給子 Component,是一種
由上往下
傳遞資訊的方式
Styles:
Component 專屬的 CSS
底層的運作機制是透過 shadow DOM 達成的,因此在裡面定義的 CSS 不會在 global 層級看到,可以避免被 global CSS 干擾
Animations
Angular 有內建處理動畫的 Module
這部份應該,不會在每日系列講解,有急需的人可以至官網
連結
看
Outputs
前面有提到 component 前上對下的資料傳輸方式是透過 @Input(),而
下對上
的傳輸方式就是 @Output() 了,但不限於下對上,有興趣的 Component 都可以監聽並處理
承上,通常會搭配 Angular 中事件處理的機制,後面會再詳述
Lifecycle hooks
每個 component 都有生命週期,而其中有幾個階段是可以搭配 hooks 處理一些事前事中事後的事務
比方說前面有看過的
OnInit
,它是個介面,會強制 controller 要實作 ngOnInit,會在所有資料都綁定完成後執行,以此類推,後序再作詳細的說明
其他
Component 的可選項目太…多…了,剩下的可以上官網看
連結
Component 的
生命週期
Component 從建立到削毀會經過幾個重要的生命週期
第一是被註冊到 App Module
這通常是因為我們有將這個 Component 列在 NgModule 的 Metadata 中
然而 Component 也可以在 App 已經開始執行時動態註冊
不論如何,只要註冊了,就會產生一個 Factory 待機
第二是 Component 被需要了
這通常是發生在 Template 中有這個 component 的 selector,但也可以手動要求一個 Component
這時候 Angular 就會去 Module 所屬的 Registry 找到該 component 的 Factory(這個 Factory 是在 CLI 編譯時期建立的)
第三是 Component 被初始化了
初始化的時候會讀這個 component 的 metadata,並執行
constructor()
這邊切記不要放任何跟子 component 相關的邏輯,因為當下子 component 也許根本尚未存在
第四是 Component 開始渲染 Template 中有用到的子 Component
這一段是發生在 Component 的 Metadata 中 Template 開始被解析時
子 Component 也會走同樣的流程開始初始化,且同時現在的這個 Component 會繼續完成它的初始化,兩者是非同步的
第五是 Component 與其子 Component 都初始化完成
此時各種生命週期相關的 hook 都有機會被觸發
觸發的原因可能是 User 做了操作,事件發生,狀態變化...等
最後,終有那麼一段時間,Component 不再被用到了,就會被移除
移除的內容包含其子 Component
如果這個 Component 又被需要了,那就會再走一次同樣的生命週期
Lifecycle Hooks
Component 生命週期中會被觸發的方法,但跟事件監聽不一樣,只有你實作某個 hook 的介面它才會作用,否則什麼事都不會發生
常見的 Lifecycle hook 如下:
OnChanges
發生在 @Input() 綁定的屬性發生異動時
會有一個
SimpleChange
物件可以知道異動前後的值
OnInit
發生在所有的綁定都處理完時
初始化資料的最佳時機
OnDestroy
發生在 component 被移除前
停止監聽某事件或是停止 timer的 的最佳時機
DoCheck
發生在 Change Detection 執行時
AfterContentInit
發生在所有的 Content Children 完成初始化時
可以在這個時候針對子 Component 作一些設定
AfterContentChecked
發生在 Angular 檢查 content children 時
AfterViewInit
發生在所有的 View Children 完成初始化時
這時整個元件樹都已初步設定完成
AfterViewChecked
發生在 View Children 被 Angular 檢查時
其他 ...
完整的清單還是看
官網
吧
小結
先別休克,後面還有
了解這些的目的是為了設計出更好的 Component
內容相當深奧,但等後面開始實作的時候就會愈來愈明白的
你覺得這篇文章怎麽樣?
開心
(
0
)
喜愛
(
0
)
驚奇
(
0
)
悲傷
(
0
)
生氣
(
0
)
標籤:
2021部落格鐵人賽
Angular # 14 - Components [2]
Angular #12 - 深入淺出 Angular [4]
相關文章
ELK 的應用程式效能監控 Application Performance Monitoring
經驗分享
為什麼程式需要單元測試? - 實作篇
經驗分享
讓語言學習模型玩歌曲填詞
經驗分享
如何在 Hangfire上實作自訂工作重試處理
程式語言
[Design Pattern]這可能是你第一個接觸到的Design Pattern
設計
.Net Core偵測指定檔案或目錄變化時自動執行某些動作
經驗分享
評論
尚無評論
已經注冊了?
這裡登入
Guest
2024/05/04, 週六
Captcha 圖像
提交您的評論