脚本语言需要解析器才能运行,JavaScript是脚本语言,在不同的位置有不同的解析器,比如js语言写成html,浏览器就是它的解析器角色。对于需要独立运行的js,nodejs就是一个解析器。每个解析器都是一个运行环境,它不仅可以让js定义各种数据结构,进行各种计算,还可以让js使用环境提供的内置对象和方法来做一些事情。比如js在浏览器中运行的目的是为了操作DOM,浏览器提供了document等内置对象。js运行在nodejs中的目的是操作磁盘文件或者搭建http服务器,nodejs相应地提供了fs、http等内置对象。NodeJS的作者说,创建NodeJS的目的是为了实现一个高性能的Web服务器。他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言来实现他的想法。这种编程语言不能自带IO功能,需要很好的支持事件机制。JS本身没有IO功能,天生就是为了处理浏览器中的DOM事件,拥有一大批程序员,所以成为了理所当然的选择。如他所愿,NodeJS在服务器端活跃起来,大量基于NodeJS的Web服务出现。另一方面,NodeJS让前端如神器一般,终于可以让它的能力覆盖跳出浏览器窗口,更多的前端工具如雨后春笋般涌现。所以,对于前端来说,虽然不是每个人都需要用NodeJS来写服务端程序,但是简单到命令交互方式调试JS代码片段,复杂到写工具提高工作效率。
