BlockLang 頁面(設計草稿)

頁面

一個完整的程序模塊由一個前端頁面和多個後端服務組成,然後使用後端服務的 URL 將前端和後端關聯起來。我們將用戶可以看到的、可以交互的前端稱爲頁面

隨着 web 技術的發展,我們理解或看待“頁面”的角度一直在變化,朝着更規範、更簡單的方向變。我們藉助時下流行的 MVVM(Model-View-ViewModel) 框架重新審視界面,歸納出頁面三要素,但舊瓶裝新酒,邊界更清晰,內涵更豐富。

頁面的三個組成要素:

  1. 外觀(ui)
  2. 數據(data)
  3. 行爲(behavior)

外觀

一個網頁的外觀是由 HTML 和 CSS 實現的,但 HTML 和 CSS 都是實現細節,如果直接依賴實現細節,我們就沒有辦法用相同的概念描述 Android 頁面或 iOS 頁面,所以我們將外觀的組成抽象爲:

  1. 結構 - 使用 UI 組件逐層嵌套形成樹狀結構,且只有一個根節點,並稱之爲 Page
  2. 樣式 - 使用主題的概念統一設置和更換樣式,如 Dojo Theme 技術

注意:爲了讓概念更加簡單和純粹,我們認爲結構只能由 UI 組件一個元素組成。

數據

一個應用程序中的數據可根據使用範圍劃分層級:

  1. 全局數據 - 全局共享的數據,所有頁面都可以使用
  2. 頁面數據 - 只有所在的頁面纔可以使用

頁面數據本可以再進一步細分,如按區塊等,但如果我們使用 React ReduxDojo Store 等技術將頁面中的數據集中存儲後,就無需進一步拆分。

頁面中的數據,分爲兩大類:

  1. 業務數據
  2. 交互數據 - 如數據有效性校驗結果和提示信息等

頁面中的數據會獨立、集中存儲,但又能注入到頁面的結構中。

行爲

一提到頁面中的行爲或交互,我們就想到了 JavaScript。但 JavaScript 依然是實現細節,我們將 JavaScript 做的所有事情抽象爲一個概念,並稱之爲“行爲”。

只有外觀和數據的頁面,只能稱爲靜態頁面,顯然我們日常使用的更多是動態頁面,這就需要在靜態頁面上加上變的因素,我們也稱之爲“行爲”。

在介紹靜態頁面往動態頁面的轉換時,需要先介紹一個重要概念:驅動。頁面不會無緣無故的變,它必然是由其他因素驅動着變的。

目前總結出兩種驅動頁面變化的原因:

  1. 數據變更驅動(內因)
  2. 用戶交互驅動(外因)

在介紹外觀和數據時,我們不僅說明了如何拔高抽象,也說明了如何落地實現。同樣,行爲也需要落地實現,我們使用純函數來描述一個行爲。

純函數:返回結果只依賴於它的參數,並且在執行過程裏面沒有副作用,是冪等的,無狀態的。

Block Lang 官網 https://blocklang.com

Block Lang 源碼 https://github.com/blocklang/https://gitee.com/blocklang/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章