• nodeJs--egg框架介绍



    一、egg框架介绍

    简单来说:egg.js 是『约定优先于配置』的一个 Node.js web 框架,
    基于MVC设计思想设计的。
    它具有以下特点:

    • 提供基于 Egg 定制上层框架的能力
    • 高度可扩展的插件机制
    • 内置多进程管理
    • 基于 Koa 开发,性能优异
    • 框架稳定,测试覆盖率高
    • 渐进式开发

    二、约定规则

    1 app/router.js:用于配置URL路由规则;
    2 app/controller/** :用于解析用户的输入,处理后返回相应的结果;
    3 app/service/: 用于编写业务逻辑层;
    4 app/public/
    : 用于放置静态资源;
    5 config/config.{env}.js: 用于编写配置文件;
    6 config/plugin.js 用于配置需要加载的插件;

    三、主要模块

    路由(router.js)

    定义了我们的路由规则,所有的请求都会通过这个路由规则去找对应的Controller,这样也可以做到统一管控。

    其业务逻辑如下图所示:
    在这里插入图片描述
    基本用法:

    router.verb('path-match', app.controller.action);
    router.verb('router-name', 'path-match', app.controller.action);
    router.verb('path-match', middleware1, ..., middlewareN, app.controller.action);
    router.verb('router-name', 'path-match', middleware1, ..., middlewareN, app.controller.action);
    
    • 1
    • 2
    • 3
    • 4

    verb 为请求方法
    router-name 给路由设定一个别名,可以通过 Helper 提供的辅助函数 pathFor 和 urlFor 来生成 URL。(可选)
    path-match - 路由 URL 路径。
    middleware1 - 在 Router 里面可以配置多个 Middleware。(可选)
    controller - 指定路由映射到的具体的 controller 上,controller 可以有两种写法:
    app.controller.user.fetch - 直接指定一个具体的 controller
    ‘user.fetch’ - 可以简写为字符串形式

    控制器(Controller.js)

    Controller负责解析用户的输入,处理后返回响应的结果。
    1.所有的Controller 文件都必须放在 app/controller目录下
    2.支持多级目录,访问时可以通过目录名级联访问。

    //如果路由为:
    router.get('/ajax1', controller.user.ajax1);
    //则控制器对应要有一个user.js文件并且文件中有ajax1方法
      async ajax1() {
        const { ctx } = this;
        ctx.body = [ 'ljy', 666 ];
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    服务(service)

    主要用于操作数据库
    需要手动下载:

    npm i --save egg-mysql
    
    • 1

    开启插件

    // config/plugin.js
    module.exports = {
      mysql: {
        enable: true,
        package: "egg-mysql"
      }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    配置数据库

    // config/config.default.js
    config.mysql={
        client:{
          //host
          host:"localhost",
          //端口
          port:"",
          //用户名
          user:"",
          //密码
          password:"",
          //数据库名
          database:""   
        }
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    使用方式:

      async getuserinfo(){
        var mySql = await this.app.mysql.query("select *from studentinfo")
        this.ctx.body=mySql
      }
    
    • 1
    • 2
    • 3
    • 4

    配置(Config)

    egg提供5种配置文件:

    • config.default.js:默认配置文件;
    • config.local.js:开发环境下的配置,与默认配置合并,同名则覆盖默认配置;
    • config.prod.js:生产环境下的配置,与默认配置合并,同名则覆盖默认配置;
    • config.test.js:测试环境下的配置,与默认配置合并,同名则覆盖默认配置;
    • config.unittest.js:单元测试环境下的配置,与默认配置合并,同名则覆盖默认配置;
  • 相关阅读:
    小白学Java
    【华为OD机试真题 JS】数字反转打印
    [附源码]Python计算机毕业设计SSM开心鲜花系统(程序+LW)
    Nginx安装教程-Linux
    瑞吉外卖项目:新增菜品与菜品分页查询
    模拟一个火车站售票小例子
    Android gradle dependency tree change(依赖树变化)监控实现
    爱上C语言:函数递归,青蛙跳台阶图文详解
    六、基础算法精讲:二叉树与递归
    【数据结构初阶】单链表补充内容+又双叒叕刷链表题
  • 原文地址:https://blog.csdn.net/qq_56973906/article/details/126209592