頁面
一個完整的程序模塊由一個前端頁面和多個後端服務組成,然後使用後端服務的 URL 將前端和後端關聯起來。我們將用戶可以看到的、可以交互的前端稱爲頁面。
隨着 web 技術的發展,我們理解或看待“頁面”的角度一直在變化,朝着更規範、更簡單的方向變。我們藉助時下流行的 MVVM(Model-View-ViewModel) 框架重新審視界面,歸納出頁面三要素,但舊瓶裝新酒,邊界更清晰,內涵更豐富。
頁面的三個組成要素:
- 外觀(ui)
- 數據(data)
- 行爲(behavior)
外觀
一個網頁的外觀是由 HTML 和 CSS 實現的,但 HTML 和 CSS 都是實現細節,如果直接依賴實現細節,我們就沒有辦法用相同的概念描述 Android 頁面或 iOS 頁面,所以我們將外觀的組成抽象爲:
- 結構 - 使用 UI 組件逐層嵌套形成樹狀結構,且只有一個根節點,並稱之爲
Page
- 樣式 - 使用主題的概念統一設置和更換樣式,如
Dojo Theme
技術
注意:爲了讓概念更加簡單和純粹,我們認爲結構只能由 UI 組件一個元素組成。
數據
一個應用程序中的數據可根據使用範圍劃分層級:
- 全局數據 - 全局共享的數據,所有頁面都可以使用
- 頁面數據 - 只有所在的頁面纔可以使用
頁面數據本可以再進一步細分,如按區塊等,但如果我們使用 React Redux
或 Dojo Store
等技術將頁面中的數據集中存儲後,就無需進一步拆分。
頁面中的數據,分爲兩大類:
- 業務數據
- 交互數據 - 如數據有效性校驗結果和提示信息等
頁面中的數據會獨立、集中存儲,但又能注入到頁面的結構中。
行爲
一提到頁面中的行爲或交互,我們就想到了 JavaScript。但 JavaScript 依然是實現細節,我們將 JavaScript 做的所有事情抽象爲一個概念,並稱之爲“行爲”。
只有外觀和數據的頁面,只能稱爲靜態頁面,顯然我們日常使用的更多是動態頁面,這就需要在靜態頁面上加上變的因素,我們也稱之爲“行爲”。
在介紹靜態頁面往動態頁面的轉換時,需要先介紹一個重要概念:驅動。頁面不會無緣無故的變,它必然是由其他因素驅動着變的。
目前總結出兩種驅動頁面變化的原因:
- 數據變更驅動(內因)
- 用戶交互驅動(外因)
在介紹外觀和數據時,我們不僅說明了如何拔高抽象,也說明了如何落地實現。同樣,行爲也需要落地實現,我們使用純函數來描述一個行爲。
純函數:返回結果只依賴於它的參數,並且在執行過程裏面沒有副作用,是冪等的,無狀態的。
Block Lang 官網 https://blocklang.com
Block Lang 源碼 https://github.com/blocklang/ 或 https://gitee.com/blocklang/