开门见山,简单说:
- node.js本身不属于前端,但是属于前端的技术栈。
- node.js是前端工具链的重要成员,它参与前端开发,属于前端技术栈里的前端工具。类似于GWT,或者编辑器,它本身并不是属于前端。
- node.js是js的运行环境,即可以服务于前端,也可以服务于后端。
在这里我们要区分好前端,前端技术,前端技术栈,前端工具等词汇的区别。
前端是指浏览器的执行环境。相反的后端是指服务器的执行环境。
前端技术则是指浏览器端的应用开发技术,包括HTML, CSS, 浏览器JS,Flash,Activex, Applet 等技术。
前端技术栈是指所有辅助前端技术运行的技术,包括前端技术本身,但是又不完全与前端技术本身相同。
前端工具是前端技术栈里的一部分,但是又不属于前端技术。
所以如果你理解了以上的概念你就能更好的确定node.js与前端,前端技术,前端技术栈与前端工具之间的关系。
详细分析如下:
node.js不属于前端
经常有人说nodejs是前端,同时也有会出来反对说node.js是后端。
严格意义上讲node当然不属于前端。
因为Node一开始只是服务器端的js,但是现在的说法是node.js已经是js的一个运行时了。
它的核心是event driven, non blocking I/O,以及主要由npm构建的模块体系。
所以node.js本身与前端并没有关系,他是一个运行时.
node.js可以辅助前端开发
尽管nodejs不属于前端,但是node.js因为使用的语言是js。所以可以很好的辅助前端开发.
node.js繁荣了前端的构建工具
我们知道Web的开发体系中,分成前端,后端,工具,三个主要的领域。
前端主要由由浏览器,HTML+CSS+浏览器端JS完成。
后端主要是由Web服务器,数据库,动态脚本语言,其它的业务服务器等组成。
还有就是很多基础设计与便利资料,我们可以统称为工具。比如源码管理,编辑器,数据库备份,加密,解密,防火墙等一系列的工具。
那么node.js在前端开发里的作用主要还是工具的作用。主要表现在以下方面:
- 构件开发流程
主要是将前端的开发过程变的简化,自动化。这类软件主要有gulp, yo, grunt. - 构件项目文件
主要作用是将前端的代码组织起来,包括html, css, js都组成起来,并打包完成。这类工具主要有webpack, browserify, require.js, uglify等
通过上述的几个功能,就可以通过node.js将前端的代码组织起来,然后通过node的工具软件,将node.js的代码转化成前端的js代码。
所以在这种意义上来讲,可以认为node.js的开发是前端开发。但是不表示node.js本身是前端。
node.js是以工具的形式,参与到前端开发之中。
node.js的作用就相当于是JAVA的GWT。
它最终生成的是前端的JS,但是不能说Java属于前端(至少目前还不是)。
所以虽然前端开发对于node.js的依赖非常的强,但是node.js并不属于前端。
node.js只是大量的参与了前端工具链的工作,并提供了更多,更好的前端工具。