全面解析js庫的可用性
從 12 個角度全面分析 JS 庫的可用性,分別是:
1.特性。
2.穩定性。
3.效能。
4.包生態。
5.社群。
6.學習曲線。
7.文件。
8.工具。
9.發展歷史。
10.團隊。
11.相容性。
12.趨勢。
解析觀點
1.特性
當你調研一個 JS 庫,功能當然是最重要的,就好比 React 的用於開發 UI 介面非常方便,這是流行起來的一部分因素。
但同時 React 解決的問題很聚焦,於是把例如 Router 和 Store 部分交給社群給解決方案,這就讓 Vue 的官方維護生態模式發展了起來。但這更多取決於你的偏好,像 lodash 這種精簡的庫也會長盛不衰,重要的是這個庫提供的能力是否解決了你的業務問題。
2.穩定性
這個庫如果經常出 BUG,那顯然無法在生產環境使用。最好經過嚴格的測試,保證這個庫一定不會出錯,這樣我們就可以專心排查業務的問題了。
3.效能
如果讓使用者 15 秒才能開啟網頁,那一切都是徒勞。
拿 PReact 為例子,為什麼 API 相同的輪子可以活下來?因為體積小,而且 PReact 把宣傳重點放在效能上。
4。包生態
用過 mnaco-editor 嗎?大家都在用 webpack 但它卻走 amd 路線,我不知道你用什麼方法讓它支援 commonjs 的,但這一定耽誤了你不少時間。
包生態包括第三方包的成熟度,包的使用難易度,支援多少種模組化方案,是否支援 TS,有沒有管理好自己的依賴等等。
開箱即用是最好的,有長期維護組織的更佳。
同時不要有太多相互競爭的社群方案為佳。比如工具庫用 lodash 這很容易,但 React 資料流方案選擇哪個?太多的競爭對手不斷寫軟文搶奪使用者(程式設計師)的注意力,試圖說服他們加班重構。
5.社群
能否快速在 Stack Overflow 搜到問題的答案能反映出社群的活躍度,不論是官方文件還是第三方進行的問答。
社群越活躍,幫你提前踩的坑就越多,如果你遇到一個大家都沒有遇到過的問題,並不代表你用得有多深度,而可能你根本就用錯庫了。
6.學習曲線
不要以為把庫功能做的強大,就算難用點也會有使用者跪舔,這是幻覺。
Vue 之所以那麼火爆,是因為原生 HTML 的門檻比 JSX 低,而使用 React 的使用者往往都覺得 JSX 比 HTML 門檻低。我也不知道該怎麼描述,從 JS 可以產生一切的角度,學習 HTML 反而被認為是高門檻的體現。
所以認清現實,JSX Star 多並不是其理論有多先進(理論確實先進),而是很多人覺得整體學習維護成本比 HTML 低。
7.文件
寫文件的人一般都是庫的作者,這種人一般經驗會比較豐富,寫起文件一般不會考慮初學者的感受,所以找到一份對初學者友好的文件還是挺不容易的。
對於庫的維護者,要站在初學者角度去寫文件,站在使用者角度,如果文件開頭就看不懂的話,最好儘早換個文件或者換個庫。
8.工具
工具可以從多個維度體現出這個庫的優勢,首先是確實帶來了使用方便,其次展示了團隊維護實力的雄厚(精力溢位到可以做周邊工具了)。
Redux 之所以這麼火,Redux dev tools 功不可沒,筆者讀過一些心理學書籍,也經歷過一些技術選型,看到 Redux dev tools 的圖形化介面後,大腦因為受到視覺衝擊比理性的邏輯思考大太多,潛意識裡給 Redux 加了不少分,導致討論結果都變得不太理性了。
如果你的庫能圖形化表達,或者做一個 PPT 或者輔助工具,那一定會大大加分。(React chrome 外掛在開啟 react 做的網頁時亮起來真的很酷,這個勳章很有儀式感,以至於我不想換一個框架)
9.發展歷史
一個 Star 10K 的庫,如果最早提交是十天前,就算不是刷的也最好也不要用,因為不知道哪天作者就不再維護了。
歷史越悠久的庫使用風險越小,除非它所在的面被淘汰(技術棧、生態、程式語言等等)。
10.團隊
看誰是這個庫背後的男人。大公司廣泛使用的開源庫,並且有一定國際影響力,而且大廠也有成功開源歷史經驗的話,就會增加說服力。
但 Vue 就是個例外,幾乎憑尤大一人之力打造,對這種情況,筆者想說的是,一個真心熱愛技術並踐行全職維護的人,也許比一個揹著 KPI 的團隊維護副產品更靠譜。
11。相容性
除了瀏覽器相容性,庫 API 的相容性也非常重要。當你很容易聯絡到作者,並且改動 API 的建議被很快採納時,你就要小心了。
React Router 3 -> 4 升級帶來的陣痛大家都有體會過,babel7 放棄 stage 0-4 也帶來不少吐槽,Angular1 和 Angular2 的區分直接讓很多人粉轉黑了。雖然許多時候頻繁的更新是為了增添新功能,但如果帶來 API 相容問題,反而會招來反感。
假如你們團隊維護的 10 年間,因為某個庫作者非常勤奮的更新導致以時間為維度,均勻分佈了數十種不同的版本,你會發誓下一個專案不再使用這個庫了。
12。趨勢
炒作也好,討論也好,保持大家對這個庫的新鮮關注非常重要,因為這能連帶的讓這個庫做好上面說的很多點。
但注意過分的炒作,可能會降低這個庫的穩定性,畢竟在使用者爆發式增長之前,最好有一部分當小白鼠。
搬家成本
如果哪天不用這個庫了,換成別的成本有多大?
這方面測試庫做的很好,很多主流測試庫比如 Jest、Ava、Mocha、Jasmine 等之間都有互轉的指令碼,業界基本達成了一些共識和規範。
比較坑的是 React、Vue、Angluar,使用之後你基本就被繫結了,至今沒有誰可以無縫做各大框架的遷移。當然 JS 的年齡還很短,而且說不好未來還會被新語言、技術、容器顛覆而成為歷史,標準化不是做不到而是需要時間,也許就在十幾年之後,但是今天就是做不到。
在這裡給大家分享一下,我是一名5年前端工程師,自己建了一個q群:731771211 ,群裡不停更新最新的教程和學習方法,加入一起學習與交流
相關文章
- 2024年最受歡迎的Vue.js元件庫 - ViewDesign全面解析Vue.js元件View
- this 全面解析
- this全面解析
- JavaScript 中的 this 全面解析JavaScript
- 解析 SQL 的 java 類庫 jsqlparserSQLJavaJS
- this全面解析(二)
- this 全面解析(一)
- JavaScriptCore全面解析JavaScript
- VLayout全面解析
- Json解析之Gson庫JSON
- iOS動畫全面解析iOS動畫
- find 命令全面解析
- ios 全面解析blockiOSBloC
- 全面解析PHP的糟糕設計PHP
- Java 中泛型的全面解析Java泛型
- 5、pgpool-II高可用性(一)資料庫的高可用性資料庫
- MySQL資料庫的高可用性分析MySql資料庫
- 全面解析JavaScript中this指向JavaScript
- Redux 原始碼全面解析Redux原始碼
- Java 註解全面解析Java
- Java註解全面解析Java
- iOS UIButton 全面解析iOSUI
- 使用cJSON庫對JSON格式進行解析JSON
- 推薦一個Json解析庫JSON
- DB2資料庫移植常見問題全面解析DB2資料庫
- 一個非常棒的Go-Json解析庫GoJSON
- C語言 JSON 解析庫 - MJSON使用介紹C語言JSON
- oracle資料庫不同啟動命令和關閉命令全面解析Oracle資料庫
- 全面解析Js陣列遍歷對原陣列的影響及返回值JS陣列
- 使用Javascript 開發個JSON解析庫JavaScriptJSON
- 全面解析Flutter Platform Channel原理FlutterPlatform
- Android之Activity全面解析Android
- Python_類全面解析Python
- 結果集 (ResultSet)全面解析
- Linux dd命令全面解析Linux
- 全面解析 qiankun 原始碼原始碼
- 異常處理全面解析
- JSON介紹及Android最全面解析方法(Gson、AS自帶org.son、Jackson解析)JSONAndroid