近年來,Airbnb 這個分享經濟的代表性公司不僅在業務層面屢創新高,同時在開發技術上也勇妄前行,其中 JavaScript 技術的運用更是得到充分的展現。下面就來看看 Airbnb 在 JavaScript 方面的一些實踐、技巧和經驗,以及這些經驗所蘊含的智慧和價值。
使用 Airbnb 的前端組件庫 React 的同學們一定不會陌生 ES Lint。ES Lint 作為一個靜態的 JavaScript 語法檢查器,主要的作用是在開發時檢查代碼布局、語法規范、實踐規范以及潛在的錯誤等。Airbnb 作為業界先鋒,在 JavaScript 規范和實踐方面自然是表現出色。據悉,Airbnb 在其 React 項目中內置了一份專門針對 React 的 ESLint 配置,不僅涵蓋了語法規范,更包含了對 React 相關規范的一些約束。舉個例子,Airbnb 規定在 JSX 中使用單引號,而普遍的規范則是雙引號。
"rules": { "jsx-quotes": ["error", "prefer-single"], // 其它配置 }
另外,Airbnb 對代碼格式的嚴格程度也可謂是絲毫不馬虎。在遵循了 Eslint 標準化代碼規范之后,Airbnb 還制訂了自己的一套規定,比如空格、縮進、換行等。同時,各種命名規范、代碼 module 化等規范內容也一樣得到了很好的貫徹。
/* bad */ const foo = function() { console.log('hi'); }; /* good */ const foo = function () { console.log('hi'); };
除了 ESLint 相關的規范,Airbnb 在 JavaScript 技術實踐方面也有很多值得借鑒的地方。比如,在 React 的 Context API 中,Airbnb 強烈建議使用 createContext + useContext 的方式來傳遞值(而不是 Redux 等非必要的庫),這樣可以極大地簡化代碼的復雜度、減少渲染次數。
const MyContext = React.createContext(defaultValue); function MyComponent() { const value = useContext(MyContext); // ... }
再比如,在 Redux 數據流方面,Airbnb 不僅對 reducer 內分離出 action 處理邏輯、不傳遞多余的數據等問題文章處理,還專門針對 immer.js 進行了很多探究和嘗試,不斷探索最適合自己業務的方案。這種對框架者常規使用的評估和取舍,是前端開發工程師的一項必備技能。
總之,Airbnb 在前端技術實踐和規范方面的實踐,是前端開發者們需要學習的典范。今天我們所面對的前端領域變化極快,為了應對這種變化帶來的挑戰,學習 Airbnb 這樣業內的先進實踐經歷,是建立起自己技術文化建設的關鍵。希望大家都可以在這個技術革命時代找到自己的位置,推動整個前端行業共同進步!