Node环境和浏览器环境区别
内置对象不同
- 浏览器环境中提供了window全局对象
- NodeJS环境中的全局对象不叫window, 叫**
global
**
this默认指向不同
- 浏览器环境中全局this默认指向window
- NodeJS环境中全局this默认指向空对象{}
API不同
- NodeJS环境中没有
DOM/BOM
相关API
常用NodeJS 全局对象和方法
__dirname
: 当前文件所在文件夹的绝对路径filename
: 当前文件的绝对路径setInterval
/ clea`rInterval : 和浏览器中window对象上的定时器一样setTimeout
/clearTimeout
: 和浏览器中window对象上的定时器一样console
: 和浏览器中window对象上的打印函数一样
NodeJS模块化
CommonJS 规范
-
在CommonJS规范中一个文件就是一个模块
moduleA.js
是一个模块 -
在CommonJS规范中每个文件中的变量函数都是私有的,对其他文件不可见的
// this is moduleA.js file. let name = "moduleA"; function greetA() { console.log("hello~, this is moduleA"); }
-
在CommonJS规范中每个文件中的变量函数必须通过exports导出之后其它文件才可以使用
// this is moduleA.js file. // ... // 将模块 moduleA.js 导出给外界。否则,对其他文件将不可见 module.exports = { name: name, greetFromA: greetA, }
-
在CommonJS规范中想要使用其它文件导出的变量函数必须通过**require()**导入模块才可以使用
// this is main.js // 参数为路径字符串,倒入目标模块 let aModule = require("moduleA"); console.log(aModule.A); //[Output] moduleA aModule.greetFromA(); // [Output] hello~, this is moduleA
导出数据的四种方式
-
通过exports.xxx = xxx导出
-
通过module.exports.xxx = xxx导出
-
通过将导出对象赋值给
-