node.js是什么?和JavaScript有什么关系?
关于node.js究竟是什么,大家的问题在于
node.js是不是一门语言?
node.js是不是一个JavaScript库函数?
node.js是不是一个JavaScript框架?
很遗憾,这三个问题的答案都是NO,看看官方对自己的描述
Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
官方很明确地说node.js是一个platform,也就是一个做xxx的平台。node.js是一个可以在服务器端运行JavaScript的平台,其实这句话华也不准确,按照《JavaScript权威指南》《JavaScript高级程序设计》等书中的定义,JavaScript是由两部分组成
core JavaScript
client JavaScript(DOM、BOM)
而只有core JavaScript可以在node.js上运行,所以node.js借用了JavaScript的语法,但并不能用来处理浏览器对象(BOM)及文档对象(DOM),所以node.js并不是设计为在服务器端运行解析html文档的(当然有module可以做此事),所以“在服务器端运行的JavaScript”在一定程度上误导了初学者。
同时node.js并不仅仅运行core JavaScript,node.js中还有文件系统、模块包、操作系统API、网络通信、二进制类型处理等core JavaScript不具备的功能。
nodejs 底层*nix 与window的区别
node w3c js关系
在nodejs中引入模块,需要经历3个步骤:
1 路径分析
2 文件定位
3 编译执行
node中分为核心模块(http/fs/path)与文件模块
在node进程启动过程中,部分核心模块被直接加载进内存中,所以这部分核心模块引入时,文件定位及编译执行这两个步骤可以省略掉,并且在路径分析中优先判断,所以他们的加载速度是最快的。
每个模块文件中都存在require、exports、module这三个变量,甚至还有filename、dirname
|
|
这是因为编译过程中,node对获取的js文件进行了头尾包装,在头部加上了
|
|