克軍談CSS(《Sass與Compass實戰》推薦序)
回顧一下做過的專案,會發現我們曾經多麼忽視CSS!JavaScript有著高大上的設計模式和模組規範,分佈在精心設計過的目錄裡,而CSS僅僅被簡單地堆積在一個檔案裡。它不重要嗎?前端開發最基本的任務就是還原設計,離不開用CSS實現那些複雜的佈局和絢麗的效果(後面還會提到它在移動Web開發中的重要性)。它簡單嗎?HttpArchive統計全球Top100網站平均單個頁面CSS達到31 KB,在頻繁的迭代中維護它們並不輕鬆。更不要說眾所周知的痛點——瀏覽器相容性了。CSS既然如此重要,又不簡單,為什麼沒有像它的小夥伴JavaScript那樣得到重視和發展呢?
種種原因中有一個很明顯——它不是語言。CSS開發是基於渲染原理和W3C標準(及事實標準)來設計規則的,這裡邊沒有演算法,沒有資料結構,沒有邏輯控制。這讓習慣語言開發的程式設計師無從生成思路。一個好的後端程式設計師可以很快掌握JavaScript,但面對CSS就會變得茫然無助。於是便會簡單粗暴地把所有程式碼隨意寫在一起,所有佈局都用float實現。表面上看把問題解決了,實際上是在到處“埋雷“,到處補“破窗“。這種慢性後果並沒有激發CSS在語言方面更快發展。保持簡單,複雜的效果讓Javascript/Flash去幹吧,似乎問題就能迴避。但很快移動端的崛起打破了秩序,先是把Flash宣判了,JavaScript在手機上的效能和能耗成為瓶頸,CSS3則在GPU的作用下看起來異常完美,於是一下子被推上風囗波尖。曾經那些塵封的草案又被喚醒。各大瀏覽器廠商競相實現最新特徵。炫酷的2D/3D動畫效果、高階的FlexBox佈局……CSS3一夜之間上了頭條。隨著應用的深入,最初的快感很快退去,新的相容性問題又來了,瀏覽器的種種bug,鬧心的廠商字首,剛學到就被廢棄的標準......在這種形勢下CSS的開發想保持簡單也難。
浮華過後,人們開始認真思考如何提高CSS的開發效率和可維護性等工程問題。Sass早在2007年誕生於“工具控”的Ruby社群,開始服務的物件自然是Ruby工程師,是為了讓他們能像寫Ruby那樣寫CSS。直到推出SCSS這種語法風格,Sass變得更像是CSS的擴充套件和增強,可以跟原生CSS混寫,很快被前端工程師接納了。現在在我的專案裡,一眼望去都是.scss檔案。據我所知,國內各大網際網路公司前端團隊的CSS開發也都轉向Sass或LESS。如果你是前端工程師或有志成為前端工程師,非常有必要把這塊納入到自己的技能體系中。
Sass讓CSS變成語言,可以像其他語言那樣去組織模組、封裝、複用程式碼,讓CSS開發看上去非常有“設計感“。在大規模的網站開發中,Sass的用法變得至關重要。其實任何工具都是雙刃劍,用好事半功倍,反之則有破壞性。比如,寫Sass很容易就寫出多層巢狀,生成的CSS選擇器就會有很多級,不僅低效,維護上也很頭疼,以至於出現BEM這種用法。在程式碼設計上,繼承和混合器有什麼區別,怎麼抽象和封裝更好,等等這些由用法引申出來問題值得在實踐中潛心思考。
在技術社群裡經常能看到各種文章介紹Sass的用法或觀念或技巧,辨清優劣,吸收精華,前提是要先對它有系統的瞭解。雖然也能搜到不少中文資料,但很碎片且質量參差不齊。像我這種東看點西看點的人,之前著實走過不少彎路。在一次前端標準化交流會(w3ctech)上,正好碰到李鬆峰老師,吐槽如今光是引進一些介紹眼下流行的JS庫的書,實際上某些JS庫雖然流行但在專案中未必適用。反倒像Sass如此普及而且適用面又廣的技術,沒有一本中文書。沒想到鬆峰老師很快就促成本書的引進,並找到錦江(勾三股四)等有豐富開發經驗的人翻譯。我對本書的出版充滿期待,並相信本書一定會把更多人帶入CSS的世界。
克軍
2014.3.4
相關文章
- 浪潮之巔作者吳軍推薦序——《推薦系統實踐》
- 談談“實戰”薦
- css 屬性書寫順序推薦CSS
- SASS&Compass語法學習
- 薛良斌:Sass和Compass早期實踐者寄語
- opensuse13.2安裝 sass和compass
- 《虛擬化與雲端計算》推薦序一薦
- 【新遊推薦】組建奧術戰團,迎戰千軍萬馬!
- 百萬推薦關係優化實戰優化
- 《MySQL效能優化和高可用架構實踐》簡介與推薦序MySql優化架構
- Airflow 實戰軍規AI
- 推薦系統雜談
- 《Web效能權威指南》推薦序Web
- 前端之Sass/Scss實戰筆記前端CSS筆記
- SASS入門與實踐
- 使用 Sass mixin 實現 CSS 的居中效果CSS
- 推薦7個Python上手實戰專案Python
- CSS除錯工具推薦—IETesterCSS除錯
- 訪談嘉賓推薦(圖靈訪談)圖靈
- 《軟體定義網路》推薦序
- 《松本行弘的程式世界》推薦序
- [TEAP早期試讀]《敏捷武士》推薦序敏捷
- Flutter實戰 | 從 0 搭建「網易雲音樂」APP(三、每日推薦、推薦歌單)FlutterAPP
- python書籍推薦-Python爬蟲開發與專案實戰Python爬蟲
- VDI序曲九實戰體驗RemoteFX(重磅推薦)REM
- Transformer學習資源&順序推薦ORM
- CSS grid佈局好文推薦CSS
- 推薦15個 JavaScript 和 CSS 庫JavaScriptCSS
- CSS 前處理器—sassCSS
- 戰地5遊戲配置要求 《戰地5》最低電腦配置與推薦配置遊戲
- Compass建立者Chris Eppstein:真正的CSS框架是如何工作的(圖靈訪談)CSS框架圖靈
- 推薦閱讀《Tensorflow:實戰Google深度學習框架》Go深度學習框架
- 【機器學習PAI實戰】—— 玩轉人工智慧之美食推薦機器學習AI人工智慧
- 推薦 7 個牛哄哄 Spring Cloud 實戰專案SpringCloud
- 《Tensorflow:實戰Google深度學習框架》圖書推薦Go深度學習框架
- 網際網路個性化推薦與精準營銷實戰視訊教程
- 『遊戲推薦』使命召喚:二戰遊戲
- HTML-CSS顏色樣式(推薦)HTMLCSS