npm和bower的区别

现在越来越多出名的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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 标签(空格分隔): npm和bower的区别 前端包管理器 序 前端富应用时代,写代码,基本不会从底层自己开始造轮...
    麦壳儿UIandFE2阅读 5,967评论 0 14
  • 标签(空格分隔): npm和bower的区别 前端包管理器 序 关键在于npm的依赖管理是奇特的倒向树结构(不同于...
    麦壳儿UIandFE2阅读 2,599评论 1 0
  • 最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容...
    忘川慕白阅读 6,002评论 7 113
  • 魂牵梦绕万事空,心无旁骛远八风, 真爱哪得两全法,不负妻儿不负卿。
    宋长河bear阅读 230评论 0 3
  • 我们都以为自己是只困兽,殊不知困住我们的亦是自己罢了
    木质鱼心阅读 136评论 0 0