Node.js 基础入门
什么是 Node.js?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,允许在服务器端运行 JavaScript 代码。
核心特性
- 事件驱动:基于事件循环的异步 I/O 模型
- 非阻塞 I/O:高效的网络和文件操作
- 单线程:主线程处理事件循环,工作线程处理耗时操作
- 跨平台:支持 Windows、macOS、Linux
安装 Node.js
方式一:官网安装
访问 Node.js 官网 下载对应平台的安装包。
方式二:使用包管理器
bash
# Windows (使用 Chocolatey)
choco install nodejs
# macOS (使用 Homebrew)
brew install node
# Linux (使用 apt)
sudo apt install nodejs npm验证安装
bash
node --version
npm --version第一个 Node.js 程序
创建 app.js 文件:
javascript
// app.js
console.log('Hello, Node.js!');
// 使用内置模块
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, Node.js Server!');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});运行程序:
bash
node app.js核心模块
fs 文件系统模块
javascript
const fs = require('fs');
// 读取文件(异步)
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
// 读取文件(同步)
const data = fs.readFileSync('file.txt', 'utf8');
// 写入文件
fs.writeFile('output.txt', 'Hello World', (err) => {
if (err) throw err;
console.log('File saved!');
});path 路径模块
javascript
const path = require('path');
// 路径拼接
const filePath = path.join(__dirname, 'files', 'data.txt');
// 获取文件名
const fileName = path.basename(filePath);
// 获取扩展名
const ext = path.extname(filePath);http 模块
javascript
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Hello World' }));
});
server.listen(3000);包管理
初始化项目
bash
npm init
# 或使用默认配置
npm init -y安装依赖
bash
# 安装生产依赖
npm install express
# 安装开发依赖
npm install --save-dev nodemon
# 全局安装
npm install -g typescriptpackage.json 说明
json
{
"name": "my-app",
"version": "1.0.0",
"description": "项目描述",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
},
"dependencies": {
"express": "^4.18.0"
},
"devDependencies": {
"nodemon": "^2.0.0"
}
}常用命令
bash
# 安装依赖
npm install
# 运行脚本
npm run start
npm run dev
# 查看已安装包
npm list
# 更新包
npm update
# 卸载包
npm uninstall express异步编程
回调函数
javascript
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error:', err);
return;
}
console.log(data);
});Promise
javascript
const fs = require('fs').promises;
fs.readFile('file.txt', 'utf8')
.then(data => console.log(data))
.catch(err => console.error('Error:', err));async/await
javascript
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('file.txt', 'utf8');
console.log(data);
} catch (err) {
console.error('Error:', err);
}
}
readFile();环境变量
使用 process.env
javascript
// 获取环境变量
const port = process.env.PORT || 3000;
const dbUrl = process.env.DATABASE_URL;
console.log(`Server running on port ${port}`);使用 .env 文件
安装 dotenv:
bash
npm install dotenv使用:
javascript
require('dotenv').config();
const port = process.env.PORT;
const dbUrl = process.env.DATABASE_URL;最佳实践
- 错误处理:始终处理异步操作的错误
- 使用 async/await:提高代码可读性
- 环境变量:敏感信息使用环境变量
- 模块化:将代码拆分为独立模块
- 日志记录:使用日志库记录重要信息
最后更新:2025年