nodejs npm bower grunt 他们之间到底是什么关系?

2016-06-24 22:15:21 +08:00
 woshiyigexiaohao

我是一个普通的程序员,平时只是通过 FTP 以及编辑器工具 用一些 html jq scss 编写的 css 来制作网站.

后来我发现这些东西好像远远不够

我发现 git 上很多项目都是有类似的安装说明:

npm install -g grunt-cli npm install bower install npm start

下载的源文件我完全看不懂.

请问这些之间到底是啥联系?我该如何去学习他们?

6672 次点击
所在节点    Node.js
36 条回复
julyclyde
2016-06-24 22:30:29 +08:00
javascript :一门语言
V8 :语言引擎
nodejs :基于 V8 提供的运行环境
npm :包管理器

bower :过时了
grunt :过时了
glup :过时了
woshiyigexiaohao
2016-06-24 22:36:31 +08:00
@julyclyde 可以解释下三者的关系和和 nodejs 关系吗,拜托拜托💗
alexapollo
2016-06-24 22:41:57 +08:00
JavaScript 的环境问题总是蛋疼无比
YUX
2016-06-24 22:50:26 +08:00
现在都用 webpack 我也没弄太懂怎么配置 都是拖一个 Starter kit 然后在上面改
MyFaith
2016-06-24 22:50:28 +08:00
@julyclyde 关键时候过时了。 xD
SuperMild
2016-06-24 22:55:16 +08:00
一般来说,不是专门搞 nodejs 的,就不用管 nodejs 是什么了,可以简单理解为那是一个平台, npm 在上面运行,所以才需要安装 nodejs 。

npm 就是个包管理工具。非常优秀,非常好用,简单易用!

因此,才导致大家都用起来了,在前端领域想要安装个什么东西,他们都会让你 npm install 去。

主要是因为太好用了啊。找个教程花半个小时学习一下吧。
zkd8907
2016-06-24 22:57:30 +08:00
@woshiyigexiaohao
nodejs :基于 V8 引擎,运行在服务器上的 JavaScript 框架,让你能用 JavaScript 开发;
bower 和 npm 都是 JavaScript 的包管理器, nodejs 本身自带的框架有限,但是通过 bower 或者 npm 可以直接使用别人已经实现并且发布到网上的模块。
grunt 和 gulp 是 js 构建工具,可以实现诸如自动压缩代码、图片、混淆 js 等自动化的工作,简化前端开发流程(其实并不局限于前端)。 grunt 和 gulp 是用 JavaScript 实现的,它们必须运行在 nodejs 环境。 grunt 和 gulp 都可以通过 npm 进行安装。例如`npm install gulp grunt --save-dev`。
SuperMild
2016-06-24 22:57:44 +08:00
或者你跟着我这个简短的教程实际操作一下 v2ex.com/t/286414 会马上有直观感受。
bdbai
2016-06-24 23:02:23 +08:00
我来猜一下。
NodeJS 是在后端运行的语言。以下都需要 NodeJS 环境来运行:

NPM 是它的包管理器。
Bower 是前端依赖的管理器。我没用过。
Grunt 是用来构建前端项目的,比如写完代码 CSS 和 JS 压缩,自动刷新,自动测试、发布,配置好就可以一键完成。我用过它的替代品 Gulp 。
这么一套东西可以帮你更轻松地写前端项目。
SoloCompany
2016-06-24 23:54:08 +08:00
nodejs - 你说的所有东西都依赖它,一个基于 V8 的 js 运行环境

npm / bower - js 包管理(包括依赖管理和发布管理),前者设计用于服务端开发,后者设计用于前端开发(可以说是学 npm 的),后来大家都喜欢大一统了,所以 browsify 以及现在正火的 webpack 的出现(利用 npm 来做前端的包管理),使得 bower 变得越来越被边缘化

grunt / gulp : 都是前端工程化工具 / 构建工具,你可以理解为一堆预设的脚本和插件,可以辅助你构建前端项目,减少重复性的工作。但同样因为 webpack 的兴起而被越来越边缘化了
vjnjc
2016-06-25 00:30:20 +08:00
原来 gulp 和 bower 都过时了啊。。。我的思维还停留在那个年代
paulagent
2016-06-25 01:24:22 +08:00
@vjnjc 现在 webpack 的天下了吧。 不过这玩意更新换代真快。 angular 还没学会, react 又火爆起来
Sparetire
2016-06-25 02:51:07 +08:00
JS :语言,可以理解为一种规范
V8: 解释器吧,理解为 JS 这门语言的具体实现
Node: 有解释器还得有一票基础的类库吧,比如什么内置对象啊模块啊,就好像浏览器有 V8 也有 BOM 对象这些, Node 就简单理解为一个 V8 加一票模块 /类库就叫运行环境
NPM: 包管理器,帮你下载模块并解决依赖,比如你需要 A 库, A 依赖 BC , npm install A 就自动帮你下好 ABC
Bower: 没用过,好像也是个包管理器,过时了
Grunt: 构建工具,帮你压缩合并代码图片等等,过时了
Gulp/Webpack: 构建工具(Webpack 也算吧), Gulp 还算市面主流吧不过和 Webpack 比是过时些。。反正我都在学
DravenJohnson
2016-06-25 03:16:25 +08:00
Bower 是个 Frontend 的包管理器,更多用于类似 AngularJS 之类的这种前端框架管理和下载。和 Npm 类似但是 npm 主要更多是服务器端的。说 Bower 过时了我个人没有感觉, Grunt 和 Gulp 是差不多的东西, Grunt 过时了是的确
hronro
2016-06-25 07:17:09 +08:00
原来 gulp 过时了😂
learnshare
2016-06-25 08:15:47 +08:00
Webpack 和 Grunt/Gulp 不冲突,它也不是以一敌百的万能工具。
laoyur
2016-06-25 09:32:58 +08:00
贵圈真乱
vjnjc
2016-06-25 09:38:46 +08:00
@paulagent 哈哈哈,我就是那个会点点 angularjs 的,现在在赶 reactnative 。立志成为全站工程师,但是 web 端的技术栈一直在落伍 :)
haha1903
2016-06-25 09:39:59 +08:00
@julyclyde 这三个都过时了,替代品是?
tabris17
2016-06-25 10:15:29 +08:00
所以我才不要做前端ˊ_>ˋ

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288147

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX