node.js
1.node.js
node.js是运行在代码环境上的语言;
javascript代码运行在node中,node.js是语言,node是运行环境;
2.node.js组成
js由三部分,ECMAScript,DOM,BOM;
node.js由ECMAScript和node环境下的API;
3.node.js全局对象global
在浏览器中全局对象是window,在node中全局对象是global;
node全局对象的几个方法可以在任何地方使用,global可以省略;
//在控制台输出
console.log();
//设置超时定时器
setTimeout();
//清除超时时定时器
clearTimeout();
//设置间歇定时器
setInterval();
//清除间歇定时器
clearInterval();
4.模块的导出和导入
一个js文件就是一个模块,在模块内定义的变量和函数默认情况下外部无法得到;
node.js提供了exports
和require
关键字用来导出导入模块数据;
//a.js文件
//在模块内定义一个箭头函数
const add = (n1,n2)=>n1+n2;
//将add导出,让其他模块使用
exports.add = add;
//b.js文件
//在b.js模块内引入a.js
let a = require('./a.js');
//输出a模块的的加法函数
console.log(a.add(100,200));//控制台输出300
注意: 在b.js文件中导入的实际就是a.js中的exports对象;
1.模块导出的方式有两种:
(1).exports.属性名 = 属性值;
(2).modules.exports = 值;
2.exports是module.exports的别名(地址引用关系),导出对象最终是以module.exports为准;
(1).不能写exports = {}; 错误写法
(2).exports.fn = function(){ } 和 module.exports.fn = function(){} 二者等价;
3.当module.exports以{ }方式整体导出时会覆盖exports的属性和方法;
4.若一个模块没有导出任何成员,导入的时候是空对象;
5.系统模块
5.1 fs模块:文件操作
fs.readFile()读文件
//1.通过模块名字fs对模块进行引用
const fs = require('fs');
//2.通过模块内部的readFile读取文件内容
//第一个参数是路径,第二个参数是字符编码可以省略,第三个是回调函数
fs.readFile('路径','utf-8',(err,doc)={
//如果文件读取出错err,是一个对象,包含错误信息
//如果读取正确,err为null
console.log(err);
//doc参数是文件读取的结果
console.log(doc);
})
fs.writeFile() 向文件中写入内容(覆盖)
//1.通过模块名字fs对模块进行引用
const fs = require('fs');
//第一个参数是路径,第二个是写入的内容,第三个是回调函数
fs.writeFile('./demo.txt','将要写入的内容',err=>{
//回调函数就一个参数err,内容写入错误时,不为null 包含错误信息
if(err != null){
console.log(err);
return;
}
//会创建一个新的文件
console.log('文件写入成功');
})
fs.appendFile()向文件中追加内容
const fs= require("fs");
fs.appendFile('./demo.txt', '追加的内容', function (err) {
//追加错误时,抛出异常,throw 语句创建自定义错误
if (err) throw err;
//数据被添加到文件的尾部
console.log('添加成功');
});
fs.mkdir()创建目录
const fs= require("fs");
// 创建makemulu目录,无论是否存在
fs.mkdir('makemulu', { recursive: true }, (err) => {
if (err) throw err;
});
5.2path模块:路径操作
path.parse() 解析路径,获取路径信息 大致就这些
// Url {
// protocol: null,
// slashes: null,
// auth: null,
// host: null,
// port: null,
// hostname: null,
// hash: null,
// search: '?name=zhangsan&age=20',
// query: 'name=zhangsan&age=20',
// pathname: '/',
// path: '/?name=zhangsan&age=20',
// href: '/?name=zhangsan&age=20' }
path.join() 路径拼接
//先获取系统模块path
const path = require('path');
const newPath = path.join('123','456','789');
console.log(newPath);// 123\456\789
1.不同系统路径分隔符不统一;
2.防止路径拼接少写斜杠问题;
3.使用绝对路径进行路径拼接__dirname;
绝对路径拼接用法
const fs = require('fs');
const path = require('path');
console.log(__dirname); //打印结果是本文件夹的绝对路径
console.log(path.join(__dirname,'01.js'))
fs.readFile(path.join(__dirname,'01.js'),'utf8',(err,doc)=>{
console.log(err); //读取正确的话就是 null 否则就是一个对象包含错误信息
console.log(doc); //读取到绝对路径的文件里边的内容
})