前端使用JS脚本语言进行开发。
JS脚本语言需要依赖一个平台运行,从而生成可视化的东西。
Node.js提供这个平台,同时提供JS运行需要的一些插件、库、包、轮子、组件、功能等等。
JavaScript是一门脚本语言,它需要一个运行环境。就好像PHP需要Apache,JSP需要Tomcat等等(例子不全面,仅供理解)…… 而NodeJS之前,JavaScript运行环境是浏览器,也就是JavaScript在网页中才能跑起来。NodeJS之后JavaScript又多了一个运行环境,就是NodeJS。
由于NodeJS的最底层是Chrome的V8引擎,然后libuv封装了一些I/O的线程池管理和网络的I/O操作,这部分是C/C++写的。简单来说NodeJS可以控制系统文件的读写,网络的输入输出。所以NodeJS又可以被单纯的认为是一个可以运行 JavaScript 的服务器。(例子不全面,仅供理解)。
这些工具的起源和诞生几乎浓缩了前端的发展历程,因为 NodeJS 可以读写文件,监听网络输入输出。所以 NodeJS 和 VueJS、ReactJS、AngularJS 有非常本质的区别。NodeJS 是可以运行 JavaScript 的环境,剩下三个是用 JavaScript 写的库。
目前NodeJS大多被用于前端开发的开发环境。以Webpack作为例子,webpack是一个运行在 NodeJS 端的打包工具,它帮你把你写的 a.js, b.js, c.js ... 打包成一个 bundle.js。而这种打包的第一步是读取(文件读取能力)你的a.js, b.js, c.js ...,所以只能在 NodeJS 环境下做。
NodeJS 还能做啥?
用JS做服务器: Express / EggJS / HAPI / Koa 等等可以了解下
用JS做移动端混合应用:PhoneGap / Cordova / Ionic 了解下
用JS做移动端原生应用:React-Native / NativeScript / WEEX 了解下