摘要: 本文講的是bower 和 npm 的區(qū)別詳細(xì)介紹, 簡(jiǎn)單的說(shuō),npm是進(jìn)行后端開(kāi)發(fā)中,使用的模塊安裝工具,而bower,是前端的模塊安裝工具。 比如,在安裝express,socket.io時(shí),當(dāng)然使用的是npm,那么比如bootstrap,jquery等前端框架,需要使用bowe
簡(jiǎn)單的說(shuō),npm是進(jìn)行后端開(kāi)發(fā)中,使用的模塊安裝工具,而bower,是前端的模塊安裝工具。
比如,在安裝express,socket.io時(shí),當(dāng)然使用的是npm,那么比如bootstrap,jquery等前端框架,需要使用bower
前端技術(shù)和工程實(shí)踐真的是突飛猛進(jìn)啊,想當(dāng)年,我這個(gè)半業(yè)余前端吭哧吭哧做頁(yè)面的時(shí)候,哪有這么多東西可以用啊,現(xiàn)在先進(jìn)到我都完全看不懂了。本文主要講一下同是包管理器的bower和npm的差別。
主要也是在stackoverflow看來(lái)的,翻譯加一部分自己的理解。
npm 是伴隨 Node.js 出現(xiàn)的一個(gè)包管理器,最開(kāi)始只能支持 Node.js 的模塊管理,但是后來(lái), npm 官網(wǎng)經(jīng)過(guò)一次改版,打出的口號(hào)是,javascript 的包管理器,所以,其已經(jīng)不在局限于是
Node.js 的模塊管理了,已經(jīng)通用到了所有 js 的包管理工具了,可以說(shuō),前后通吃了。
bower 的話,從一開(kāi)始,就是專門(mén)為前端表現(xiàn)設(shè)計(jì)的包管理器,一切全部為前端考慮的。npm 和 bower 的最大區(qū)別,就是 npm 支持嵌套地依賴管理,而 bower只能支持扁平的依賴(嵌套的依賴,由
程序員自己解決)。
嵌套依賴,指的就是,你依賴的軟件包,還有它自己的依賴,好像摘葡萄,一摘一大串。在服務(wù)器環(huán)境的時(shí)候,這并沒(méi)什么關(guān)系,因?yàn)榇鎯?chǔ)空間夠大,一切代碼都是本地運(yùn)行,只要解決完依賴就行了,
但是到了用戶產(chǎn)品的瀏覽器里,就很成問(wèn)題了,你不能讓用戶去下載好幾M的js代碼,那就太糟糕了。在這個(gè)情況下,就需要程序員自己手動(dòng)解決用到的類庫(kù)的嵌套依賴問(wèn)題。比如確保各種各樣的插件
都依賴同一個(gè)版本的jQuery。
為什么有很多項(xiàng)目 bower 和 npm 都用呢,那是因?yàn)橐?bower 管理前端的包,而用 npm 去管理一些后端的包和構(gòu)建工具,例如,yeoman,grunt,gulp,jshint 等等等等。
所有的包管理器,都有自己的弊端,要視需要選用對(duì)自己的項(xiàng)目最合適的。
重點(diǎn)來(lái)說(shuō)說(shuō)NPM和Twitter推出的名為 Bower 的包管理器之間到底有什么樣的關(guān)系和區(qū)別呢?(Bower的官網(wǎng)寫(xiě)到,Bower 是 "A package manager for the web" ,難道說(shuō)NPM就不是了嘛)。
其實(shí),在實(shí)際項(xiàng)目中,NPM和Bower都會(huì)被運(yùn)用進(jìn)去。并且Bower的安裝和升級(jí)全都依賴于NPM,使用如下命令就可以全局安裝Bower
npm install -g bower
之后你就可以使用
bower install [#]
類似于NPM的方式,對(duì)于當(dāng)前項(xiàng)目進(jìn)行前端依賴的相關(guān)管理。使用起來(lái)和NPM一樣方便快捷。
其中,與NPM最大的區(qū)別在于,NPM主要運(yùn)用于Node.js項(xiàng)目的內(nèi)部依賴包管理,安裝的模塊位于項(xiàng)目根目錄下的node_modules文件夾內(nèi)。而B(niǎo)ower大部分情況下用于前端開(kāi)發(fā),對(duì)于CSS/JS/模板等內(nèi)容進(jìn)行依賴管理,依賴的下載目錄結(jié)構(gòu)可以自定義。
以上是云棲社區(qū)小編為您精心準(zhǔn)備的的內(nèi)容,在云棲社區(qū)的博客、問(wèn)答、公眾號(hào)、人物、課程等欄目也有的相關(guān)內(nèi)容,歡迎繼續(xù)使用右上角搜索按鈕進(jìn)行搜索前端 , 程序員 , 模塊 , 代碼 , 前端開(kāi)發(fā) 用戶 bower npm 區(qū)別、npm和bower的區(qū)別、bower和npm有什么區(qū)別、bower和npm區(qū)別、npm bower,以便于您獲取更多的相關(guān)知識(shí)。
(原文地址:https://yq.aliyun.com/ziliao/40449)
聯(lián)系客服