web開發中UI層的鬆散耦合
這次帶給大家web開發中UI層的鬆散耦合,web開發中UI層松耦合使用的注意事項有哪些,下面就是實戰案例,一起來看一下。
在Web開發中,UI是由三個彼此隔離又互動的層定義的。
HTML用來定義頁面的資料和語意
CSS用來為頁面新增樣式,建立視覺特徵
JS用來為頁面新增行為,使其更具互動性
關於松耦合,容我廢話幾句。當你能夠做到修改一個元件而不需要更改其他的元件時,你就做到了鬆散耦合。對於多人大型系統來說,有很多人參與維護程式碼,鬆散耦合對於程式碼可維護性至關重要。你絕對希望開發人員在修改某部分程式碼時不會破壞其他人的程式碼。當一個大系統的每個組件的內容有了限制,就做到了松耦合。本質上講,每個組件都需要保持足夠瘦身來確保鬆耦合。組件知道的越少,就越有利於形成整個系統。
有一點要注意:在一起工作的元件無法達到「無耦合」(no coupling)。在所有系統中,組件之間總是要共享一些資訊來完成各自的工作。這很好理解,我們的目標是確保對一個組件的修改不會經常性地影響其他部分。
如果一個 Web UI是鬆散耦合的,則很容易偵錯。和文字或結構相關的問題,透過尋找HTML即可定位。當發生了樣式相關的問題,你知道問題出現在CSS。最後,對於那些行為相關的問題,你直接去JS找到問題所在,這種能力是Web介面的可維護性的核心部分。
WebPage時代,我們推崇將HTML/CSS/JS三層分離,例如禁止使用DOM的內聯屬性來綁定監聽器,
你不禁在想,難道我們在走倒退路?
歷史有時候會打轉,咋一看以為是回去了。其實是螺旋轉了一圈,站在了一個新的起點。 ——玉伯《Web 研發模式演變》
傳統WebPage時代,組件化支持程度不高,語言層面和框架層面上都是如此,想想沒有原生不支持模組的JS(ES6之前的時代)和jQuery,所以為了避免增加維護成本,推崇三層分離的最佳實踐。隨著ES6與前端MV*框架的崛起,整個的前端開發模式都改變了。你會發現前端不只是寫頁面了,寫的更多的是WebApp,應用程式的規模和複雜程度與WebPage時代不可同日而語。
React就是其中極為典型的代表,它提出用JSX來寫HTML,直接是將頁面結構和頁面邏輯寫在了一塊。這若放在WebPage時代,相信直接被當作反模式的典型教材;但在WebApp時代卻被大多數人接受並使用。包括React團隊提出的CSS in JS,更是想透過把CSS寫在JS中,使得前端開發完全由JS主導,組件化做的更加徹底(CSS in JS我沒有做更深的調查和理解,沒有實際大型專案的實務經驗,所以現在我還是保持觀望態度,繼續沿用之前的SASS和LESS來做CSS開發)。
儘管兩個Web時代的開發模式發生了巨大變化,關於三層的鬆散耦合設計,還是有一些通用原則你需要遵守:
將JS從CSS中抽離。早期的IE8和更早版本的瀏覽器中允許在CSS中寫JS(不寫例子,這是反模式,記不住更好),這會帶來性能底下的問題,更可怕的是後期難以維護。不過我相信在座各位估計都接觸不到這類代碼了,也好。
將CSS從JS抽離。不是說不能再JS中修改CSS,是不允許你直接去改樣式,而是透過修改類別來間接的修改樣式。請參閱如下範例:
// 不好的写法element.style.color = 'red'; element.style.left = '10px'; element.style.top = '100px'; element.style.visibility = 'visible';// 好的写法.reveal { color: red; left: 10px; top: 100px; visibility: visible; } element.classList.add('.reveal');
由於CSS的className可以成為CSS和JS之間通訊的橋樑。在頁面的生命週期中, JS可以隨意新增和刪除元素的className。而className所定義的樣式則在CSS程式碼之中。任何時刻,CSS中的樣式都是可以修改的而不必更新JS。 JS不應直接操作樣式,以便保持和CSS的鬆散耦合。
有一個使用style屬性的情況是可以接受的:當你需要給頁面中的元素會作定位,使其相對於另一個元素或整個頁面重新定位。這種計算是無法在CSS中完成的,因此這時是可以使用style.top、style.left、style.bottom和style.rght來正確定位元素的。在CSS中定義這個元素的預設屬性,而在 Javascript中修改這些預設值。
鑑於現在前端已經將HTML和JS寫在一塊的現狀,我就不談原書中如何將兩者分開的實踐了。但是,我說了這麼多廢話,請記住一點:「可預見性」(Predictability)會帶來更快的遇試和開發,並確信(而非猜測)從何入手調試bug,這會讓問題解決得更快、程式碼整體品質更高。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是web開發中UI層的鬆散耦合的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

