12 個評估 JS 庫
- 特性。
評分:A - 化腐朽為神奇。B - 更優雅的解決方案。C - 比現有方案差
- 穩定性。
評分:A - BUG 很少,方便除錯。B - 不會影響你的穩定性,比如出 BUG 概率和你的業務程式碼相近。C - 引入該庫會讓你背線上故障。
- 效能。
評分:A - 小體積,高效能,支援各種黑科技特性比如 Tree shaking。B - 對效能沒有影響。C - 導致效能降低
- 包生態。
評分:A - 方案唯一且生態運作良好,維護記錄標準規範且順暢。B - 很多新晉網紅包,且競爭選擇多。C - 沒有人給你做包,想用要自己封裝。
- 社群。
評分:A - 各種論壇每日都很活躍,Github issue 問題日清。B - 論壇/聊天室不太活躍。C - 除了作者自吹的文件,再也找不到任何相關資訊了。
- 學習曲線。
評分:A - 一天就能成為這個庫的熟練搬磚工。B - 浪費了一週時間才能投入使用。C - 學了一週才發現之前的理解是錯的,而且認識到這只是個開始
- 文件。
評分:A - 專門維護文件站點、視訊、圖片、示例專案,再好一點的話可以有專門基金會組織程式設計比賽,通過某三歲孩子可以一天入門強力影射技術生態的完備性。B - 有最基本的 Readme 和 API 文件。C - Readme 寫的是 Create react app,其他的只能查原始碼了。
- 工具。
評分:A - 兩個以上的工具,包括瀏覽器擴充、程式碼編輯器擴充、CLI 工具或者 SaaS 服務,實力碾壓的話,會有許多花哨的輔助工具出現。B - 一個工具。C - 沒有工具。
- 發展歷史。
評分:A - 4 年以上歷史,有權威認證。B - 1-4 年曆史,已經有不少人使用過了。C - 作者自己都沒用過就安利你用到線上去。
- 團隊。
評分:A - 一線大廠,品質權威認證。B - 中型團隊維護,並且有清晰的分工記錄。C - 工作之餘順便開源出去,就沒打算對這個庫負責
- 相容性。
評分:A - 總是能相容升級,實在不行就提前警告並告知在某個版本會廢棄,並提供遷移工具,比如 React。B - 有 Break Change 但是文件把升級改動寫的很清楚。C - 突然到來的小版本升級讓你不得不重構之前的呼叫程式碼。
- 趨勢。
評分:A - 是 HackNews 的明星話題,Star 成千上萬,各種會議以此為名(Vue conf,React conf)。B - 幾百 Star,有一些討論。C - 別看現在 Star 少,遲早有一天我會超過那啥那啥。
- 搬家成本
如果哪天不用這個庫了,換成別的成本有多大?
這方面測試庫做的很好,很多主流測試庫比如 Jest、Ava、Mocha、Jasmine 等之間都有互轉的指令碼,業界基本達成了一些共識和規範。
比較坑的是 React、Vue、Angluar,使用之後你基本就被繫結了,至今沒有誰可以無縫做各大框架的遷移。當然 JS 的年齡還很短,而且說不好未來還會被新語言、技術、容器顛覆而成為歷史,標準化不是做不到而是需要時間,也許就在十幾年之後,但是今天就是做不到。
總結
程式設計師開發的工具庫也適合==點線面體==的概念。一個庫 react-button 就是一個點,而它所在的線 react 如果被人拋棄了,無數個 react-xxx 也會翻船。而 react、vue、angluar 這些線都在 js 引擎這個面上,當可以用 C# 寫 WebAssembly 時,Reason、Blazor、Dart 就會逐漸成為瀏覽器的主角,react 之類的庫統統要回爐打造。而當未來人機互聯不需要瀏覽器作為媒介時,js 引擎這個面依附的體 - 人機互動場景也被打翻了,這一浪又會引起多大的變化