標題黨。這篇文章斷斷續續的修改過好幾次,也沒有滿意,本來是想總結一下我這些零散的 css 知識結構,可能由於知識體系不全面,總是沒能把知識點串聯成乙個通順的內容。貼出來權當大家一起討論下「前世今生」。文章後續可能會不定時更新。
css 作為 web 的基礎部分,極其容易上手。但是 css 並不算的上是一門程式語言,在語言能力上略顯薄弱,往往導致整體的維護性變差。但是這並沒有使得大家停止對 css 的探索,從命名規範,目錄架構,預處理器(如sass
),後處理器(postcss
),模組化等等的方向上,努力把 css 變得更好。
最早遇到的大概的是命名的問題了吧,因為本身積累的詞彙量就少,動不動就沒單詞可用了。那個時候好像也就是網上列出一大堆像menu
,siderbar
之類的「命名大全」來模仿。再到後來接觸到了bootstrap
這種比較系統的框架(裡面有好多可以值得借鑑的地方),而後又看到一些按類別劃分檔案,再配有特有的字首的管理方式(那個時候還並不知道smacss
的名詞),還有一些原子化,把功能和樣式分離等等的。在sass
興起的時候其實挺興奮的,因為終於感覺有了點程式設計的能力,當然了,對變數,巢狀,mixins
等等的使用,很大程度上提高了程式設計效率。在後來同事的分享中,又了解了 bem 的命名方式(初看很亂,了解後有一種豁然開然的感覺,細細回想起來,也就是大家約定一套共用的命名規範)。以及通過postcss
去實現 css 中一些自動處理的任務。在 react/es6/webpack 出現後,使得很大一部分程度上,css 寫在 js 中的方式也開始在特定的場合中頻頻出現。
以上,通通出現過我的專案中,在專案切換維護的時候,那感覺,心如刀割。並不是說上面涉及到的知識點有對錯的問題,只是在乙個團隊中,如果沒有一些統一的架構和約定,往往到專案的後期會變得越來越不穩定。這不禁又讓我想起了 css 的學習曲線(像php?又來黑了),樣式大家都能寫,能愉快的維護,又是另乙個層次了。
個人覺得 css 中有兩個比較重要的點,語義化和可維護性,而最終都是為了提高開發的效率。
語義化很大一部分程度上是為了閱讀需要,簡易明了。建議團隊內還是要盡量的保持風格一致。其它的,可以看一下css語義思維的內容,這裡不展開講了。
可維護性真的是乙個很虛的概念,但是涉及到了多方面的各個點。比如,該怎麼保持專案的簡單性,靈活性,而同時又有足夠的擴充套件能力?又比如如何抽取模組,是以功能劃分還是以樣式結構?如何重用樣式?如何防止樣式被覆蓋,避免冗餘**等等。
除了一次性的單頁面這種外,一般專案型別的,都建議在開始的時候就搭好底層,統一一下整體風格與使用習慣,保持良好組織結構,命名規範,不然越往後面,可能會遇到更大的問題。
比如,對檔案做乙個層次劃分
採用類似bem/suit
等等的命名方式等等。
其實我們在平時應該或多或少的接觸過一些sass
,compass
,bem
,smacss
,oocss
的概念與設計模式。當然並沒有一種解決方案是絕對的,合適當前的專案就可以了。
bem用於解決專案命名規則問題。bem 通過已block(塊)
,element(元素)
,modifier(修飾符)
的概念,使用連線符串聯父級塊作為字首,來實現功能模組命名的唯一性。有興趣的同學可以看一下 bem的進化史。發現一句話並不太好表述清楚,想要具體了解的同學可以移步官網。
bem
這種唯一性以及元素間的平級展開,往往在稍微複雜一點的專案裡,就會把名字命名的很長很長。目前也有很多是在bem
的基礎上衍生出來的一些方式(如suit
)。
oocss (object oriented css)
物件導向 css。是一種已物件導向的維護方式去管理組織 css **。其哲學理念是模組化,功能單一性,關注點分離。
oocss 中有兩個重要的原則
oocss
與sass
結合是乙個不錯的選擇,充分強大。
smacss(scalable and modular architecture for css)
可擴充套件和模組化 css。
把 css 樣式劃分為若干個不同類別的檔案,如基礎,布局,模組,主題等等。在加上一些特有字首的組合。
acss (atomic css)
原子化 css。遵循關注點分離原則。
隨著react
的迅速引爆,其它關於 css 的另一種使用方式也在興起。將樣式在 js 中定義。借助require/import
而解決了 css 中的命名空間的問題,使得單檔案變得簡單清晰。而通過組合,也可以實現快速的重複利用。甚至有些 css 可以單獨與元件去繫結。
以及其它的一些方式。上述的方式,是比較讓我眼前一亮的感覺。
待補充...
a b的偽命題
網上流行一道題,內容如下 假設a b,則,a a a b,a a b b a b b b,b a b a b a b a b b,b b b,或a a b,2b b,或2a b,結論 1 2.對於 這道題,給出了正解,如下 b a b a b a b 這個之後是不能同時除以a b這個項 因為a b ...
私有雲是個偽命題??
王文彬 在我看來,私有雲是個偽命題。我們對雲計算的認知和定義是一種公共服務,如同水電一樣,使用者只需要使用但不需要自建電廠。很多人在講私有雲,但私有雲的背後其實是迎合一種心理上的安全,因為對雲計算的不信任,認為資料 資源 應用放到私有雲中更安全。這句話不妥,這不是乙個信任的問題,而是乙個隱私問題。企...
2020 03 15 沒事幹是偽命題
23 00 意志的自由就是高興地做自己必須做的事情。卡爾 榮格 現在的雙手寫著字還稍微有些擅抖,剛扛完十多斤的生活糧食回到家。想想從昨天到今天的路程,大概八百公里路吧,為了接孩子,為了跟家人團聚,再奔波,也值得。有時候,家真的是乙個永遠不會錯的方向。工作可以迷茫,學習也可能會有迷惑,但家的路是絕對清...