npm和bower在功能上有必定的重合,但不是互斥关系,能够在项目中同时运用。区别在于npm在设计之初就采用了的是嵌套的依赖关系树。一个普通的前端包的依赖树比较长,npm 会将开发环境一块儿下载下来, 同时和其它安装包不能共享依赖代码。致使文件很是多,这种方式显然对前端不友好,不适合前端代码部署。bower则采用扁平的依赖关系管理方式,bower 只会下载编译后的前度模块,使用上更符合前端开发的使用习惯。前端
npm属于node模块的管理器。而bower是前端模块管理,npm主要运用于node.js项目的内部依赖包管理,安装的模块位于项目根目录下的node_modules文件夹内。而bower大部分状况下用于前端开发,对于CSS/JS/模板等内容进行依赖管理,依赖的下载目录结构能够自定义。node
实际项目中,咱们能够在后端能够采用npm管理依赖包, 在前端采用bower管理依赖包的组合使用模式。让先后端公用开发语言的同时,不一样端的开发工程师可以更好地利用手上的工具提高开发效率。npm