CSS 模塊化 實(shí)現(xiàn)方法

最近被“模塊化”纏身,又是文章又是PPT的,想了很多相關(guān)的東西。整理下我這段時(shí)間對(duì)于“模塊化”的思考,大多都是我自己從事頁面重構(gòu)這份工作的經(jīng)驗(yàn)和理解,在一定程度上存在局限性,也希望自己能溫故而知新。
“模塊化”只是我們對(duì)于過去一直使用的技術(shù)、方法的一個(gè)新潮的稱謂,就像“Ajax”。不過做為頁面重構(gòu)發(fā)展的一種趨勢(shì),越來越被大家重視,不自覺也滿口的“模塊化”,只是你真的理解什么是“模塊化”嗎?
什么是模塊化?
對(duì)“模塊化”的解釋,在 CNKI 中就有28種??梢?ldquo;模塊化”思維使用的廣泛。最接近頁面重構(gòu)中的“模塊化”,現(xiàn)有的解釋應(yīng)該就是軟件開發(fā)中的解釋了。
先看一下百度詞條是怎么解釋“ 模塊化 ”的:
“ 模塊化是指解決一個(gè)復(fù)雜問題時(shí)自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。每個(gè)模塊完成一個(gè)特定的子功能,所有的模塊按某種方法組裝起來,成為一個(gè)整體,完成整個(gè)系統(tǒng)所要求的功能。模塊具有以下幾種基本屬性:接口、功能、邏輯、狀態(tài),功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內(nèi)部特性。在軟件的體系結(jié)構(gòu)中,模塊是可組合、分解和更換的單元。”
相關(guān)的書籍也蠻多的,有興趣的同學(xué)可以搜一下。需要強(qiáng)調(diào)一點(diǎn),我們所借鑒的是一種思維的方式。
頁面制作為什么需要模塊化?
站點(diǎn)內(nèi)容越來越多、代碼越來越臃腫,漸漸影響到了客戶端的體驗(yàn)(主要是打開速度),影響到了維護(hù)的效率。有什么方法可以解決這些問題呢?
我們很容易就想到:減少代碼冗余、提高代碼重用率、圖片壓縮等等,而這些要如何實(shí)現(xiàn)呢?模塊化思維可以解決,即可以有效減少代碼冗余、提高代碼重用率,更重要是可以支持到多人維護(hù),降低維護(hù)成本。CSS寫法較為靈活,容易產(chǎn)生代碼的耦合,使用模塊化也可以在一定程度上降低耦合度,對(duì)于BUG的定位也有幫助。所以,我們更應(yīng)該在站點(diǎn)前期就重視并使用“模塊化的思維”編寫站點(diǎn)。
我們之前經(jīng)常提到的站點(diǎn)性能優(yōu)化,有相當(dāng)一部分也是“模塊化”的內(nèi)容,比如提高代碼重用,提高開發(fā)效率等等,“模塊化”的優(yōu)點(diǎn)還有很多,我大概列了一下:
- 提高代碼重用率
- 提高開發(fā)效率、減少溝通成本
- 降低耦合
- 降低發(fā)布風(fēng)險(xiǎn)
- 減少Bug定位時(shí)間和Fix成本
- 提高頁面容錯(cuò)
- 更好的實(shí)現(xiàn)快速迭代
- 更好的支持灰度發(fā)布
其中最重要的一點(diǎn),我認(rèn)為是“提高代碼重用率”,這也是模塊化最重要的特點(diǎn)之一。
如何實(shí)現(xiàn)“模塊化”?
這里的主要問題是HTML與CSS的“模塊化”,我們可以看下?lián)Q膚的實(shí)現(xiàn)方法:
- 同一類名,換文件(JS)
- 同一文件,換類名(JS)
由此可知HTML與CSS的接口實(shí)現(xiàn):
- CSS引入的三種方式
- 類名
為了更好的實(shí)現(xiàn)這種接口,需要有相關(guān)的(交互、設(shè)計(jì)、頁面、開發(fā))約定、規(guī)則、規(guī)范,比如:所有當(dāng)前狀態(tài)都使用同一個(gè)類名“nonce”,所有變灰的表現(xiàn)都使用原類名后加“_n”,Tab的實(shí)現(xiàn)方式等等。有了這些約定、規(guī)則、規(guī)范后,HTML代碼就很容易可以實(shí)現(xiàn)模板化,統(tǒng)一接口規(guī)范。
有兩個(gè)誤區(qū)需要先認(rèn)清下:
- 模塊化后并不是就能被使用在任何位置(模塊化后的代碼段也是有適用的范圍限制,需要一個(gè)提供接口規(guī)則的環(huán)境)
- 模塊化后并不是就不能再變更(模塊化后的代碼段可根據(jù)實(shí)際需要做修改)
完全獨(dú)立的模塊放在同一項(xiàng)目中,由于項(xiàng)目有自己的表現(xiàn)、交互統(tǒng)一性,所以各模塊間必定出現(xiàn)類似的部分,這些部分可以被提出來做為公共的定義,減少冗余,這時(shí)就會(huì)出現(xiàn)耦合的問題,完全不耦合是不可能的,因此模塊化中很重要一點(diǎn)就是“適度的耦合”。有了公共定義,就得調(diào)整模塊樣式的實(shí)現(xiàn)方式了,而這種調(diào)整也會(huì)影響到“接口”的實(shí)現(xiàn)方式。
由于本篇主要是講模塊化的思維方式,具體實(shí)現(xiàn)的細(xì)節(jié)留待以后的文章中探討。
相關(guān)文章
- 本文的核心觀點(diǎn)為CSS的合并與模塊化,似乎與前一篇文章“CSS樣式的再分離”有矛盾,其實(shí)不然,分離可以精簡CSS代碼,合并也可以精簡CSS代碼,一切都是權(quán)衡,本文的“合并”2013-01-11
- 原生Js因jQuery的"write less,do more"變得極簡, Html因語義化編碼變得簡明, 那么, 有沒有一種方式讓Css也更加的高效精致呢? 當(dāng)然有, 那便是模塊化編碼.2011-01-27
- 網(wǎng)頁制作Webjx文章簡介:名字,你看名字多重要,我不太清楚,我寫書的話我的書被人改變名稱去誤導(dǎo)別人我是不喜歡的,這是我一直說的作為一個(gè)技術(shù)人員應(yīng)當(dāng)遵守的準(zhǔn)則——互聯(lián)2009-04-02
通過宜家的家具設(shè)計(jì)方法學(xué)習(xí)CSS模塊化
網(wǎng)頁制作Webjx文章簡介:去過宜家的同學(xué)應(yīng)該都有注意到,宜家的家具基本都是組合的,可拆裝,模塊化的特點(diǎn)也是這樣,可以組合,相對(duì)獨(dú).立,在需要的時(shí)候可以很方便的加上,那2009-04-02- 網(wǎng)頁制作Webjx文章簡介:我沒有看過CSS模塊化的相關(guān)書籍,所以我下面說的不一定正確,但是在工作中,我會(huì)用我理解的模塊化方式提高工作效率,我理解的模塊化,主要分為兩類2009-04-02
- 網(wǎng)頁制作Webjx文章簡介:這里著重講一下模塊化開發(fā)為后期維護(hù)帶來的好處! 首先,不管了不了解,鬼哥的這篇文章都可以看一下,從宜家的家具設(shè)計(jì)講模塊化ht2009-04-02
- 在Twinsen Liang的博客上看到一篇名為語義化單單的限定在html么?的文章,文中主要是提及了CSS的命名規(guī)則,仔細(xì)閱讀后,我認(rèn)為這個(gè)其實(shí)就是模塊化思想。(作者也提了這一點(diǎn)2009-02-04
CSS模塊化設(shè)計(jì)——從空格談起-CSS教程-網(wǎng)頁制作-網(wǎng)頁教學(xué)網(wǎng)
引子: 今天在藍(lán)點(diǎn)看了Yang的博客《CSS樣式表中繼承關(guān)系的空格與不空格》,思考了一下,本來想寫《CSS樣式的復(fù)合定義與復(fù)合調(diào)用及簡單的模塊化設(shè)計(jì)》,但是內(nèi)容太大,還是2008-10-17- 這篇文章主要介紹了css模塊化方案,css的模塊化方案可能和js的一樣多,下面簡單介紹幾種主要的模塊方案,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2019-01-09