返回

Egg.js 101:零基础入门 CRUD

前端

在全栈开发的世界里,框架起着至关重要的作用,让我们能够轻松地构建健壮且可维护的应用程序。Egg.js 脱颖而出,成为 Node.js 开发人员的首选,因为它融合了卓越的性能、出色的可扩展性和对流行技术的现成支持。

本文将带你踏上 Egg.js 之旅,从零开始学习如何实现基本 CRUD(创建、读取、更新、删除)操作。我们将深入探讨其特性,并通过一个简单的示例逐步引导你完成整个过程。

Egg.js 优势简介

作为一款面向企业级开发的 Node.js 框架,Egg.js 拥有诸多优势:

  • 高性能: 得益于其基于 Egglet 插件的异步架构,Egg.js 能够处理大量并发请求,确保应用程序始终保持快速响应。
  • 可扩展性: 通过模块化的设计,Egg.js 允许你轻松地添加或移除特性,满足不断变化的业务需求。
  • 集成友好: Egg.js 预先集成了一系列流行的技术,例如数据库、ORM 和模板引擎,简化了开发过程。

准备工作

在开始之前,你需要确保满足以下先决条件:

  • Node.js v12 或更高版本
  • npm 或 yarn 包管理器
  • 数据库(如 MySQL 或 PostgreSQL)

构建 Egg.js CRUD API

1. 安装 Egg.js

首先,通过以下命令创建新的 Egg.js 项目:

npm init egg-ts --type=simple

2. 数据库连接

配置数据库连接,在 config/config.ts 中添加以下代码:

export default {
  mysql: {
    client: {
      // ... 数据库配置信息 ...
    },
    app: true,
    agent: false,
  },
};

3. ORM 集成

Egg.js 通过 egg-sequelize 集成了 Sequelize ORM,允许我们轻松地与数据库交互。安装 egg-sequelize 并将其添加到 config/plugin.ts 中:

export default {
  sequelize: {
    enable: true,
    package: 'egg-sequelize',
  },
};

4. 模型定义

app/model 目录下创建 User.ts 模型文件,定义数据表结构:

import { Model, DataTypes } from 'sequelize';
export default class User extends Model {
  // ... 字段定义 ...
}

5. 路由设置

app/router.ts 中定义 RESTful API 路由:

export default class Router {
  @get('/users')
  public async index() {
    // ... 获取所有用户 ...
  }

  @post('/users')
  public async create() {
    // ... 创建新用户 ...
  }

  @get('/users/:id')
  public async show() {
    // ... 获取指定用户 ...
  }

  @put('/users/:id')
  public async update() {
    // ... 更新指定用户 ...
  }

  @delete('/users/:id')
  public async destroy() {
    // ... 删除指定用户 ...
  }
}

6. 业务逻辑

app/service 目录下创建 UserService.ts 服务文件,封装业务逻辑:

export default class UserService {
  public async index() {
    // ... 获取所有用户业务逻辑 ...
  }

  public async create() {
    // ... 创建新用户业务逻辑 ...
  }

  // ... 其他业务逻辑 ...
}

7. 运行应用程序

最后,启动 Egg.js 应用程序:

npm run dev

总结

通过遵循这些步骤,你已经成功构建了 Egg.js 中的基本 CRUD API。Egg.js 强大的特性和易用性使其成为构建可扩展且高效的 Node.js 应用程序的理想选择。

不断探索 Egg.js 的更多功能,例如国际化、日志记录和测试,以充分利用它的潜力。通过本文中提供的信息和示例,你将能够自信地构建功能齐全且健壮的 Web 应用程序。