給項目裝了個 NPM 包,被 CTO 大罵了一頓?
大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心~
平時我們在寫代碼的時候,有時候有一些功能比較難實現(xiàn),或者市面上已經(jīng)有現(xiàn)成的庫,那么我相信很多人會毫不猶豫地去安裝這個包,并投入到開發(fā)中去使用~
但是其實這樣是不對的,為了保證項目的健壯性、可維護性、可持續(xù)性,建議大家在安裝一個包的時候,一定要先經(jīng)過一定的評估,并且這個評估是多方面的,分別是:
- 特性是啥
- 穩(wěn)定性如何
- 性能如何
- 生態(tài)、社區(qū)、文檔
- 學習成本高不高
- 兼容性怎么樣
- 趨勢如何
了解庫的特性
第一點肯定是要了解你所安裝的包有哪些特性,是否真的符合你的項目需要,就比如我用 Vue 來開發(fā)頁面,是因為使用它的響應式來開發(fā)頁面非常方便,分離了視圖層和數(shù)據(jù)層,代碼可維護性更高。
或者比如 lodash 這樣的的工具庫,完全就是為了每一個項目而生的,使用率非常高。
在選庫的時候一定要了解庫的特性,了解一下:這個庫是否能完美解決你的需求?這個庫是否功能過剩?如果功能過剩的話是否需要換另一個更簡潔的庫?
庫的穩(wěn)定性如何?
一個庫的穩(wěn)定性是非常重要的,這也關系到你項目的穩(wěn)定性,你總不會想要給你的項目埋一顆定時炸彈吧?
一個經(jīng)常出 BUG 的庫是不能出現(xiàn)在生產(chǎn)環(huán)境的,所以選了一個庫之后,最好能好好調(diào)研下這個庫的穩(wěn)定性,多測試測試。
庫的性能怎么樣?
為什么大佬們選庫的時候都會選體積更小的庫呢?或者支不支持 tree-shaking 呢?那是因為體積越小,說明頁面運行的速度更快。
你覺得這個庫很牛逼,但是用了它,頁面加載多了 5s ,那這個庫就是垃圾,需要馬上換掉,這就不是一個符合你們項目的庫。
生態(tài)如何?
一個庫的生態(tài)包括很多方面:
- 文檔齊不齊全: 文檔是這個庫的說明書,所以文檔是很重要的,這決定了你能不能最大發(fā)揮這個庫的功能。
- 社區(qū)活不活躍: 社區(qū)活不活躍,決定了在使用這個庫的時候可以少踩一些坑,因為社區(qū)活躍說明你的坑,很多人都踩過了。
- 對應的周邊庫多不多: 就比如 Vue 配套了 router、vuex、pinia 等等,讓你在使用這個庫的時候,能更好地、按需地,去拓展你想要的項目需求。
學習成本
使用一個庫,學習成本可太重要了,畢竟學習是需要時間的,而時間就是金錢??!
我覺得有一句話挺有道理的:開發(fā)一個庫的第一要素,就是要讓使用者能無腦地去使用。
拿 Vue 來舉例子,前端程序員,稍微有點基礎的,差不多幾天就能上手 Vue,并利用 Vue 去開發(fā)一些簡單的頁面,所以 Vue 的學習成本是很低的,這也是它能爆火的原因。
反觀 JSX 又很多人覺得用起來不夠無腦,維護起來也麻煩,所以很多項目都放棄使用 JSX。
所以在調(diào)研的時候,一定要看這個庫的上手難易程度如何,在某些場景最好是能做到無縫銜接。
兼容性怎么樣?
先不說庫了,就是你在使用一個 JavaScript 或者 CSS 的 API 時,你也得上 MDN 查查這個 API 的兼容性如何。
而 NPM 庫 肯定底層是依賴 JavaScript、CSS 的,所以這些庫肯定也是有兼容性問題的。
比如 Vue 就不兼容 IE,因為很多比較新的 JavaScript API 都不兼容 IE 瀏覽器,所以也導致了 Vue 不兼容 IE 瀏覽器。
所以在用一個庫的時候一定要調(diào)研一下兼容性,或者說能不能通過某些措施,讓這個庫具備比較好的兼容性。