最近,關於JavaScript Frameworks的對話已由流行名稱(例如React(技術上是庫),Next.js,Svelte,Svelte,Angular等)主導。
當我第一次遇到Aurelia時,我的反應是:“那是什麼?”但是經過兩年的工作,我現在相信它是那裡最好的框架之一,即使不是最好的框架。
為什麼我這樣認為?讓我解釋一下。我從react.js過渡到Aurelia,最初,我認為這只是另一個JavaScript框架。但是,隨著我更深入的研究,我開始意識到它的真正潛力和力量。
1。事件聚合
首先是事件聚合器,如果您在C#生態系統中工作,您可能會熟悉這一概念,但是以下是Aurelia的工作方式:
事件聚合器的功能與C#中常用的基於事件的消息模式相似。這是一個酒吧/子系統,可讓您在Aurelia應用程序中發布並訂閱自定義事件。
這有助於您應用程序的不同部分之間的脫鉤通信。就像在C#中一樣,事件聚合器或調解器用於簡化事件處理,Aurelia的事件聚合器被框架本身利用,以在應用程序生命週期的各個階段和特定操作中發布事件。 導入{ieventaggregator,從'aurelia''; lanesolve}; 導出類FirstComponent { ReadOnly EA:ieventAggregator = resolve(ieventaggregator); 邊界() { this.ea.publish('ea_channel',“有效載荷”) } }
導入{ieventaggregator,從'aurelia''; lanesolve}; 導出類secondcomponent { ReadOnly EA:ieventAggregator = resolve(ieventaggregator); 邊界() { this.ea.subscribe('ea_channel',有效載荷=> { //在此回調的內部做事 }); } }
這樣,我們可以毫不費力地實現事件驅動的體系結構,解決和解決與React和類似框架經常遇到的耦合頭痛。
2。 依賴項注入
import { IEventAggregator, resolve } from 'aurelia'; export class FirstComponent{ readonly ea: IEventAggregator = resolve(IEventAggregator); bound() { this.ea.publish('ea_channel', ‘PAYLOAD’) } }Aurelia提供了一個功能強大且靈活的DI系統,可簡化接線應用程序的不同部分。借助Aurelia的DI,管理和注入依賴項變得無縫,導致更清潔,更可維護的代碼。
import { IEventAggregator, resolve } from 'aurelia'; export class SecondComponent { readonly ea: IEventAggregator = resolve(IEventAggregator); bound() { this.ea.subscribe('ea_channel', payload => { // Do stuff inside of this callback }); } }此外,此方法使測試驅動的開發(TDD)變得更加容易,因為它可以直接對單個組件進行嘲弄和測試,而無需複雜的設置或緊密耦合的依賴項。
3。動態構圖
aurelia的元素可以使視圖和視圖模型的動態組成。它的作用為自定義元素,但不需要特定的標籤名稱,可以靈活和可重複使用的UI組件。 在使用的視圖模型中,您可以訪問Aurelia的所有標準生命週期事件,以及可用於初始化或傳遞參數到視圖模型的附加激活方法。 在實踐中使用
主應用程序
傳遞parameters
:the Model.bind屬性將參數傳遞到動態組成的視圖模型中的激活方法。
[2我喜歡Aurelia 2的原因之一是通過MVVM(Model-view-viewModel)模式對關注點的干淨分離。 view :UI結構完全與邏輯解耦。它只需綁定到ViewModel即可顯示數據並捕獲用戶交互。
:這是所有邏輯發生的地方。它可以控制數據,處理業務規則並更新視圖,而不必擔心它的顯示方式。
模型
此分離使應用程序高度模塊化,更易於維護,並且更易於測試,從而可以更靈活,可擴展的代碼。
結論
Main Application
Aurelia 2具有有助於構建乾淨,可擴展和可維護的應用程序的功能。 要獲得完整的圖片並深入研究其功能,我強烈鼓勵您探索Aurelia 2文檔,以提供更全面的理解。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3