模块系统
console.log(""+a); 得到的a也是一个字符串; console.log("",a); 得到的a是原来的类型 数字型,布尔型 等等。
- 加载和导入
加载 :require 导入:exports
node中,exports = module.exports,且最后 return module.exports exports只是module.exports的简便方法 (引用类型)
module { exports { } }
导出多个成员: exports.xxx = xxx module.exports = {} 导出单个成员:module.exports = ?
- require是一个方法;
- 它的作用1、 加载文件模块并执行里面的代码;2、拿到被加载文件模块导出的接口对象
- 在每个文件模块中都提供了一个对象:exports
- exports默认是一个空对象
- 要做的就是把所有需要被外部访问的成员挂载到这个exports对象中。
- 在node中,模块有三种:
- 具名的核心模块,例如 fs,http
- 用户自己编写的文件模块
1、相对路径必须加./ 2、可以省略后缀名(推荐) 3、相对路径中的./ 不能省略,否则报错
iii. 第三方模块
art-template (npm install)
- 在 node中,没有全局作用域,只有模块作用域。
外部访问不到内部 内部也访问不到外部 默认都是封闭的
既然是模块作用域。那如何让模块与模块之间进行通信。有时候,我们加载文件模块的目的不是为了简简单单的执行里面的代码,更重要的是为了使用里面的某个成员。
核心模块
1、文件操作的fs 2、http 服务的 http 3、url 路径操作模块 4、path 路径处理模块 5、os操作系统信息
node为js提供了很多服务器级别的API,这些API绝大多数都被包装到了一个具名的核心模块中了。
例如文件操作的fx
核心模块,http服务构建的http
模块,path
路径操作模块,os
操作系统信息模块。。。
要想使用核心模块必须:
var fs = require('fs'); var http = require('http');