Node笔记

前端开发工具

  1. Webpack
  2. Vite
  3. Babel

桌面端应用(基于electron框架)

  1. VSCode - 代码编辑
  2. Figma - 设计
  3. Postman - 接口测试

三种Node的模块

  1. core
  2. 三方
  3. 项目

Buffer 缓冲器

/**
 * 1 创建
 */
let buf_1 = Buffer.alloc(10);
console.log(buf_1);

let buf_2 = Buffer.allocUnsafe(10000);
console.log(buf_2);

let buf_3 = Buffer.from('a');   // 转二进制存buffer
console.log(buf_3);

/**
 * 2 与字符串转换
 */
let buf_4 = Buffer.from([123, 345, 765, 345]);
console.log(buf_4.toString()); // utf-8

/**
 * 3 读写
 */
let buf_5 = Buffer.from('abc');
console.log(buf_5[0]); // 十进制
console.log(buf_5[0].toString(2)); // 转为二进制,不同于toString输出

/**
 * 4 修改
 */
buf_5[0] = 98;// 修改
console.log(buf_5.toString());

/**
 * 5 溢出
 */
let buf_6 = Buffer.from('abc');
console.log(buf_6);
buf_6[0] = 361; // 舍弃高于8位的数字, 361转二进制是 0001 0110 1001 -> 0110 1001 (69)
console.log(buf_6);

/**
 * 6 中文 utf-8三个字节
 */

fs - filesystem

DUTY:与硬盘的交互。实现与文件相关操作,e.g. create, delete, rename, move, write, read等

工作模式:同步、异步
异步(下面代码的例子):主线程js走完,输出1,再跑回调判断err
同步:A等B上完厕所一起走

文件写入:
需要持久化保存数据
流式写入、追加写入

文件读取:
同步、异步、流式读取

复制:
同步读写
流式读写(绑定data事件)
rs.pipe(ws)

流式:每次chunk 64 KB,读快于写。

查看内存使用情况:
process.memoryUsage(),返回的对象里的每个属性值,单位是字节
rss - 给这个进程分配了多少物理内存(对象、字符串存于堆内存,变量存于栈内存)
如果需要转换为MB就是/1024/1024

文件移动和重命名:fs.rename(‘旧路径’, ‘新路径’, 回调函数)

删除:
fs.rename(‘路径’, 回调)
fs.rm(‘路径’, 回调)

文件夹

创建(递归创建):
fs.mkdir(路径, (配置), 回调)
recursive:递归创建,根据需求设true

VSCode 设置显示折叠:compact 紧凑模式

读取:
fs.readdir()

删除:
rm删除非空
rmdir删除空,递归删除要recursive设为true
参数:路径,err回调错误对象

查看文件状态
fs.stat()
return: size, birthtime, atime最后访问, mtime最后修改文件, ctime最后修改文件状态

查看文件类型:data.isFile(), data.isDirectory

遍历文件列表:xxx.forEach(item => { });

模板字符串${}:用反引号!!!!1的左边!!!!

相对&绝对:
相对路径 - 参考命令行的工作目录
绝对路径 - 参考__dirname:(所在文件的所在目录的绝对路径),常用于拼接文件名,比如__dirname + ‘/test.html’

统一路径中正反斜线:path.resolve()

Path

parse(路径):路径下的信息
basename:获取文件名
dirname:文件名
extname:扩展名

const fs = require('fs');
const path = require('path');

// 拼接时,统一反斜线和正斜线
console.log(path.resolve(__dirname, './index2.html'));

HTTP

浏览器&服务器:请求和响应的交互
Fiddler:查看报文
请求头查询:MDN WEB DOCS

/**
 * 新建文件、写入内容
 */

// 1 导入
const fs = require('fs');

// 2 异步写入 回调函数
fs.writeFile('./test1','fdhsjaklfhdsjalk', err=> {
    // 判断err的值查看写入成功与否
    if(err) {
        console.log('2 writeFile fail');
        return;
    }
    // console.log('2 writeFile success');
});

