第一章:Node.js入门基础
1.1 什么是Node.js?
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以使用JavaScript来编写服务器端代码。Node.js的特点是单线程、非阻塞I/O模型,这使得它非常适合构建高性能的Web应用。
1.2 Node.js的安装与配置
1.2.1 Windows系统安装
- 访问Node.js官网下载Windows安装包。
- 双击安装包,按照提示完成安装。
- 打开命令提示符,输入
node -v检查是否安装成功。
1.2.2 macOS系统安装
- 打开终端。
- 输入命令
brew install node,等待安装完成。
1.2.3 Linux系统安装
- 使用包管理器安装,如Ubuntu系统使用
sudo apt-get install nodejs。 - 打开命令提示符,输入
node -v检查是否安装成功。
1.3 Node.js环境变量
在Node.js中,环境变量可以用来存储配置信息,如NODE_PATH、NODE_ENV等。设置环境变量的方法如下:
// 设置环境变量
process.env.NODE_PATH = '/path/to/node_modules';
1.4 Node.js的Hello World
// hello.js
console.log('Hello, World!');
保存上述代码为hello.js,在命令行中执行node hello.js,即可看到输出结果。
第二章:Node.js核心模块
Node.js提供了一系列核心模块,方便开发者快速构建应用。以下是几个常用的核心模块:
2.1 文件系统(fs)
文件系统模块提供了一系列用于文件操作的API,如读取、写入、删除等。
2.1.1 读取文件
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
2.1.2 写入文件
const fs = require('fs');
fs.writeFile('example.txt', 'Hello, World!', (err) => {
if (err) {
console.error(err);
return;
}
console.log('文件写入成功');
});
2.2 HTTP模块
HTTP模块用于创建HTTP服务器和客户端。
2.2.1 创建HTTP服务器
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!');
});
server.listen(3000, () => {
console.log('服务器运行在http://localhost:3000/');
});
2.2.2 创建HTTP客户端
const http = require('http');
http.get('http://example.com', (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
console.log(data);
});
});
第三章:Node.js常用库
除了核心模块外,Node.js还拥有丰富的第三方库,以下是一些常用的库:
3.1 Express框架
Express是一个流行的Web应用框架,可以帮助开发者快速构建Web应用。
3.1.1 创建Express应用
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Express服务器运行在http://localhost:3000/');
});
3.2 Mongoose库
Mongoose是一个MongoDB的对象模型工具,可以帮助开发者轻松操作MongoDB数据库。
3.2.1 连接MongoDB
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
3.2.2 创建文档
const Schema = mongoose.Schema;
const UserSchema = new Schema({
name: String,
age: Number,
});
const User = mongoose.model('User', UserSchema);
const user = new User({ name: 'Alice', age: 20 });
user.save((err) => {
if (err) {
console.error(err);
return;
}
console.log('用户添加成功');
});
第四章:Node.js实战项目
4.1 项目一:个人博客系统
4.1.1 技术选型
- 前端:HTML、CSS、JavaScript、Vue.js
- 后端:Node.js、Express、MongoDB、Mongoose
4.1.2 项目结构
personal-blog
├── backend
│ ├── models
│ ├── routes
│ ├── controllers
│ └── app.js
├── frontend
│ ├── index.html
│ ├── index.js
│ └── styles
└── package.json
4.1.3 功能实现
- 用户注册与登录
- 文章发布与编辑
- 文章列表展示
- 文章详情展示
4.2 项目二:在线聊天室
4.2.1 技术选型
- 前端:HTML、CSS、JavaScript、WebSocket
- 后端:Node.js、Express、WebSocket
4.2.2 项目结构
chat-room
├── public
│ ├── index.html
│ └── styles
├── server.js
└── package.json
4.2.3 功能实现
- 用户登录与注册
- 在线聊天
- 私聊功能
第五章:Node.js进阶技巧
5.1 异步编程
Node.js的异步编程是其核心特点之一。以下是一些常见的异步编程技巧:
5.1.1 回调函数
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
5.1.2 Promise
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
readFile();
5.1.3 async/await
async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
readFile();
5.2 模块化编程
模块化编程可以帮助开发者将代码拆分成多个可复用的模块,提高代码的可维护性和可读性。
5.2.1 创建模块
// math.js
module.exports = {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
};
5.2.2 引入模块
const math = require('./math');
console.log(math.add(1, 2)); // 输出 3
console.log(math.subtract(3, 2)); // 输出 1
5.3 性能优化
Node.js的性能优化可以从以下几个方面入手:
5.3.1 避免全局变量
全局变量会影响程序的性能,尽量避免使用。
5.3.2 使用缓存
缓存可以减少数据库的查询次数,提高应用性能。
5.3.3 异步编程
异步编程可以充分利用CPU资源,提高应用性能。
第六章:总结
通过本章的学习,相信你已经掌握了Node.js编程的基本知识和实战技能。在实际开发中,不断积累经验,学习新的技术,才能成为一名优秀的Node.js开发者。祝你学习顺利!
