AWTK-MVVMC 語言 MVVM 框架
AWTK-MVVM是一套為AWTK用C語言開發(fā),并支持各種腳本語言的MVVM框架,實(shí)現(xiàn)了數(shù)據(jù)綁定、命令綁定和窗口導(dǎo)航等基本功能,使用AWTK-MVVM開發(fā)應(yīng)用程序,無需學(xué)習(xí)AWTK本身的API,只需學(xué)習(xí)綁定規(guī)則和Model的實(shí)現(xiàn)方式即可。
一、MVVM
MVVM(Model-View-ViewModel)是分離用戶界面和業(yè)務(wù)邏輯的經(jīng)典模式。
分離用戶界面和業(yè)務(wù)邏輯的好處:
- 讓用戶界面可以獨(dú)立變化。
- 方便為業(yè)務(wù)邏輯編寫單元測試程序。
- 方便UI設(shè)計師和程序員的分工和合作。
MVVM相比MVP和MVC的優(yōu)勢:
- 使用更簡單。
- 分離更徹底。
- 聲明式的編程更容易維護(hù)。
MVVM的核心思想有兩個:
- 通過數(shù)據(jù)綁定實(shí)現(xiàn)View與Model之間的數(shù)據(jù)交換。
- 通過命令綁定實(shí)現(xiàn)View事件與Model行為之間的關(guān)聯(lián)。
二、AWTK-MVVM
AWTK-MVVM是一套為AWTK用C語言開發(fā),并支持各種腳本語言的MVVM框架,實(shí)現(xiàn)了數(shù)據(jù)綁定、命令綁定和窗口導(dǎo)航等基本功能,使用AWTK-MVVM開發(fā)應(yīng)用程序,無需學(xué)習(xí)AWTK本身的API,只需學(xué)習(xí)綁定規(guī)則和Model的實(shí)現(xiàn)方式即可。與其它MVVM框架相比,其特點(diǎn)有:
- 代碼小。
- 性能高。
- 內(nèi)存開銷小。
- 隔離更徹底。
- 可移植到其它GUI。
- 支持多種編程語言(目前支持C/JS)。
三、使用方法
- 獲取awtk并編譯。
git clone https://github.com/zlgopen/awtk.git cd awtk scons
- 獲取awtk-mvvm并編譯(awtk和awtk-mvvm處于用一級目錄)
git clone https://github.com/zlgopen/awtk-mvvm.git cd awtk-mvvm git clone https://github.com/jerryscript-project/jerryscript.git 3rd/jerryscript scons
編譯linux-fb版本,請修改SConstruct
#for pc #sys.path.insert(0, '../awtk/') #for linux-fb sys.path.insert(0, '../awtk-linux-fb/')
- 運(yùn)行demos
./bin/demo1
本文以Linux/MacOS為例,Windows可能會微妙差異,請酌情處理。
四、文檔
五、示例
| C DEMO | JS DEMO | 說明 |
|---|---|---|
| demo1 | jsdemo1 | 數(shù)據(jù)綁定基本用法 |
| demo2 | jsdemo2 | trigger參數(shù)的用法 |
| demo3 | jsdemo3 | converter參數(shù)的用法 |
| demo4 | jsdemo4 | 顯式更新(Trigger=Explicit)的用法 |
| demo5 | jsdemo5 | validator參數(shù)的用法 |
| demo6 | jsdemo6 | 命令綁定的基本用法 |
| demo7 | jsdemo7 | 以計算器為例的綜合用法 |
| demo8 | jsdemo8 | 以shape編輯為例的綜合用法 |
| demo9 | jsdemo9 | 多窗口的基本用法 |
| demo10 | jsdemo10 | 定時器的基本用法 |
| demo11 | jsdemo11 | 一個視圖多個ViewModel的用法 |
| demo12 | jsdemo12 | 多窗口之間參數(shù)傳遞 |
| demo13 | jsdemo13 | 列表視圖的基本用法 |
| demo14 | jsdemo14 | 快捷鍵的基本用法 |
| demo15 | (no) | 自定義導(dǎo)航器處理插件,以及MVVM窗口和非MVVM窗口的交互 |
| (no) | jsdemo15 | combox 數(shù)據(jù)聯(lián)動 |
| (no) | jsdemo16 | 動態(tài)界面 |
| demo16 | (no) | 集成硬件外設(shè) |
| demo17 | (no) | 無GUI情況集成硬件外設(shè) |
| (no) | jsdemo17 | 控制控件的可見性 |
| (no) | jsdemo18 | 復(fù)雜屬性值的表示方法 |
| demo19 | (no) | 控制動畫啟停 |
完整示例及模板項(xiàng)目:awtk-mvvm-c-hello
評論
圖片
表情
