nodejs笔记一(模块概念)

原创 夏天不做梦 随笔 Nodejs 348阅读 2017-05-27 18:50:47 举报

核心模块 http fs path

文件模块 var util = require('./util.js')

第三方模块 var promise = require('bluebird')

require

1.
require命令用于加载文件,后缀名默认为.js

2.路径规则
如果参数字符串以“/”开头,则表示加载的是一个位于绝对路径的模块文件。比如,require('/home/marco/foo.js')将加载/home/marco/foo.js。

如果参数字符串以“./”开头,则表示加载的是一个位于相对路径(跟当前执行脚本的位置相比)的模块文件。比如,require('./circle')将加载当前脚本同一目录的circle.js。

如果参数字符串不以“./“或”/“开头,则表示加载的是一个默认提供的核心模块(位于Node的系统安装目录中),或者一个位于各级node_modules目录的已安装模块(全局安装或局部安装)

3.通过入口文件加载
require方法可以通过这个入口文件,加载整个目录
package.json文件中将入口文件写入main字段
{ "name" : "some-library",
"main" : "./lib/some-library.js" }
如果找不到则会加载该目录下的index.js文件或index.node文件

4.删除缓存模块
所有缓存的模块保存在require.cache之中,如果想删除模块的缓存,可以像下面这样写
// 删除指定模块的缓存
delete require.cache[moduleName];
// 删除所有模块的缓存
Object.keys(require.cache).forEach(function(key) {
delete require.cache[key];
})

5.检测是否是主模块
可以用如下的方法检测出当前的模块是否是主模块
if(module===require.main){
console.log("当前模块时主模块");
}

6.在node中,可以使用这个函数来查询某个模块文件完整绝对路径的文件名.
var url=require.resolve("./2");
console.log(url);
//输出结果:E:\node\gys\2.js

7.require.main
判断模块是直接执行,还是被调用执行。
直接执行的时候(node module.js),require.main属性指向模块本身。
require.main === module
// true

8.module
每个模块内部,都有一个module对象,代表当前模块。它有以下属性。
module.id 模块的识别符,通常是带有绝对路径的模块文件名。
module.filename 模块的文件名,带有绝对路径。
module.loaded 返回一个布尔值,表示模块是否已经完成加载。
module.parent 返回一个对象,表示调用该模块的模块。
module.children 返回一个数组,表示该模块要用到的其他模块。
module.exports 表示模块对外输出的值。

module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

exports变量指向module.exports
等同在每个模块头部,有一行这样的命令
var exports = module.exports;

exports与module.exports的区别

如果一个模块的对外接口,就是一个单一的值,不能使用exports输出,只能使用module.exports输出

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复