egg.js 是一个基于 Express.js 构建的 Node.js 后端框架,专为快速构建高性能、安全的 web 应用而生。egg.js 提供了丰富的中间件支持、方便的路由管理以及强大的安全性设置,旨在降低开发复杂度,让开发者能更专注于业务逻辑的实现。本指南将带你从零开始掌握 egg.js 的基础使用,快速搭建一个简单的 web 应用。
环境搭建首先,确保你的系统已安装 Node.js。接下来,使用 npm
(Node.js 包管理器)创建一个新的 egg.js 项目:
npm init egg --yes
这将初始化一个 egg.js 项目,并创建一个 package.json
文件来管理项目的依赖。接下来,通过 egg-bin
自动生成脚本:
npm install -g egg-bin
创建一个 egg.js 的基础应用:
egg-bin generate
这将生成一个新的 egg.js 项目结构,并配置好必要的依赖。你可以通过 cd
命令进入项目目录,并运行 npm install
来安装所有依赖:
cd your-project-name npm install基本概念
egg.js 使用中间件来处理 HTTP 请求,并在不同的处理阶段进行处理,例如日志记录、身份验证等。中间件可以通过 config.middleware
配置启用。
在 egg.js 中,路由定义在 app/controller
目录下的 .js
文件中,控制器则用于处理 HTTP 请求。例如,创建一个简单的 Hello World 控制器:
// app/controller/hello.js module.exports = { async index(ctx) { ctx.body = 'Hello, World!'; } };
在 app/router.js
中定义路由:
// app/router.js module.exports = ctx => { ctx.router.get('/', ctx.controller.hello.index); };
此时,访问 http://localhost:3000/
将返回 "Hello, World!"。
在 egg.js 中,控制器一般包含处理业务逻辑的函数,如验证、数据处理等。在上面的 hello.js
文件基础上,添加一个功能:
// app/controller/hello.js module.exports = { async index(ctx) { ctx.body = 'Hello, World!'; }, async customAction(ctx) { ctx.body = `Custom action called. Query params: ${JSON.stringify(ctx.query)}`; } };
在 router.js
中添加新路由:
// app/router.js module.exports = ctx => { ctx.router.get('/', ctx.controller.hello.index); ctx.router.get('/custom', ctx.controller.hello.customAction); };
访问 http://localhost:3000/custom?param=value
将返回 "Custom action called. Query params: { param: 'value' }"。
egg.js 通过模板引擎实现页面渲染。配置默认的模板引擎(如 EJS):
// app/config/config.default.js module.exports = { view: { engine: 'ejs' } };
创建一个简单的 EJS 模板文件 views/index.ejs
:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Simple Egg.js App</title> </head> <body> <h1><%= ctx.body %></h1> </body> </html>
在控制器中使用模板引擎:
// app/controller/hello.js module.exports = { async index(ctx) { ctx.body = 'Hello, World!'; ctx.render('index', { title: 'Hello World' }); }, async customAction(ctx) { ctx.body = `Custom action called. Query params: ${JSON.stringify(ctx.query)}`; ctx.render('index', { title: 'Custom Action' }); } };
访问 http://localhost:3000/
将显示渲染后的模板。
部署 egg.js 应用至服务器通常涉及搭建和配置 Nginx 或其他 HTTP 服务器作为反向代理。以下是一般的部署步骤:
创建 Nginx 配置文件,例如 nginx.conf
:
http { upstream backend { server localhost:3000; } server { listen 80; server_name your.domain.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
确保 Nginx
服务已启动,并且监听 80
端口。
将 egg.js 项目部署至服务器,通常可以通过 SSH 连接到服务器,将项目文件通过 scp
或 rsync
命令传输过去,并确保服务器上已安装了 Node.js。
完成部署后,使用 Nginx
的健康检查功能或在服务器上运行 ping
检查应用是否正常运行。
通过本指南,你已经掌握了使用 egg.js 构建 web 应用的基础知识,从环境搭建、基本概念理解到简单的功能实现,以及如何部署到生产环境。egg.js 的灵活性和强大的中间件支持使得它成为构建高性能 web 应用的理想选择。随着实践的深入,你可以进一步探索 egg.js 的更多特性,如自动化测试、性能优化等,以构建更加复杂和安全的 web 应用。