這個AI輔助程式工具在這個AI快速發展的階段,挖掘出了一大批好用的AI輔助程式工具。 AI輔助程式設計工具能夠提升開發效率、提升程式碼品質、降低bug率,是現代軟體開發過程中的重要助手。今天大姚給大家分享4款AI輔助程式工具(而且都支援C#語言),希望對大家有幫助。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫程式碼,從而將更多精力集中在問題解決和協作上。 Git

2022年3月3日,距離世界首個AI程式設計師Devin誕生不足一個月,普林斯頓大學的NLP團隊開發了一個開源AI程式設計師SWE-agent。它利用GPT-4模型在GitHub儲存庫中自動解決問題。 SWE-agent在SWE-bench測試集上的表現與Devin相似,平均耗時93秒,解決了12.29%的問題。 SWE-agent透過與專用終端交互,可以開啟、搜尋文件內容,使用自動語法檢查、編輯特定行,以及編寫和執行測試。 (註:以上內容為原始內容微調,但保留了原文中的關鍵訊息,未超過指定字數限制。)SWE-A

Go語言開發行動應用程式教學隨著行動應用程式市場的不斷蓬勃發展,越來越多的開發者開始探索如何利用Go語言開發行動應用程式。作為一種簡潔高效的程式語言,Go語言在行動應用開發中也展現了強大的潛力。本文將詳細介紹如何利用Go語言開發行動應用程序,並附上具體的程式碼範例,幫助讀者快速入門並開始開發自己的行動應用程式。一、準備工作在開始之前,我們需要準備好開發環境和工具。首

五大熱門Go語言庫總結:開發必備利器,需要具體程式碼範例Go語言自從誕生以來,受到了廣泛的關注和應用。作為一門新興的高效、簡潔的程式語言,Go的快速發展離不開豐富的開源程式庫的支援。本文將介紹五大熱門的Go語言庫,這些庫在Go開發中扮演了至關重要的角色,為開發者提供了強大的功能和便利的開發體驗。同時,為了更好地理解這些庫的用途和功能,我們會結合具體的程式碼範例進行講

Cockpit是一個面向Linux伺服器的基於Web的圖形介面。它主要是為了使新用戶/專家用戶更容易管理Linux伺服器。在本文中,我們將討論Cockpit存取模式以及如何從CockpitWebUI切換Cockpit的管理存取。內容主題:駕駛艙進入模式查找當前駕駛艙訪問模式從CockpitWebUI啟用Cockpit的管理訪問從CockpitWebUI禁用Cockpit的管理訪問結論駕駛艙進入模式駕駛艙有兩種訪問模式:受限訪問:這是駕駛艙的默認訪問模式。在這種存取模式下,您無法從駕駛艙Web用戶

Android開發是一項繁忙而又令人興奮的工作,而選擇適合的Linux發行版來進行開發則顯得尤為重要。在眾多的Linux發行版中,究竟哪一個最適合Android開發呢?本文將從幾個方面來探討這個問題,並給出具體的程式碼範例。首先,我們來看看目前流行的幾個Linux發行版:Ubuntu、Fedora、Debian、CentOS等,它們都有各自的優點和特點。

《了解VSCode:這款工具到底是用來做什麼的? 》身為程式設計師,無論是初學者或資深開發者,都離不開程式碼編輯工具的使用。在眾多編輯工具中,VisualStudioCode(簡稱VSCode)作為一款開源、輕量級、強大的程式碼編輯器備受開發者歡迎。那麼,VSCode到底是用來做什麼的呢?本文將深入探討VSCode的功能和用途,並提供具體的程式碼範例,以幫助讀者

PHP在Web開發中是屬於後端。 PHP是一種伺服器端腳本語言,主要用於處理伺服器端的邏輯,產生動態網頁內容。與前端技術相比,PHP更多地用於與資料庫互動、處理使用者請求以及生成頁面內容等後端操作。接下來透過具體的程式碼範例來說明PHP在後端開發中的應用。首先,我們來看一個簡單的PHP程式碼範例,用於連接資料庫並查詢資料:
