2021-10-24 引入模块

fs模块

fs模块是Node.js的一个核心模块,专门用来操作系统中的文件
fs.readFile(文件路径,options,回调函数)
fs.readFileSync(第一个参数,第二个参数)

  • 第一个参数是文件路径
  • 第二个参数可以是一个表示配置的对象,也可以是一个表示文本文件编码的字符串。默认的配置对象是{ encoding: null, flag: ‘r’ },即文件编码默认为null,读取模式默认为r(只读)。如果第二个参数不指定编码(encoding),readFileSync方法返回一个Buffer实例,否则返回的是一个字符串

fs.writeFile(文件路径,写入的数据,options,回调函数)

  • 异步的向指定路径的文件写入指定数据。回调函数在写完指定数据后触发异步写入文件.,如果文件不存在,则自动创建。可以在文件里面写入任何的数据类型,所有数据都会被隐式转换成字符串。
    fs.writeFileSync(文件路径,写入的数据,options)
  • 同步的向指定路径的文件写入指定数据

fs.existsSync(文件路径) 判断路径是否存在
fs.stat(文件路径) 查看指定文件的信息
fs.truncate(文件路径,字节长度,回调函数) 把文件大小限制在指定字节
fs.unlink(文件路径,回调函数) 删除指定路径的文件
fs.rmdir(文件路径,回调函数) 删除指定路径的空文件夹
fs.mkdir(文件路径,回调函数) 创建指定路径的空文件夹
fs.readdir(文件路径,回调函数) 读取指定文件夹下的所有文件
fs.rename(oldPath,newPath,回调路径) 把oldPath的文件移动到newPath上。

  • rename(旧路径,新路径,回调函数) 1.把旧路径的文件移动到新路径 2.并且改名

qs模块

const qs=require(‘querystring’)
qs.parse()是将URL解析成对象的形式
qs.stringify()是将对象 序列化成URL的形式,以&进行拼接(a=张三&b=李四)

// qs.parse()是将URL解析成对象的形式
let url = 'method=data&projectId=10086&appToken=12345;
qs.parse(url) 输出为:
{
    method:'data',
    projectId:'10086',
    appToken:' 12345'
}
// qs.stringify()是将对象 序列化成URL的形式,以&进行拼接(a=1&b=2)
let url = {
    method:'data',
    projectId:'10000',
    appToken:'54321'
}
qs.stringify(url) 输出为: 'method=data&projectId=10000&appToken=54321';

http模块

// qs模块提供用于解析和格式化 URL 查询字符串的实用工具。 可以使用以下方式访问它:
// qs.parse() 方法将 URL 查询字符串 str 解析为键值对的集合。
//1.
const http = require('http');
const querystring = require('querystring');
const qs = require("querystring");
//2.
const server = http.createServer((request, response)=>{
    //提取表单中的用户名和密码
    //1. 声明一个变量
    let body = '';
    //2. 绑定 data 事件
    request.on('data', (chunk) => {
        //每次读取是64kb,需要多次读取
        body += chunk;   //chunk是二进制数据,和字符串相加也是字符串
    });
    //3. 绑定 end 事件
    request.on('end', ()=>{
        // console.log(body);
        // 将字符串转化为对象
        const data = qs.parse(body);
        // 将所有的用户信息读取出来
        const users = fs.readFileSync('./users.json').toString();
        // 将字符串转化成对象
        const usersObj = JSON.parse(users);
        // 将新用户的对象压入usersObj 对象中
        usersObj.data.push(data);
        // 将对象转化为JSON字符串
        let str = JSON.stringify(usersObj);
        fs.writeFileSync('./users.json', str + `\r\n`);
        console.log(body);
        response.end("over");
    });
});
//3.
server.listen(8000, ()=>{
    console.log('服务已经启动, 8000 端口监听中.....');
})

模块化

自定义模块化的暴露和引入

  1. 暴露
// 此文件为 module.js
function add(a,b) {
	return a + b;
}
function div(a,b) {
	return a * b;
}
module.exports = {
	add, //  相当于 add:add
	div  //  相当于 div:div
};
  1. 引入
// 此文件名为test.js , 与module.js在同一文件夹内
const {add,div}=require('./module.js');
console.log(add(1,2));	// 输出 3
console.log(add(1,2));  // 输出 2
  • module.exports 可以暴露任意数据 ,如果暴露数值或字符串,则会覆盖
  • 可以使用 module.exports 暴露多个数据
  • exports 也可以暴露数据,不过不能使用 exports = xxx 的形式
  • 只要记住 用module.exports = xxx 来暴露就可以

文件导入——文件路径不带后缀和文件夹的情况

  • 如果没有加文件后缀,会按照以下后缀加载文件
    • .js fs模块同步读取文件编译执行
    • .json fs模块同步读取文件,用JSON.parse()解析返回结果
    • .node 这是c/c++编写的扩展文件,通过dlopen()方法编译
  • 其他扩展名 会以.js文件载入
  • 如果是文件夹则会默认加载该文件夹下 package.json 文件中 main 属性对应的文件
  • 如果 main 属性对应的文件不存在,则自动找 index.js index.json
  • 如果是内置模块或者是 npm 安装的模块,直接使用包名字即可
  • npm 引入包时,如果当前文件夹下的 node_modules 没有,则会自动向上查找

只要记住 在导出时用 module.exports 在导入时 require(‘完整路径’)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值