# atguigu-nodejs **Repository Path**: monkey-yu/atguigu-nodejs ## Basic Information - **Project Name**: atguigu-nodejs - **Description**: 上硅谷跟学nodejs - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-06 - **Last Updated**: 2025-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. nodejs主要包含内容: nodejs API 、包管理工具 、HTTP协议 、Express 框架 、Mongodb数据库 、会话控制、API 接口 、服务器部署 、计算机基础。 2. nodejs 是一款应用程序,可以运行javascript 3. nodejs的作用: 1) 开发服务器应用; 2) 开发工具类应用; webpack \ vite \ babel 3) 开发桌面端应用; VSCODE \ figma \ postman 使用electron开发的。 tips: nodeJS 下载旧版本的链接 https://nodejs.cn/download/ https://registry.npmmirror.com/binary.html 进去后点击node 找到所需版本及其操作系统的包 下载。 4. nodejs 编码注意事项 nodejs中的顶级对象是 global 、 globalThis (ES20202新特性) 浏览器中的顶级对象是 window; 5. Buffer buffer 译为 缓冲区,是一个类似于Array的对象,用于表示固定长度的字节序列。 Buffer是一段固定长度的内存空间,用于处理二进制数据。 6. 计算机基本组成 CPU 、 内存 、 硬盘 内存: 读写速度快,断电丢失数据 硬盘:读写慢,断电不丢失数据 显卡: 接收视频信号,显卡处理后 给到显示器 声卡: 处理音频信号,给到音响等 程序一般保存在硬盘中,软件安装过程就是将程序写入硬盘的过程。 程序在运行时会加载进内存,然后由CPU读取并执行程序。 7. 进程与线程 进程: 进行中的程序。 线程: 是一个进程中执行的一个执行流。一个线程是属于某个进程的。 8. fs模块 file system : 可以实现与硬盘的交互。 文件写入: const fs = require('fs'); // 异步写入 fs.writeFile('./data.txt','test content', err => { // 写入成功,err是null ; 写入失败,err是一个错误对象 if(err){ console.log('写入失败'); return; } console.log('写入成功') }}) // 同步写入 fs.writeFileSync('./data2.txt', 'test again') 方法说明writeFile异步写入writeFileSync同步写入appendFile / appendFileSync追加写入createWriteStream流式写入 程序打开一个文件是需要消耗资源的,流式写入可以减少打开关闭文件的次数。 流式写入方式适用于 大文件写入或者频繁写入的场景, writeFile 适合于写入频率较低的场景。 const ws = fs.createWriteStream('./观书有感.txt'); ws.write('半亩方塘一鉴开,天光云影共徘徊。\r\n'); ws.write('问渠那得清如许?为有源头活水来。\r\n'); ws.end(); 文件写入应用场景: 下载文件 、安装软件 、保存程序日志 、编辑器保存文件 、视频录制 当需要持久化的保存数据时候,应该想到文件写入。 文件读取: 方法说明readFile异步读取readFileSync同步读取createReadStream流式读取 文件读取的应用场景: 电脑开机、程序运行、编辑器打开文件、查看图片、播放视频、git查看日志、上传文件、查看聊天记录 文件重命名: 也可以修改路径。 fs.rename('./原文件.txt','./新名称.txt',err => { if(err){ console.log('重命名失败'); return; } console.log('重命名成功'); }) 文件删除: fs.unlink('./文件.txt',err => {}); fs.rm('./文件.txt',err => {}); 对应都有同步方法 fs.unlinkSync() fs.rmSync() 文件夹操作: // 创建文件夹 fs.mkdir('./html',err => {}) // 递归创建文件夹 fs.mkdir('./a/b/c',{recursive:true},err => {}) // 读取文件夹 fs.readdir('../资源',(err,data)=> { if(err){ console.log('读取失败'); return } console.log(data); }) // 删除文件夹 fs.rmdir('./html',err => {}) fs.rm('./a',err => {}) fs查看资源状态: fs.stat('./文件.mp4', (err,data)=> { // 查看资源是否是文件 console.log(data.isFile()) // isDirectory 是否是文件夹 }) 相对路径、绝对路径 __dirname : 所在文件的所在目录的绝对路径 相对路径: 会有bug. 参照物 不是当前文件,而是命令行操作的路径