给萌新的NodeJs技术栈教程(egg篇1)--Egg.js简介

205 阅读3分钟

Egg.js 极简入门概览

  1. Egg.js 简介与框架特点

  2. 安装与环境搭建

  3. 项目结构与约定

  4. 路由与控制器(Controller)

  5. 服务(Service)

  6. 实现一个简单的 TodoList 增删改查小程序

Egg.js 是一个基于 Node.js 的企业级 Web 开发框架,由阿里巴巴团队开发。它旨在解决大型企业级应用的开发、部署和维护问题。Egg.js 的主要特点如下:

  • 约定优于配置:Egg.js 强调约定优于配置的原则,提供了一套统一的约定和规范,使得开发人员能够更专注于业务逻辑,而不是配置细节。

  • 插件机制:Egg.js 支持丰富的插件机制,允许开发人员通过编写或引用插件来扩展框架的功能。这有助于实现代码的模块化和重用,提高开发效率。

  • 渐进式开发:Egg.js 鼓励渐进式开发,允许开发人员逐步构建和优化应用程序,而不是从头开始。这使得 Egg.js 适用于各种规模的应用程序开发。

  • 基于 Koa:Egg.js 基于 Koa,一个轻量级、高性能的 Node.js Web 框架。这使得 Egg.js 继承了 Koa 的优点,并在其基础上进行了扩展。

  1. 安装与环境搭建:

首先,确保您已经安装了 Node.js(建议使用 LTS 版本)和 npm(Node.js 包管理器)。

接下来,全局安装 Egg.js 脚手架工具 egg-init,以便轻松创建新项目:

npm install -g egg-init

使用 egg-init 创建一个新项目:

egg-init my-egg-app --type=simple

进入项目目录并安装依赖:

cd my-egg-app
npm install

现在,您可以使用以下命令启动项目:

npm run dev

浏览器访问 http://localhost:7001,您将看到 Egg.js 的欢迎页面。

  1. 项目结构与约定:

Egg.js 采用一种约定优于配置的方法,规定了项目的目录结构和文件命名。以下是一个典型的Egg.js 项目结构:

my-egg-app
├── app
│   ├── controller          // 控制器目录,用于处理客户端请求和返回响应
│   ├── service             // 服务目录,用于封装业务逻辑和数据操作
│   ├── middleware          // 中间件目录,用于处理 HTTP 请求和响应的前后逻辑
│   ├── model               // 模型目录,用于定义数据模型和数据库操作
│   ├── public              // 公共资源目录(静态文件),如样式、脚本、图片等
│   ├── view                // 视图目录,用于存放模板文件(如果使用了模板引擎)
│   ├── extend              // 扩展目录,用于自定义框架或应用的扩展功能
│   ├── router.js           // 路由配置文件,定义 URL 和控制器之间的映射关系
│   └── ...
├── config
│   ├── config.default.js   // 默认配置文件,用于存放通用的配置信息
│   ├── config.prod.js      // 生产环境配置文件,用于覆盖默认配置中生产环境的设置
│   ├── config.test.js      // 测试环境配置文件,用于覆盖默认配置中测试环境的设置
│   ├── config.local.js     // 本地开发环境配置文件,用于覆盖默认配置中本地开发环境的设置
│   ├── plugin.js           // 插件配置文件,用于启用和配置插件
│   └── ...
├── test                    // 测试目录,用于存放测试用例和相关工具
│   ├── app
│   ├── config
│   └── ...
├── .gitignore              // Git 忽略文件配置
├── .eslintignore           // ESLint 忽略文件配置
├── .eslintrc               // ESLint 配置文件
├── .prettierignore         // Prettier 忽略文件配置
├── .prettierrc             // Prettier 配置文件
├── package.json            // 项目描述和依赖管理文件
├── README.md               // 项目说明文档
└── ...