什么是node.js
JS是个脚本语言,需要解析器才能运行,浏览器之所以能够执行JS,是以为浏览器充当了一个解析器的角色。而对于相对独立的JS来说,node.js就是一个解析器。
任何操作系统下安装nodejs本质上做的事情是将nodejs执行程序复制到一个目录,以便于终端下可以执行node命令。
运行在浏览器中的JS是操作DOM,而运行在NodeJS中的js是操作磁盘文件或者搭建http服务器的。
有啥用处
NodeJS作者创建这个脚本的目的是为了实现高新能的WEB服务器。
什么是模块
编写稍微大一点的程序时一般都会将代码模块化。在NodeJS中一般将代码拆分到不同的JS文件中,每个文件就是一个模块,而文件路径就是模块名。
require
require函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块到处的对象。模块名可以使用相对路径(以./开头),或者是绝对路径。另外,模块名中的==.js==扩展名可以省略。例如
var foo = require('./foo');
exports
exports 是当前模块的导出对象,用于到处模块公有方法和属性。别的模块通过==require==函数使用当前模块时得到的就是当前模块的==exports==对象
module
通过module对象可以访问当前模块的一些相关信息,但是改对象最大的用途是替换当前模块的导出对象。例如模块导出对象默认是一个普通的对象,如果想改成一个函数的话,那么可以使用以下方式:
module.exports = function () {
console.log('Hello World!');
};
模块初始化
一个模块中的js代码仅仅是在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象,之后,缓存期导出对象并被重复利用。
主模块
通过命令行启动nodejs的模块被称为主模块,相当于程序入口。例如:
node index.js
index.js就是主模块,主模块主要负责调度组成整个程序的其它模块完成工作。
包
我们已经知道了JS模块的基本单位是单个JS文件,但是复杂些的模块往往是由许多个子模块组成的。为了便于管理和使用,我们把由多个子模块组成的大模块称为包
,并把所有子模块放在同一个目录里。