一:模块module
每个js文件就是一个模块,每个模块都有一个初始化对象moudle(moudle是一个数组)
二:父模块引用子模块:
(1) Require(“路径”): 得到一个module对象
//1.先要导入模块(导入后是常量,故用const)
const md1=require("./module02");
//相对路径./路径 : 当前路径寻找
const md2= require("module03");
//直接写模块名 : 1)node_modules目录下的模块 2)找系统模块
(2) 通过得到的模块对象moudle的export属性传递数据
module.exports = {
a:a,
test:test
}
(3) 调用
console.log("打印module02里面的a1:"+md1.a1);
三:模块与模块之间的传值方式:
通过当前模块moudle的第一个子模块children[0]的export属性:就可以直接拿到val值了。Moudle.children[0].export.val,与上面的md1.a1等同,指向一致。
四:Moudle里的是一个数组;export里的是json对象Module {
id: '.',
exports: { a: 100, test: [Function: test] },
parent: null,
filename: 'e:\\HBuilder文件\\nodejs学习\\module\\node_modules\\module03.js',
loaded: false,
children: [],
paths:
[ 'e:\\HBuilder文件\\nodejs学习\\module\\node_modules',
'e:\\HBuilder文件\\nodejs学习\\node_modules',
'e:\\HBuilder文件\\node_modules',
'e:\\node_modules'
]
}
五:系统模块global:
(1) __dirname:拿到当前文件所在的目录,不包括文件名
console.log(__dirname);
输出:e:\HBuilder文件\nodejs学习\module
(2) __filename:拿到文件的全路径
console.log(__filename);
输出:e:\HBuilder文件\nodejs学习\module\module02.js
(3) setInterval():定时器
(4) SetTimeout():指定时间间隔循环执行
(5) SetImmediate():异步执行某个函数
六:系统模块process
(1) 进程对象,控制系统基本操作
(2) stdin:输入,要结合on事件
process.stdin.on("data",function(chunk){
//打印客户输入的内容
console.log(chunk.toString());
})
(3) stdout:输出
//process对象的stdout属性的write()方法:输出,不带回车换行
process .stdout.write("欢迎进入华信登陆系统\r\n");
(4) exit:退出整个程序
(5) argv:扫描数据
process.argv.forEach(function(val,index){
console.log(`${index}:${val}`)
})
在窗口中运行结果:
E:\HBuilder文件\nodejs学习\module> node module02 一 二 三
0:C:\Program Files\nodejs\node.exe
1:E:\HBuilder文件\nodejs学习\module\module02
2:一
3:二
4:三
七:Require第一次加载模块的时候,会在缓存区缓存,以便下次使用,提高效率。
(1) 获取缓存:require.cache 得到的也是json对象
(2) 清除缓存:delete require.cache[name] 缓存逐个删除
//用json模拟数据库存储账号和密码
const persons = {
user1:"pwd1",
user2:"pwd2",
user3:"pwd3"
}
//Object.keys():可以得到由对象属性名组成的数组
console.log(Object.keys(persons));
//输出:[ 'user1', 'user2', 'user3' ]
(3) Foreach()
//Object.keys(require.cache)拿到所有的键,再用所有的键去foreach遍历
Object.keys(persons).forEach(function(element){
console.log("键名:"+element+" 键值: "+persons[element]);
})
输出:
键名:user1 键值: pwd1
键名:user2 键值: pwd2
键名:user3 键值: pwd3
(4) 清除缓存:
Object.keys(require.cache).forEach(function(element){
delete require.cache[element];
})
八:Path模块:
(1) Join(“”,””,””):里放不定个路径参数,实现路径拼接,获取新的路径
const m = require("path");
console.log(m.join("D:\\webstorm软件安装\\WebStorm 9.0.3\\bin","runnerw.exe"));
输出:D:\webstorm软件安装\WebStorm 9.0.3\bin\runnerw.exe
(2) Dirname(“路径”); :获取指定路径的父文件夹路径
console.log(m.dirname("D:\\webstorm软件安装\\WebStorm 9.0.3\\bin\\runnerw.exe"));
输出:D:\webstorm软件安装\WebStorm 9.0.3\bin
(3) 注意区分:__dirname是global的属性;dirname是path的函数;
(4) m.extname(“路径”); : 得到后缀名
(5) m.parse(“路径”); :获得一个json对象,包括所有的内容。
console.log(m.parse("D:\\webstorm软件安装\\WebStorm 9.0.3\\bin\\runnerw.exe"));
输出:
{ root: 'D:\\',
dir: 'D:\\webstorm软件安装\\WebStorm 9.0.3\\bin',
base: 'runnerw.exe',
ext: '.exe',
name: 'runnerw'
}
(6) m.parse(“路径”).dir :(可以直接用这种方法将上面五个遍历出来)
console.log(m.parse("D:\\webstorm软件安装\\WebStorm 9.0.3\\bin\\runnerw.exe").dir);
输出:D:\webstorm软件安装\WebStorm 9.0.3\bin
(7) m.relative(‘路径1’,’路径2’); 得到其相对路径
九:fs模块:
对文件和目录进行操作,对文件夹的文件进行搜索和对文件的数据进行读取和写出。