Appearance
附录:Node.js 核心知识点汇总
1. 核心模块速记(按使用频率排序,附常用方法)
fs 模块(文件系统)
- 常用方法:
fs.readFile():异步读取文件fs.readFileSync():同步读取文件fs.writeFile():异步写入文件fs.writeFileSync():同步写入文件fs.appendFile():追加写入文件fs.unlink():删除文件fs.mkdir():创建目录fs.rmdir():删除目录fs.readdir():读取目录内容fs.existsSync():检查文件/目录是否存在
http 模块(HTTP服务器)
- 常用方法:
http.createServer():创建HTTP服务器server.listen():启动服务器http.get():发送GET请求http.request():发送HTTP请求
path 模块(路径处理)
- 常用方法:
path.join():拼接路径path.resolve():解析绝对路径path.basename():获取文件名path.dirname():获取目录名path.extname():获取文件扩展名path.normalize():规范化路径
url 模块(URL处理)
- 常用方法:
url.parse():解析URLurl.format():格式化URLurl.resolve():解析相对URLnew URL():创建URL对象
querystring 模块(查询字符串)
- 常用方法:
querystring.parse():解析查询字符串querystring.stringify():序列化对象为查询字符串
util 模块(工具函数)
- 常用方法:
util.promisify():将回调函数转换为Promiseutil.inspect():检查对象
process 模块(进程管理)
- 常用属性和方法:
process.env:环境变量process.argv:命令行参数process.cwd():当前工作目录process.exit():退出进程
2. 常用npm命令汇总(快速查询)
项目初始化
npm init:初始化项目,生成package.jsonnpm init -y:快速初始化,使用默认值
依赖管理
npm install <package>:安装包到本地npm install <package> --save-dev:安装为开发依赖npm install <package> -g:全局安装npm uninstall <package>:卸载包npm update <package>:更新包npm list:查看已安装的包npm list -g:查看全局已安装的包
脚本执行
npm run <script>:执行package.json中的脚本npm start:执行start脚本npm test:执行test脚本npm run dev:执行dev脚本(通常用于开发环境)
其他命令
npm version:查看npm版本npm help:查看帮助npm search <package>:搜索包npm publish:发布包到npm
3. Express 核心用法与中间件汇总
核心用法
- 创建应用:
const app = express() - 启动服务器:
app.listen(port, callback) - 路由:
app.get(path, callback):处理GET请求app.post(path, callback):处理POST请求app.put(path, callback):处理PUT请求app.delete(path, callback):处理DELETE请求
- 响应方法:
res.send():发送响应res.json():发送JSON响应res.status():设置状态码res.redirect():重定向
常用中间件
内置中间件:
express.json():解析JSON请求体express.urlencoded():解析URL编码的请求体express.static():静态资源托管
第三方中间件:
cors:处理跨域morgan:HTTP请求日志helmet:安全头部设置express-session:会话管理passport:认证
4. 常用代码模板(复制即用,提高开发效率)
创建HTTP服务器
javascript
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});Express应用模板
javascript
const express = require('express');
const app = express();
const port = 3000;
// 中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 路由
app.get('/', (req, res) => {
res.send('Hello Express');
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});异步文件读取
javascript
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('file.txt', 'utf8');
console.log(data);
} catch (error) {
console.error(error);
}
}
readFile();Express路由模块化
javascript
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.json({ message: 'Get all users' });
});
router.post('/', (req, res) => {
res.json({ message: 'Create user' });
});
module.exports = router;
// app.js
const express = require('express');
const userRoutes = require('./routes/users');
const app = express();
app.use('/api/users', userRoutes);5. 新手易错点对照表(快速排查问题)
| 错误类型 | 错误信息 | 可能原因 | 解决方案 |
|---|---|---|---|
| 模块导入 | Cannot find module 'xxx' | 模块未安装或路径错误 | 安装模块或检查路径 |
| 端口占用 | EADDRINUSE: address already in use | 端口被其他进程占用 | 杀死占用端口的进程或更换端口 |
| 文件路径 | ENOENT: no such file or directory | 路径错误 | 使用绝对路径或检查路径是否正确 |
| 异步错误 | undefined 或 null | 异步代码执行顺序错误 | 使用Promise或async/await |
| 跨域错误 | Access-Control-Allow-Origin | 未设置CORS头 | 使用cors中间件或手动设置CORS头 |
| 类型错误 | TypeError: Cannot read property 'xxx' of undefined | 访问未定义对象的属性 | 检查对象是否存在 |
| 语法错误 | SyntaxError: Unexpected token | 代码语法错误 | 检查代码语法 |
| 数据库错误 | ER_ACCESS_DENIED_ERROR | 数据库连接信息错误 | 检查数据库连接配置 |
6. 常用第三方包推荐(按场景分类)
Web开发
- 框架:express, koa, nestjs
- 模板引擎:ejs, pug, handlebars
- 认证:jsonwebtoken, passport
- 会话管理:express-session, cookie-parser
- 验证:express-validator, joi
数据库
- MySQL:mysql2, sequelize
- MongoDB:mongodb, mongoose
- PostgreSQL:pg, typeorm
- Redis:redis, ioredis
工具库
- 日期时间:moment, dayjs
- 工具函数:lodash, underscore
- UUID:uuid
- 环境变量:dotenv
- 日志:winston, bunyan
网络请求
- HTTP客户端:axios, node-fetch
- WebSocket:socket.io
- API文档:swagger-ui-express
开发工具
- 自动重启:nodemon
- 调试:debug
- 测试:jest, mocha
- 代码质量:eslint, prettier
- 打包:webpack, rollup
部署
- 进程管理:pm2
- 容器化:docker
- CI/CD:github-actions, jenkins
