Node 中的 JavaScript
- EcmaScript : 没有 DOM 和 BOM
- 核心模块
- 第三方模块
- 用户自定义模块
一、核心模块
Node 为 JavaScript 提供了很多服务器级别的 API,这些API绝大多数都被包装到一个具名的核心模块中了。
例如:
文件操作的 fs 核心模块
http服务构建的 http模块
path路径模块
os 操作信息模块
…
也就意味着只要某一个模块是 核心模块,我们想要使用它,就必须要进行 require 操作: var fs = require(‘fs’);
require是什么,用来干嘛?
require 是一个方法,作用 是用来 加载模块 的,在 Node 中,模块有三种:
-
具名的核心模块,例如 fs、http
-
用户自己编写的文件模块(说白了就是一个 js 文件):
相对路径必须加 . / (否则会报错) ,而且可以省略后缀名 . js
执行顺序依然是从上到下,遇到require就执行,结束后继续执行下方的 JavaScript 代码
例如:在 a.js 里加载 b.js ---------------- require(’./b.js’);
这也是在 Node 中执行多 js 文件的方式 -
require 方法的两个作用:
1.加载文件模块并执行里面的代码
2.拿到被加载文件模块导出的接口对象( exports )
在每个文件模块中都提供了一个对象 exports, exports 默认是一个空对象
我们需要做的就是把所有需要被外部访问的成员挂载到这个 exports 对象中,例如:
在 Node 中,没有全局作用域,只有模块作用域:
外部访问不到内部,内部也访问不到外部 ------ (绝对的互不影响)
(简单点说就是出了当前的 js 文件以后就不管用了,只能执行,不能访问里面的变量或者其他资源)
- 既然是模块作用域,那如何进行模块与模块之间进行通信:
(例如:需要 a 访问 b 里的成员)
需要模块间通信的原因:有时候我们加载文件模块的目的不是为了简简单单的执行里面的代码,更重要的是为了使用里面的成员
二、用户自定义模块
- require
-
exports
用户自定义模块和核心模块的使用方法都是一样的,只不我们看不到核心模块的代码而已,也就是源码。
三、第三方模块
第三方模块里的 API 很多,在官网 ( nodejs.org ) 有明确详细的解释,可以自行查看。