Koa 是一个基于 Node.js 平台的 Web 框架,它旨在提供更简洁的异步 Web 应用开发体验。以下是一些使用 Koa 框架进行项目开发的实例,这些实例可以帮助你理解如何使用 Koa 创建不同类型的 Web 应用。
实例 1: 基础服务器
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx) => {
ctx.body = 'Hello World';
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
实例 2: 使用路由
const Router = require('koa-router');
const router = new Router();
router.get('/', async (ctx) => {
ctx.body = 'Home Page';
});
router.get('/about', async (ctx) => {
ctx.body = 'About Page';
});
app.use(router.routes()).use(router.allowedMethods());
实例 3: 中间件日志记录
const logger = require('koa-logger');
app.use(logger());
实例 4: JSON 响应
app.use(async (ctx) => {
ctx.body = {
message: 'Hello World',
};
});
实例 5: 文件上传
const multer = require('koa-multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), async (ctx) => {
ctx.body = 'File uploaded';
});
实例 6: 错误处理
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.statusCode || 500;
ctx.body = { message: err.message };
}
});
实例 7: CORS 跨域支持
const cors = require('koa2-cors');
app.use(cors());
实例 8: 静态文件服务
const serve = require('koa-static');
app.use(serve('./public'));
实例 9: 模板引擎使用
const views = require('koa-views');
app.use(views('./views', { extension: 'ejs' }));
app.use(async (ctx) => {
await ctx.render('index', { title: 'Home' });
});
实例 10: 数据库集成(以 MongoDB 为例)
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
const User = mongoose.model('User', new mongoose.Schema({ name: String }));
app.get('/users', async (ctx) => {
const users = await User.find();
ctx.body = users;
});
实例 11: RESTful API 创建
const Router = require('koa-router');
const userRouter = new Router();
userRouter.get('/', async (ctx) => {
ctx.body = await User.find();
});
userRouter.post('/', async (ctx) => {
const user = new User(ctx.request.body);
await user.save();
ctx.status = 201;
ctx.body = user;
});
app.use(userRouter.routes()).use(userRouter.allowedMethods());
实例 12: 认证和授权
const jwt = require('koa-jwt');
const secret = 'your_secret_key';
app.use(jwt({ secret }).unless({ path: [/^\/public\//, /^\/login\//] }));
app.use(async (ctx, next) => {
if (ctx.isAuthenticated()) {
await next();
} else {
ctx.status = 401;
ctx.body = 'Unauthorized';
}
});
这些实例提供了使用 Koa 框架进行 Web 应用开发的不同方面,包括路由、中间件、错误处理、文件上传、CORS 支持、静态文件服务、模板引擎、数据库集成、RESTful API 创建以及认证和授权。每个实例都可以作为一个模块或组件,根据你的项目需求进行组合和扩展。