npm和bower的區(qū)別

標(biāo)簽(空格分隔): npm和bower的區(qū)別 前端包管理器


前端富應(yīng)用時(shí)代纺蛆,寫代碼器仗,基本不會從底層自己開始造輪子了丹锹,盡管你想鍛造自己的技藝班套,但是丟過來的項(xiàng)目周期不允許你肆無忌憚的慢悠悠的潛心雕琢。所以我們怎么辦佳恬,前端開發(fā)助力軍為了互相解放捏境,為了千千萬萬的基層程序員也能過上正常下班的生活于游,有些自己貢獻(xiàn)的代碼庫毁葱,匯總到一個(gè)地方---叫“npm”;說白了贰剥,就是托管我們第三方的服務(wù)器倾剿,上面提供一系列的下載,版本管理的功能服務(wù)蚌成。

區(qū)別

npm的依賴管理是倒向樹結(jié)構(gòu)(不同于linux越底層依賴越星岸弧),層層遞歸担忧。一個(gè)普通的前端包的依賴樹非常冗長芹缔,甚至可能觸及windows下256字符的路徑長度限制。同時(shí)和其它安裝包不能共享依賴代碼瓶盛。導(dǎo)致文件非常多最欠,不適合前端代碼部署。而bower讓模塊開發(fā)者定義了簡潔的輸出文件惩猫。不過下一代 npm3 會從根本上改善這一問題芝硬,所有依賴包會水平處理共享。隨著CommonJS普及轧房,前后端今后統(tǒng)一使用npm是大勢所趨拌阴。

二者功能上是一樣的,
兩個(gè)都是包管理器奶镶,bower偏重于前端一些迟赃。例如在html文件中直接引入第三方的依賴,我們側(cè)重使用bower-components里的資源厂镇。

為什么用它們

1.節(jié)省時(shí)間纤壁。

沒用Bower之前,每次需要安裝jQuery的時(shí)候剪撬,都需要去jQuery網(wǎng)站下載包或使用CDN版本摄乒。但用了Bower,你只需要輸入一個(gè)命令,jquery就會安裝在本地計(jì)算機(jī)上馍佑,你不需要去記版本號之類的東西斋否,你也可以通過Bower的info命令去查看任意庫的信息。

2.脫機(jī)工作拭荤。

Bower會在用戶主目錄下創(chuàng)建一個(gè).bower的文件夾茵臭,這個(gè)文件夾會下載所有的資源、并安裝一個(gè)軟件包使它們可以離線使用舅世。如果你熟悉Java旦委,Bower即是一個(gè)類似于現(xiàn)在流行的Maven構(gòu)建系統(tǒng)的.m2倉庫。每次你下載任何資源庫都將被安裝在兩個(gè)文件夾中 —— 一個(gè)在的應(yīng)用程序文件夾雏亚,另一個(gè)在用戶主目錄下的.bower文件夾缨硝。因此,下一次你需要這個(gè)倉庫時(shí)罢低,就會用那個(gè)用戶主目錄下.bower中的版本查辩。

3.可以很容易地展現(xiàn)客戶端的依賴關(guān)系。

你可以創(chuàng)建一個(gè)名為bower.json的文件网持,在這個(gè)文件里你可以指定所有客戶端的依賴關(guān)系宜岛,任何時(shí)候你需要弄清楚你正在使用哪些庫,你可以參考這個(gè)文件功舀。

4.讓升級變得簡單萍倡。

假設(shè)某個(gè)庫的新版本發(fā)布了一個(gè)重要的安全修補(bǔ)程序,為了安裝新版本辟汰,你只需要運(yùn)行一個(gè)命令列敲,bower會自動更新所有有關(guān)新版本的依賴關(guān)系。

眾所周知莉擒,npm(Node Package Manager)是nodejs時(shí)代不可或缺的最好的包管理器酿炸,現(xiàn)在已經(jīng)隨nodejs官方包同時(shí)會安裝到你的設(shè)備上去。只要給項(xiàng)目書寫好package.json放于項(xiàng)目根目錄涨冀,在重新部署之時(shí)只需要執(zhí)行 npm install一行簡單的命令填硕,所有相關(guān)的依賴就能夠自動安裝到項(xiàng)目目錄下面,并且還能很方便的對不同項(xiàng)目的不同依賴包版本進(jìn)行良好鹿鳖、統(tǒng)一的管理扁眯。

Bower

