什么是require?javascript
-Node使用CommonJS模块规范,内置require函数用于加载模块文件java
-require的基本功能是>读入并执行一个javascript文件,而后返回该模块的exports对象node
-若没有发现指定模块,则报错json
本身实现require函数缓存
-定义模块函数
-实现测试
注释ui
rquire扩展名对象
--require加载文件时能够省略扩展名blog
require加载文件规则
-经过 ./ 或者 ../ 开头
--按照相对路径从当前文件所在文件夹开始寻找模块
-经过 / 开头
--以系统根目录开始寻找模块
-不以 ./ 或 / 开头,分为两种状况
--表示加载的是一个默认提供的核心模块> 位于Node的系统安装目录中
--从当前目录向上搜索node_modules目录中的文件
---若是本身定义一个模块在node_modules目录中,而加载时不以 ./ 或 / 开头,直接以文件名加载,不管node_modules在什么位置,均可以被加载到,由于当加载时会一直向上去找,一直到找不到为止,此加载符合就近原则
-模块名称重复,系统模块的优先级别最高
require不只能够载入js模块,也能够载入JSON对象
-加载json文件,大部分用于读取配置信息
-require也能够加载文件夹,加载文件夹分为两种状况
--若文件夹中不存在package.json,直接加载文件夹内的index.js文件
--若package.json文件存在,则根据配置问价信息加载
模块的缓存
-第一次加载某个缓存时,Node会缓存该模块,之后再加载该模块,就直接从缓存取出该模块的module.exports属性(不会再执行该模块)
-若是须要屡次执行模块中的代码,通常可让模块暴漏行为(函数)
-模块的缓存能够经过require.cache拿到,一样也能够删除
间的的测试缓存
-模块
--module.exports = new Date();
-文件
执行文件能够看到,获得的毫秒是不变的,说明已经缓存。
清空缓存
-在加载模块以前进行缓存的清楚
-何时须要清楚缓存?
--因为能够加载json数据,因此每次数据更新时,须要同步更新json数据,此时就须要清除缓存,通常都是对数据作清除缓存操做
若是不须要缓存,能够将暴漏的属性改成暴漏方法(行为),由于暴漏的方法在每一次加载的时候都会执行,从而不会进行缓存。