Node和模块介绍
什么是NodeJS
Node: javascript runtime 运行解析器
js解析器: 浏览器-bom/dom api
node-v8 - fs, http ... api
设计
NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。
安装,运行
权限问题
在Linux系统下,使用NodeJS监听80或443端口提供HTTP(S)服务时需要root权限,有两种方式可以做到。
一种方式是使用
sudo命令运行NodeJS。例如通过以下命令运行的server.js中有权限使用80和443端口。一般推荐这种方式,可以保证仅为有需要的JS脚本提供root权限。
$ sudo node server.js另一种方式是使用
chmod +s命令让NodeJS总是以root权限运行,具体做法如下。因为这种方式让任何JS脚本都有了root权限,不太安全,因此在需要很考虑安全的系统下不推荐使用。
$ sudo chown root /usr/local/bin/node $ sudo chmod +s /usr/local/bin/node
模块
编写稍大一点的程序时一般都会将代码模块化。
在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。
在编写每个模块时,都有
require、exports、module三个预先定义好的变量可供使用>>>>>> exports 和 module.exports 的区别和联系
模块初始化 (用过的模块会被缓存)
一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用
主模块
通过命令行参数传递给NodeJS以 启动程序的模块被称为主模块。 (程序入口)
主模块负责调度组成整个程序的其它模块完成工作。例如通过以下命令启动程序时,
main.js就是主模块。$ node main.js二进制模块
NodeJS也支持使用C/C++编写二进制模块

浙公网安备 33010602011771号