Egg 概述

  1. 官网

  2. Egg 为企业级框架和应用而生,希望由 Egg 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本;

  3. Egg 奉行 约定优于配置,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是 钉子,可以流动起来;

    • 没有约定的团队,沟通成本是非常高的,比如有人会按目录分栈而其他人按目录分功能,开发者认知不一致很容易犯错;
    • 但约定不等于扩展性差,相反 Egg 有很高的扩展性,可以按照团队的约定定制框架;
    • 使用 Loader 可以让框架根据不同环境定义默认配置,还可以覆盖 Egg 的默认约定;

工程对比

  1. 使用 基础库 的工程

  2. 使用 Egg 的工程

Egg 的特点

  1. 整合了后端技术,提供一站式开发体验

  2. 制定了一套规范,统一了开发模式

  3. 提供了各种插件,具备灵活的扩展能力

  4. Convention Over Configuration 约定优于配置

  5. 内置多进程管理

  6. 使用 MVC 模式

Egg 应用场景

  1. 中间服务器

  2. 纯后端服务

Hello World

使用 Egg 搭建工程

  1. 方式1: 使用 egg 脚手架

  2. 方式2: 手动搭建

    # 安装 egg 核心库
    npm i egg 
    
    # 安装 egg 命令行工具
    npm i -D egg-bin 
    

实现代码

  1. 目录结构:

    root
    ├── app  # 应用程序目录,几乎所有核心代码都在此目录
    │   ├── controller  # 控制器目录,每个控制器用于处理请求
    │   │   └── home.js  # 某个控制器
    │   └── router.js # 路由设置,将请求路径、方法映射到控制器
    ├── config # 配置目录
    │   └── config.default.js # 默认配置
    └── package.json
    
  2. 编写代码

    js
    js
    js
    // app/controller/home.js
    const Controller = require('egg').Controller;
    
    class HomeController extends Controller {
      async index() {
        this.ctx.body = 'Hello world';
      }
    }
    
    module.exports = HomeController;
    
    // app/router.js
    module.exports = app => {
      const { router, controller } = app;
      router.get('/', controller.home.index);
    };
    
    // config/config.default.js
    exports.keys = <此处改为你自己的 Cookie 安全字符串>;
    
  3. 添加 npm scriptspackage.json

    {
      "scripts": {
        "dev": "egg-bin dev"
      }
    }
    

运行

访问:http://localhost:7001

npm run dev

核心概念

约定

  1. Egg 选择了 Koa 作为其基础框架,在它的模型基础上,进一步对它进行了一些增强;

  2. Egg 中使用了很多约定,包括对文件夹的约定、对文件名的约定等等,这些约定的存在,减少了大量的配置;

运行流程

  1. 生成配置egg 会在启动时读取 config 文件夹中的配置,以及 app/router.js 中的路由信息,然后将最终的配置生成到 run 文>件夹中

  2. 启动 eggegg 会在内部创建 Koa 实例,并作出适当的初始化工作,然后监听 7001 端口(默认)

  3. 匹配路由egg 在内部使用了 @koa/router ,会根据路由表中请求的路径和方法,把请求交给指定的 action 进行处理

  4. 请求处理egg 遵循 MVC 模式,请求始终是交给Controller中的Action进行处理

    • Controller 表现为一个类,继承自 egg 中的 Controller
    • Action 表现为一个 Controller 中的实例方法,用于处理请求
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. Egg 概述
    1. 1.1. 工程对比
    2. 1.2. Egg 的特点
    3. 1.3. Egg 应用场景
  2. 2. Hello World
    1. 2.1. 使用 Egg 搭建工程
    2. 2.2. 实现代码
    3. 2.3. 运行
  3. 3. 核心概念
    1. 3.1. 约定
    2. 3.2. 运行流程