JS 和 CSS 間戰火熊熊,該如何熄滅?

Jothy發表於2019-02-01

原文作者:Andrey Sitnik (PostCSS 作者)

譯者:UC 國際研發 Jothy

寫在最前:歡迎你來到“UC國際技術”公眾號,我們將為大家提供與客戶端、服務端、演算法、測試、資料、前端等相關的高質量技術文章,不限於原創與翻譯。


太長不看版:有許多人同時熱愛著 JS 和 UX/CSS/etc. 如果我們不再給別人貼上“JS 開發者”或“UX 開發者”的標籤,我們將止住“JS vs CSS”的戰火,更接近和平。

(譯者注:UX, User eXperience 縮寫)


戰爭真實存在

有人稱之為「巨大的鴻溝」:真實存在的前線上,一邊站著 JavaScript 頑固派,另一邊站著無 JS 介面方法的 UX/CSS 擁護者。

前端開發者們害怕,一旦他們忽視了 JavaScript 鋪天蓋地的宣傳,就會丟掉工作。這完全可以理解:CSS 已經過時了。與 JS/React 及其他類似技術相比,CSS 大會和見面會(meetup)的數量要少得多。舉個例子?,紐約有 6+ 個 JS 見面會,0 個常規 CSS 見面會。

另一方面,由於純粹的社群恐慌症(FOMO), 簡單的靜態網站被過度地開發。

我們看到,前端社群的大牛們?每天都在互相推卸責任,怎麼說呢,感覺挺遺憾的。



縱觀全域性

交戰派通常分為?️:

  1. “JS-JS-JS”:使用 React, Vue.js 和 Angular 等客戶端 JavaScript 框架創作 SPA 的開發者。他們是無數構建工具(Babel, Webpack, etc.)和 JS 庫的重度使用者。

  2. “UX 開發者”, “CSS 開發者”, “HTML-JS-CSS 開發者”:使用原生 JavaScript 和原始 CSS 製作靜態網站的開發者,無障礙(Accessibility)和效能是其社群中最重要的主題。

但是我們有必要這麼劃分嗎?也許這種二元論僅僅是出於我們自身的偏見?

在我看來,主要有兩件事情導致了這種偏見。

首先,大家傾向於將 CSS 和 JavaScript 會議分開。我認為這是由非常受歡迎且成功的 JSConf/CSSConf 系列活動,以及 Put-Your-Own-City-Here.js 見面會的趨勢引起的。各大內容平臺也進行了劃分:有主要釋出 React/JS 文章的,也有側重於 CSS 和 UX 的。

其次,社交網路容易將社會兩極化。我們訂閱興趣相投者的資訊流,沉浸在他們的虛幻世界中。而且更極端的做法是,只轉發他們最最激進的觀點。

當今網路極其複雜,要掌握其背後所有的技術難比登天,沒有誰能真正自稱為 100% 的“全棧”開發者。但是,現如今 JS 和 CSS/UX 的討論已經如此(人為地)分離,志向不同(但不一定對立)的人,被灌輸了非黑即白的“JS vs CSS”世界觀。對 CSS 動畫和 a11y(accessibility) 滿懷激情的 React 開發者會被打上“JS folks”的標籤。一個喜歡 Babel 和零執行時 CSS-in-JS 的 CSS 開發者,仍然會被當成“CSS 小男孩/女孩”。


二者都喜歡的人

作為 PostCSS 的作者,即使我曾想過要選,也沒法真正做出抉擇。因為一方面,PostCSS 是一個 CSS 工具(因之得名)。而另一方面,PostCSS 又是一個 JavaScript 構建工具,而構建工具在當今 CSS 社群中並不被廣泛接受。

而且並不是只有我這麼想,還有很多人持有類似的看法:優秀的 React 動畫工具作者、CSS a11y linter 的作者,等等。

講真的,我們每個人都只瞭解一小部分技術,一個人也不一定只對某一個主題有興趣。你完全可以同時喜歡 React 和 CSS. 或者使用複雜的構建系統來確保你正確實踐了 a11y. 或者,你可以為了在糟糕的網路連線之上建立良好的 UX, 而深入學習分散式系統。

甚至技術本身也不是非黑即白的。

BEM 常被“CSS 派”的支持者當成避免混淆 CSS-in-JS 的方法提及。但鮮有人知它並非 Yandex 設計的純 CSS 技術!它還包含一個 Javascript 框架以及最初的一套想法,後來在 React 中得以實現(比如巢狀小的獨立元件)。

ESLint 配置在 React 社群中很流行(如 AirBnB 配置),它包含許多 a11y 規則。


解決方案

我認為戰爭真實存在。而如果我們不再將開發者分為黑白兩類,我們就可以停止這場戰爭。

1. 如果你同時喜歡這兩種技術:請大聲說出來!讓大家看到,這樣我們就可以進行文明的討論。你喜歡現代 JS 框架,也喜歡開發完全不涉及客戶端渲染的靜態網站是嗎?那就告訴全世界。如果開源作者看到了需求,他們將為靜態網站建立更多的框架。

2. 讓我們在公共論壇討論 JS 和 CSS 吧。如果你正在組織 JavaScript 見面會,請留出一天時間進行 CSS/UX 演講。我們來進行“前端”會議,而不是“JS 會議”和“CSS 會議”,來自不同陣營的人們可以在這裡和對手討論他們的日常問題,以及首選解決方案。

3. 試試「對方」的技術吧:

  • 如果你是 CSS/UX 開發者,請從 linter 開始,Stylelint 是個不錯的選擇。它能進行錯誤警告,支援在整個團隊中共享最佳實踐。你可以把它作為外掛新增到你最喜歡的文字編輯器中,這樣你無需 bundler 就可以開始了。

  • 如果你是 React 開發者,請在你的下個登入頁面或部落格上試試原生 JS. 這能幫助你更好地理解框架的內部原理,你的 JavaScript bundle 體積會更輕,你的使用者也將感謝你提升了效能?。


原文地址:

https://dev.to/evilmartians/css-and-js-are-at-war-heres-how-to-stop-it-158a


好文推薦:

每個 JavaScript 開發者都該瞭解的 ES2018 新特性



“UC國際技術”致力於與你共享高質量的技術文章

歡迎關注我們的公眾號、將文章分享給你的好友

JS 和 CSS 間戰火熊熊,該如何熄滅?






相關文章