摘要:我們將用戶可以看到的可以交互的前端稱為頁面。只有外觀和數(shù)據(jù)的頁面,只能稱為靜態(tài)頁面,顯然我們?nèi)粘J褂玫母嗍莿討B(tài)頁面,這就需要在靜態(tài)頁面上加上變的因素,我們也稱之為行為。在介紹靜態(tài)頁面往動態(tài)頁面的轉(zhuǎn)換時,需要先介紹一個重要概念驅(qū)動。
頁面
一個完整的程序模塊由一個前端頁面和多個后端服務(wù)組成,然后使用后端服務(wù)的 URL 將前端和后端關(guān)聯(lián)起來。我們將用戶可以看到的、可以交互的前端稱為頁面。
隨著 web 技術(shù)的發(fā)展,我們理解或看待“頁面”的角度一直在變化,朝著更規(guī)范、更簡單的方向變。我們借助時下流行的 MVVM(Model-View-ViewModel) 框架重新審視界面,歸納出頁面三要素,但舊瓶裝新酒,邊界更清晰,內(nèi)涵更豐富。
頁面的三個組成要素:
外觀(ui)
數(shù)據(jù)(data)
行為(behavior)
外觀一個網(wǎng)頁的外觀是由 HTML 和 CSS 實現(xiàn)的,但 HTML 和 CSS 都是實現(xiàn)細節(jié),如果直接依賴實現(xiàn)細節(jié),我們就沒有辦法用相同的概念描述 Android 頁面或 iOS 頁面,所以我們將外觀的組成抽象為:
結(jié)構(gòu) - 使用 UI 組件逐層嵌套形成樹狀結(jié)構(gòu),且只有一個根節(jié)點,并稱之為 Page
樣式 - 使用主題的概念統(tǒng)一設(shè)置和更換樣式,如 Dojo Theme 技術(shù)
注意:為了讓概念更加簡單和純粹,我們認為結(jié)構(gòu)只能由 UI 組件一個元素組成。
數(shù)據(jù)一個應(yīng)用程序中的數(shù)據(jù)可根據(jù)使用范圍劃分層級:
全局數(shù)據(jù) - 全局共享的數(shù)據(jù),所有頁面都可以使用
頁面數(shù)據(jù) - 只有所在的頁面才可以使用
頁面數(shù)據(jù)本可以再進一步細分,如按區(qū)塊等,但如果我們使用 React Redux 或 Dojo Store 等技術(shù)將頁面中的數(shù)據(jù)集中存儲后,就無需進一步拆分。
頁面中的數(shù)據(jù),分為兩大類:
業(yè)務(wù)數(shù)據(jù)
交互數(shù)據(jù) - 如數(shù)據(jù)有效性校驗結(jié)果和提示信息等
頁面中的數(shù)據(jù)會獨立、集中存儲,但又能注入到頁面的結(jié)構(gòu)中。
行為一提到頁面中的行為或交互,我們就想到了 JavaScript。但 JavaScript 依然是實現(xiàn)細節(jié),我們將 JavaScript 做的所有事情抽象為一個概念,并稱之為“行為”。
只有外觀和數(shù)據(jù)的頁面,只能稱為靜態(tài)頁面,顯然我們?nèi)粘J褂玫母嗍莿討B(tài)頁面,這就需要在靜態(tài)頁面上加上變的因素,我們也稱之為“行為”。
在介紹靜態(tài)頁面往動態(tài)頁面的轉(zhuǎn)換時,需要先介紹一個重要概念:驅(qū)動。頁面不會無緣無故的變,它必然是由其他因素驅(qū)動著變的。
目前總結(jié)出兩種驅(qū)動頁面變化的原因:
數(shù)據(jù)變更驅(qū)動(內(nèi)因)
用戶交互驅(qū)動(外因)
在介紹外觀和數(shù)據(jù)時,我們不僅說明了如何拔高抽象,也說明了如何落地實現(xiàn)。同樣,行為也需要落地實現(xiàn),我們使用純函數(shù)來描述一個行為。
純函數(shù):返回結(jié)果只依賴于它的參數(shù),并且在執(zhí)行過程里面沒有副作用,是冪等的,無狀態(tài)的。
Block Lang 官網(wǎng) https://blocklang.com
Block Lang 源碼 https://github.com/blocklang/ 或 https://gitee.com/blocklang/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106864.html
摘要:官網(wǎng)歡迎您了解發(fā)布的功能。中使用提交功能管理頁面等項目資源的變更。 BlockLang 官網(wǎng):https://blocklang.com 歡迎您了解 Block Lang 0.2.0 發(fā)布的功能。此版本增加三個功能: 在項目中創(chuàng)建空頁面 在項目中創(chuàng)建分組 使用版本控制系統(tǒng)管理新創(chuàng)建的頁面 創(chuàng)建空頁面 頁面,等同 web 項目中的網(wǎng)頁,或小程序中的頁面,其中包含頁面布局、頁面樣式和...
摘要:相信每個人都可按照自己的需求,拼裝出稱心的軟件。告別傳統(tǒng)的業(yè)務(wù)系統(tǒng)開發(fā)模式,人人都能高效率的拼裝出高質(zhì)量的業(yè)務(wù)系統(tǒng)。 轉(zhuǎn)眼間,做業(yè)務(wù)系統(tǒng)的軟件開發(fā)已有十個年頭,從剛開始的激情滿滿,到周而復(fù)始地一個接一個的做項目,雖然竭盡全力將一些常用的代碼或模式封裝到框架中,但依然感覺到了無盡的重復(fù),而正是這無盡的重復(fù)在逐漸的吞噬著我的工作熱情。 我意識到,雖然我熱愛軟件研發(fā),但目前的業(yè)務(wù)系統(tǒng)軟件研發(fā)...
摘要:本文節(jié)選自設(shè)計模式就該這樣學(xué)使用備忘錄模式實現(xiàn)草稿箱功能大家都用過網(wǎng)頁中的富文本編輯器,編輯器通常都會附帶草稿箱撤銷等操作。首先創(chuàng)建發(fā)起人角色編輯器類。 本文節(jié)選自《設(shè)計模式就該這樣學(xué)》1 使用備忘錄模式實現(xiàn)草稿箱功能大家都用過網(wǎng)頁中的富文本編輯器,編輯器通常都會附帶草稿箱、撤銷等操作。下面用一段代碼來實現(xiàn)一個...
摘要:一寫在前面如何實現(xiàn)文章的實時保存一般寫文章的寫博客的網(wǎng)站都會有這個功能點,這樣保證了用戶在不小心退出的情況下數(shù)據(jù)的保存下來,這樣的交互比較符合用戶的使用心理學(xué)。 一、寫在前面 如何實現(xiàn)文章的實時保存?一般寫文章的寫博客的網(wǎng)站都會有這個功能點,這樣保證了用戶在不小心退出的情況下數(shù)據(jù)的保存下來,這樣的交互比較符合用戶的使用心理學(xué)。對于用戶來說這是一個非常實用的功能,作為一個博客來說,有這個...
摘要:靜態(tài)資源的訪問通過配置代理實現(xiàn)頁面的訪問,跟服務(wù)端工程毫無關(guān)系,服務(wù)端只負責(zé)提供異步接口。集中管理異步接口配置的模塊 Nicon 一言不合,先上平臺Nicon。該平臺接入github登錄,采用七牛CDN存儲,歡迎大家試用。 Nicon 是一個集圖標(biāo)上傳、展示、使用于一身的字體圖標(biāo)管理平臺,流程簡單,符合日常開發(fā)使用習(xí)慣,適合企業(yè)在內(nèi)部部署使用。采用 Iconfont 字體圖標(biāo)替換項目中...
閱讀 1448·2023-04-25 19:51
閱讀 1936·2019-08-30 15:55
閱讀 1748·2019-08-30 15:44
閱讀 2707·2019-08-30 13:58
閱讀 2702·2019-08-29 16:37
閱讀 1081·2019-08-29 15:34
閱讀 4016·2019-08-29 11:05
閱讀 2632·2019-08-28 17:51