// console.log('2+');

// 3 同步写入
fs.writeFileSync('./test2', 'dsfhudsaiofhuio');

// 4 (异步)追加写入 \r\n换行
fs.appendFile('./test1', '--------', err => {
    if(err) {
        console.log('3 file');
        return;
    }
    // console.log('3 success');
});

fs.writeFile('./test2', '11111111', {flag: 'a'}, err => {
    if(err) {
        console.log('4 fail');
        return;
    }
    // console.log('4 success');
});

// 5 流式写入 - 适合频繁写入
// let ws = fs.createWriteStream('./test3');
// ws.write('1111');
// ws.write('2222');
// ws.close();

// 6 (异步)读取 
fs.readFile('./test1', (err, data) => {
    if(err) {
        console.log('6 read fail');
        return;
    }
    // console.log("6", data.toString());
});

// let data = fs.readFileSync('./test2');
// console.log('6', data.toString());

// 7 流式读取 - 创建读取流对象、绑定data事件、绑定end事件
const rs = fs.createReadStream('./test2');

rs.on('data', chunk => {
    //打印chunk,.length看长度 每次84kB
})
rs.on('end', () => {
    //
})

// 8 复制 - (1) 同步读,再写 (2)流式读,再写

// 9 查看进程分配的内存
// console.log(process.memoryUsage())

// 10 重命名&移动 - 旧路径,新路径,回调函数
fs.rename('./test1', './test11', err => {
    if(err) {
        console.log("10 fail");
        return;
    }
    // console.log("10 success");
})

// 11 删除
// fs.unlink('./test11', err => {
    // if(err) {
        // console.log('11 fail');
        // return;
    // }
    // console.log('11 success');
// });
// fs.rm('./test3', err => {
    // if(err) {
        // console.log('11-2 fail');
        // return;
    // }
    // console.log('11-2 success');
// })

// 12 文件夹创建 fs.mkdir

// 13 文件夹读取 fs.readdir
fs.readdir('./', (err, data) => {
    if(err) {
        return;
    }
    // console.log("13", data);/
})

// 14 删除 fs.rmdir, 递归删除 recursive: true, (路径,err回调)
// rm跟rmdir的区别:rmdir是非空

// 15 读取状态
fs.stat('./test2',  (err, data) => {
    if(err) {
        return;
    }
    // console.log("15", data);
});

// 16 路径
// fs.writeFileSync('/index1.html', '161');
// fs.writeFileSync('./index2.html', '162');
// fs.writeFileSync('../index3.html', '163');

// fs.writeFileSync('/index1.html', '161');

// console.log("16", __dirname);

// 17 批量对文件进行重命名
const files = fs.readdirSync('./test')

files.forEach(item => {
    console.log("item:", item);
    let data = item.split('-');
    let [num, name] = data;
    // console.log(num, name);
    if(num<10) {
        num = '0' + num;
    }
    let new_name = num + '-' + name;
    console.log("new_name", new_name);
    fs.renameSync(`./test/${item}`, `./test/${new_name}`);

});

数据类型

简单
复杂

RPEL环境

console.log() 占位符的使用:%s, %d

包管理工具NPM

验证NPM的安装:npm,npm -v, npm -version
初始化Node应用项目:npm init -y, npm init --yes。使用默认配置参数,生成packa.json配置文件
安装别的包:npm install xxx, --save或-S保存新包信息在json,-dev标明是开发环境
卸载:npm uninstall xxx

模块管理

分类:原生模块,文件模块
导入:require
导出:export

不认识的函数

.filter
.reduce

fs模块中文件系统常见类型

标准文件、目录、UNIX套接字、符号链接、块设备、FIFO、字符设备、

Node安装

全局&___
不同的镜像
清理缓存
查root? -v
save dev 和 __ 的区别

  • 39
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值