javascript - 為什麼要有套件管理器?或說它是做什麼的?
滿天的星座
滿天的星座 2017-05-19 10:16:42
0
2
439

找了很多資料訊息,都很沒有明確的解釋這個,有誰可以幫我解釋一下嗎?

滿天的星座
滿天的星座

全部回覆(2)
曾经蜡笔没有小新

至少有兩點好處:

  1. 復用別人已經寫好的程式碼

  2. 管理包之前的依賴關係

第一點很明顯了:你不會為每個專案寫一個 jQuery、React 這樣的東西,而是直接使用別人已經寫好的。傳統做法是:去官方網站下載對應的 js 文件,然後放到自己專案的對應路徑下,例如 /assets/js/ 。而現在有了 npm 和 yarn 這樣的東西,99.9999 % 的開放獲取的包都在一個集中存放的地方,方便了查找和下載。就好比原來你要到各處去下載軟體,現在有了 360 軟體管家,只需要在這裡搜尋下載就好了。少了很多時間。

第二點其實是第一點的發展版。因為大家寫的包包都放在這裡了。如果我要寫一個新的包,裡面的一個小程式剛好是別人已經寫好的,所以我就拿來用了。這樣就是我的包包對別人的包包有了依賴關係。一個大型的庫(包)這個依賴關係可能很複雜,例如:依賴幾十個別的包,同時,每個包都要求對應一個確定的版本(因為版本相差太大,可能會有API不相容的情況)。這樣,如果人工去下載每一個依賴的包,將是一個指數級的任務:

A 套件依賴 B 和 C,同時 C 依賴 D 和 E,B 又依賴 F、G、H,D 又依賴 I、J、K……

如此,基本上是人類無法完成的任務。

當然,在沒有套件管理器之前,也沒有人寫包會依賴於這麼多其它人的包,結果當然就是重複勞動:每個包都把一些常用的功能自己實現一遍。

以上是我暫時能想到的用處,如果想到別的,再來補充。

小葫芦

00

你寫了一個函數 並用來工作

function add(x, y){
    return x + y; 
}

01

在那個活兒幹完之後,你開始乾新的活兒了。 現在你又需要這個函數了,而且你需要做改進:

function add(x, y, z){
    return x + y + z; 
}

很簡單 直接複製貼上過來 然後再加上 z 即可

02

你在 01 幹的活兒 讓add可以接受三個參數 是一個新版本的 了。
然而 你又接到了新活兒, 這次你又要做出改進:

function add(){
    var arr = Array.prototype.slice.call(arguments); 
    return arr.reduce((acc, cur) => acc + cur, 0); 
}
// add(1) => 1 
// add(1, 2) => 3 
// add(1, 2, 3) => 6

99

你做了無數改進。 有一天你又需要 00 中的簡單加法函數的時候:
———— 你在你做過的 99 件活裡慢慢的翻你曾經的代碼。 。 。 。然後拷貝過來

這是一件很麻煩的事。 。 。

包管理器把這些活兒都自動化了。 你可以打包你的程式碼,然後簡單的 require 引用 而且用npm指令一鍵安裝(還可以指定版本)

重複麻煩的事情都會由程式設計解決

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板