为了账号安全,请及时绑定邮箱和手机立即绑定

egg.js入门: 快速搭建与基础使用指南

标签:
Node.js
引言

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 配置文件,例如 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 连接到服务器,将项目文件通过 scprsync 命令传输过去,并确保服务器上已安装了 Node.js。

完成部署后,使用 Nginx 的健康检查功能或在服务器上运行 ping 检查应用是否正常运行。

结语

通过本指南,你已经掌握了使用 egg.js 构建 web 应用的基础知识,从环境搭建、基本概念理解到简单的功能实现,以及如何部署到生产环境。egg.js 的灵活性和强大的中间件支持使得它成为构建高性能 web 应用的理想选择。随着实践的深入,你可以进一步探索 egg.js 的更多特性,如自动化测试、性能优化等,以构建更加复杂和安全的 web 应用。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消