# 23级nodejs练习任务 **Repository Path**: zsxqdqjt69/grade-23-node.js-practice-task ## Basic Information - **Project Name**: 23级nodejs练习任务 - **Description**: 23级nodejs练习任务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 12 - **Created**: 2025-02-17 - **Last Updated**: 2025-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 23级全栈开发班Nodejs练习任务 ### 一、nodejs初识 1. 复习js - 任务1:创建一个简单的问候函数 ```js 要求: 编写一个函数greet,接受一个名字作为参数,并返回一个问候语,例如:“Hello, [名字]! Welcome to JavaScript.”。 ``` - 任务2:计算数组的平均值 ```js 要求: 编写一个函数calculateAverage,接受一个数字数组作为参数,并返回数组的平均值。 ``` - 任务3:检查字符串是否为回文 ```js 要求: 编写一个函数isPalindrome,接受一个字符串作为参数,判断该字符串是否为回文(正读和反读相同)。 ``` - 任务4:实现一个简单的计数器 ```js 要求: 使用闭包实现一个简单的计数器,每次调用时返回当前的计数值。 ``` - 任务5:过滤数组中的偶数 ```js 要求: 编写一个函数filterEvenNumbers,接受一个数字数组作为参数,返回一个只包含偶数的新数组。 ``` - 任务6:实现一个简单的对象工厂 ```js 要求: 编写一个函数createPerson,接受name和age作为参数,返回一个包含这些属性的对象。 ``` - 任务7:递归计算阶乘 ```js 要求: 编写一个递归函数factorial,计算一个非负整数的阶乘。 ``` - 任务8:实现一个简单的事件监听器 ```js 要求: 编写一个函数addEventListener,模拟HTML元素的事件监听器功能。接受一个事件类型和一个回调函数作为参数,并在触发时调用回调函数。 ``` - 任务9:实现一个简单的Promise ```js 要求: 使用Promise实现一个异步函数fetchData,模拟从服务器获取数据。如果成功,返回一个字符串;如果失败,抛出一个错误。 ``` - 任务10:实现一个简单的模块 ```js 要求: 使用模块模式封装一个mathUtils模块,包含add和multiply两个函数。 ``` 2. 在自己电脑上安装nodejs环境 3. 除了npm官方包管理器以外,还有哪些包管理器,各有哪些特点,各自如何安装 4. 在自己云服务器上安装nodejs环境 ### 二、完整nodejs项目及nodejs模块初识 1. 创建完整nodejs项目,配合git和git忽略文件,创建标准nodejs项目,托管在码云仓库 2. 梳理总结commonJs和ES模块的区别,以及常规用法 ### 三、基本模块及文件模块 1. 读取文件内容并打印 ``` 编写一个 Node.js 脚本,读取一个文本文件(example.txt)的内容,并将其打印到控制台。要求使用异步和同步两种方式实现。 提示:使用 fs.readFile() 和 fs.readFileSync()。 ``` 2. 写入文件内容 ``` 编写一个 Node.js 脚本,将一段文本内容写入到一个文件(output.txt)中。如果文件已存在,则覆盖原有内容;如果文件不存在,则创建文件。 提示:使用 fs.writeFile() 或 fs.writeFileSync()。 ``` 3. 追加内容到文件 ``` 编写一个 Node.js 脚本,将一段文本内容追加到一个文件(example.txt)的末尾。如果文件不存在,则自动创建文件。 提示:使用 fs.appendFile() 或 fs.appendFileSync()。 进阶练习题 ``` 4. 创建和删除文件 ``` 编写一个 Node.js 脚本,完成以下任务: 创建一个名为 test.txt 的文件,并写入内容 "Hello, Node.js!"。 检查文件是否存在,如果存在,则删除该文件。 提示:使用 fs.writeFile()、fs.existsSync() 和 fs.unlink()。 ``` 5. 创建和删除目录 ``` 编写一个 Node.js 脚本,完成以下任务: 创建一个名为 testDir 的目录。 在该目录下创建一个名为 example.txt 的文件,并写入内容 "This is a test file."。 删除该目录及其所有内容。 提示:使用 fs.mkdir()、fs.writeFile() 和 fs.rmdir()(fs.rmdir() 的 recursive 参数)。 ``` 6. 读取目录内容 ``` 编写一个 Node.js 脚本,读取指定目录下的所有文件和子目录的名称,并打印到控制台。 提示:使用 fs.readdir() 或 fs.readdirSync()。 ``` 7. 文件内容替换 ``` 编写一个 Node.js 脚本,读取一个文本文件(example.txt),将文件中的所有单词 "Node.js" 替换为 "JavaScript",然后将修改后的内容写回到原文件。 提示:使用 fs.readFile() 和 fs.writeFile(),结合正则表达式。 ``` 8. 文件复制 ``` 编写一个 Node.js 脚本,将一个文件(source.txt)的内容复制到另一个文件(destination.txt)中。 提示:可以使用 fs.copyFile() 或手动读取和写入文件。 ``` 9. 文件大小统计 ``` 编写一个 Node.js 脚本,计算指定目录下所有文件的总大小(以字节为单位)。 提示:使用 fs.readdir() 和 fs.stat()。 ``` 10. 文件备份 ``` 编写一个 Node.js 脚本,将指定目录下的所有文件备份到另一个目录中。备份文件的命名规则为:原文件名_备份时间戳。 提示:使用 fs.readdir()、fs.copyFile() 和 Date.now()。 ``` 11. 文件系统监控 ``` 编写一个 Node.js 脚本,监控指定目录的文件变化(如新增文件、删除文件、修改文件)。当检测到变化时,打印出变化的文件名和变化类型。 提示:使用 fs.watch() 或 fs.watchFile()。 ``` 12. 文件压缩与解压 ``` 编写一个 Node.js 脚本,完成以下任务: 将指定目录下的所有文件压缩为一个 .zip 文件。 解压一个 .zip 文件到指定目录。 提示:可以使用第三方模块(如 archiver 或 unzipper)。 ``` 13. 日志文件管理 ``` 编写一个 Node.js 脚本,实现一个简单的日志文件管理系统: 每天生成一个新的日志文件,文件名格式为 log_YYYYMMDD.txt。 将日志内容追加到当天的日志文件中。 提供一个命令行接口,允许用户输入日志内容。 提示:使用 fs.appendFile() 和 Date 对象。 ``` ### 四、http模块 1. 静态文件服务器 题目: ``` 使用Node.js的http模块和fs模块,创建一个简单的静态文件服务器。当用户访问服务器时,根据请求的路径返回对应的静态文件(如HTML、CSS、JavaScript文件)。如果请求的文件不存在,则返回404状态码和“文件未找到”的提示信息。 ``` 要求: ``` 服务器监听在本地的8080端口。 将静态文件放在一个名为public的目录中。 如果请求的文件是HTML文件,返回Content-Type为text/html;如果是CSS文件,返回Content-Type为text/css;如果是JavaScript文件,返回Content-Type为application/javascript。 如果请求的文件不存在,返回404状态码和“文件未找到”的提示信息。 ``` 2. 日志记录服务器 题目: ``` 使用Node.js的http模块和fs模块,创建一个HTTP服务器,记录每次请求的详细信息到日志文件中。日志文件应包含请求的时间戳、请求方法、请求路径和客户端IP地址。 ``` 要求: ``` 服务器监听在本地的5000端口。 每次请求时,将请求信息追加到一个名为server.log的日志文件中。 日志文件的格式为:[时间戳] - [请求方法] - [请求路径] - [客户端IP]。 提供一个简单的HTML页面作为响应,内容为“日志已记录”。 ``` 3. 图片查看器 题目: ``` 使用Node.js的http模块和fs模块,创建一个图片查看器服务器。用户可以通过访问/view?filename=图片名来查看指定的图片文件。 ``` 要求: ``` 服务器监听在本地的4000端口。 将图片文件放在一个名为images的目录中。 如果请求的图片存在,返回图片内容,并设置Content-Type为image/jpeg或image/png(根据文件扩展名判断)。 如果请求的图片不存在,返回404状态码和“图片未找到”的提示信息。 ``` 4. 文件搜索服务 题目: ``` 使用Node.js的http模块和fs模块,创建一个文件搜索服务。用户可以通过访问/search?query=关键词来搜索指定目录下的文件名是否包含关键词的文件。 ``` 要求: ``` 服务器监听在本地的8000端口。 搜索的目录为当前目录下的files文件夹。 返回一个JSON格式的响应,包含所有匹配的文件名。如果未找到匹配的文件,返回一个空数组。 ``` 示例响应: ```json { "files": ["example1.txt", "example2.txt"] } ``` 5. 简单Web服务 要求: ``` 在浏览器输入http://localhost:8080/时,会返回404,原因是程序识别出HTTP请求的不是文件,而是目录。请修改file_server.js,如果遇到请求的路径是目录,则自动在目录下依次搜索index.html、default.html,如果找到了,就返回HTML文件的内容。 ```