NPM和Twitter推出的名為Bower 的包管理器之間到底有什么樣的關(guān)系和區(qū)別呢?(Bower的官網(wǎng)寫到翅帜,Bower 是 "A package manager for the web" 姻檀,難道說NPM就不是了嗎?)涝滴。

其實(shí)绣版,在實(shí)際項(xiàng)目中胶台,NPM和Bower都會被運(yùn)用進(jìn)去。并且Bower的安裝和升級全都依賴于NPM杂抽,使用如下命令就可以全局安裝Bower

npm install -g bower

之后你就可以使用

bower install [#]

類似于NPM的方式诈唬,對于當(dāng)前項(xiàng)目進(jìn)行前端依賴的相關(guān)管理。使用起來和NPM一樣方便快捷缩麸。

有人可能會問铸磅,為何不用NPM一個(gè)工具對前后端進(jìn)行統(tǒng)一的依賴管理呢? 實(shí)際上杭朱,因?yàn)閚pm設(shè)計(jì)之初就采用了的是嵌套的依賴關(guān)系樹阅仔,這種方式顯然對前端不友好;而Bower則采用扁平的依賴關(guān)系管理方式弧械,使用上更符合前端開發(fā)的使用習(xí)慣八酒。

不過,現(xiàn)在越來越多出名的js依賴包可以跨前后端共同使用梦谜,所以Bower和NPM上面有不少可以通用的內(nèi)容丘跌。實(shí)際項(xiàng)目中,我們可以采用NPM作用于后端唁桩;Bower作用于前端的組合使用模式。讓前后端公用開發(fā)語言的同時(shí)耸棒,不同端的開發(fā)工程師能夠更好地利用手上的工具提升開發(fā)效率荒澡。

小結(jié)、

其中与殃,與NPM最大的區(qū)別在于单山,NPM主要運(yùn)用于Node.js項(xiàng)目的內(nèi)部依賴包管理,安裝的模塊位于項(xiàng)目根目錄下的node_modules文件夾內(nèi)幅疼。而Bower大部分情況下用于前端開發(fā)米奸,對于CSS/JS/模板等內(nèi)容進(jìn)行依賴管理,依賴的下載目錄結(jié)構(gòu)可以自定義爽篷。

ps:部分截取網(wǎng)絡(luò)資源的整理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悴晰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逐工,更是在濱河造成了極大的恐慌铡溪,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泪喊,死亡現(xiàn)場離奇詭異棕硫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袒啼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門哈扮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纬纪,“玉大人,你說我怎么就攤上這事滑肉∮耍” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵赦邻,是天一觀的道長髓棋。 經(jīng)常有香客問我,道長惶洲,這世上最難降的妖魔是什么按声? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮恬吕,結(jié)果婚禮上签则,老公的妹妹穿的比我還像新娘。我一直安慰自己铐料,他們只是感情好渐裂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钠惩,像睡著了一般柒凉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上篓跛,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天膝捞,我揣著相機(jī)與錄音,去河邊找鬼愧沟。 笑死蔬咬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沐寺。 我是一名探鬼主播林艘,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼混坞!你這毒婦竟也來了狐援?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拔第,失蹤者是張志新(化名)和其女友劉穎咕村,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚊俺,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懈涛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泳猬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片批钠。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宇植,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出埋心,到底是詐尸還是另有隱情指郁,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布拷呆,位于F島的核電站闲坎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茬斧。R本人自食惡果不足惜腰懂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望项秉。 院中可真熱鬧绣溜,春花似錦、人聲如沸娄蔼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岁诉。三九已至锚沸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唉侄,已是汗流浹背咒吐。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留属划,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓候生,卻偏偏與公主長得像同眯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子唯鸭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理须蜗,服務(wù)發(fā)現(xiàn),斷路器目溉,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持明肮,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠缭付,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 3,657評論 2 27
  • 導(dǎo)語: 之前一直有聽說RequireJS柿估,但是一直都沒機(jī)會去了解,只知道它是一個(gè)給js做模塊化的API陷猫。最近在做R...
    wuqke閱讀 40,917評論 11 78
  • 什么是模塊化開發(fā)秫舌? 前端開發(fā)中的妖,起初只要在script標(biāo)簽中嵌入幾十上百行代碼就能實(shí)現(xiàn)一些基本的交互效果,后來js...
    半世韶華憶闌珊閱讀 654評論 0 0
  • 如何寫作的建議以及寫作的益處 作為一個(gè)寫作者足陨,我可以保證嫂粟,靈感這東西,是越用越多的墨缘,只要你保持挖掘的頻繁和強(qiáng)度星虹,今...
    三不主義閱讀 103評論 2 1