現在越來越多出名的js依賴包可以跨前后端共同使用,所以Bower和NPM上面有不少可以通用的內容。實際項目中,我們可以采用NPM作用于后 端;Bower作用于前端的組合使用模式。讓前后端公用開發語言的同時,不同端的開發工程師能夠更好地利用手上的工具提升開發效率。
npm主要運用于Node.js項目的內部依賴包管理,安裝的模塊位于項目根目錄下的node_modules文件夾內。而bower大部分情況下用于前端開發,對于CSS/JS/模板等內容進行依賴管理,依賴的下載目錄結構可以自定義。
bower是一個前端庫管理的工具,管理一些js庫,比如說jQuery,bootstrap 等。通過bower,你就不用自己去找jQuery文件了,通過配置文件就可以自動完成了。bower的安裝和升級全都依賴于npm:npm install -g bower。
npm 是伴隨Node.js 出現的一個包管理器,最開始只能支持 Node.js 的模塊管理,但是后來, npm 官網經過一次改版,打出的口號是,javascript 的包管理器,所以,其已經不在局限于是Node.js 的模塊管理了,已經通用到了所有 js 的包管理工具了,可以說,前后通吃了。
bower 的話,從一開始,就是專門為前端表現設計的包管理器,一切全部為前端考慮的。
npm 和bower 的最大區別,就是 npm 支持嵌套地依賴管理,而 bower只能支持扁平的依賴(嵌套的依賴,由程序員自己解決)
嵌套依賴,指的就是,你依賴的軟件包,還它自己的依賴,好像摘葡萄,一摘一大串。在服務器環境的時候,這并沒什么關系,因為存儲空間夠大,一切代碼都是本地運行,只要解決完依賴就行了,
但是到了用戶產品的瀏覽器里,就很成問題了,你不能讓用戶去下載好幾M的js代碼,那就太糟糕了。在這個情況下,就需要程序員自己手動解決用到的類庫的嵌套依賴問題。比如確保各種各樣的插件都依賴同一個版本的jQuery。
為什么很多項目 bower 和 npm 都用呢,那是因為要用 bower 管理前端的包,而用 npm 去管理一些后端的包和構建工具,例如,yeoman,grunt,gulp,jshint 等等等等。所有的包管理器,都自己的弊端,要視需要選用對自己的項目最合適的。
人可能會問,為何不用npm一個工具對前后端進行統一的依賴管理呢? 實際上,因為npm設計之初就采用了的是嵌套的依賴關系樹,這種方式顯然對前端不友好;而Bower則采用扁平的依賴關系管理方式,使用上更符合前端開發的使用習慣。
轉載:https://blog.csdn.net/littlegyy/article/details/59483611