egg笔记

作者: divcssjs | 来源:发表于2019-07-30 20:02 被阅读0次

创建egg项目

npm i egg-init -g

egg-init egg-demo --type=simple

egg-mysql传参

get:this.ctx.query
post : this.ctx.request.body
动态路由:this.ctx.params

前台组件内部发请求传参的时候不能直接传[] 数组,只能传字符串格式,JSON.parse([]),不然或报错。是个坑🕳

MVC框架

M:数据层 Model

V:视图 View

C:控制 Controller

跟express对比

MVC

资源充分利用 多核多线程 | express 1核

进程:4个

目录结构

app 源码 入口

​ Controller 控制层 不做逻辑 控制view和数据

​ public 静态资源

​ service 数据库操作 增删改查

​ router.js 路由配置

config 配置

egg简单流程

1.数据库配置

config/config.default.js

config.mysql = {
    // 单数据库信息配置
    client: {
      // host
      host: 'localhost',
      // 端口号
      port: '3306',
      // 用户名
      user: 'root',
      // 密码
      password: 'root',
      // 数据库名
      database: 'muen',
    },
    // 是否加载到 app 上,默认开启
    app: true,
    // 是否加载到 agent 上,默认关闭
    agent: false,
  };
2.config/plugin.js
module.exports = {
  mysql : {
    enable: true,
    package: 'egg-mysql',
  }
};
3.controller控制层 a.js
const Controller = require('egg').Controller;
class A extends Controller{
    //可能用到异步操作
    async index(){
        const { ctx } = this;//ctx类似封装的req,res
        // *如果连接数据库 传参去service操作数据库逻辑
        // *ctx.service.a.index(传参数)
        ctx.body=[1,2,3]//这是直接返回的值  连接数据库的话可以不用写
    }
}
module.exports=A
4.service 数据逻辑 a.js
const Service = require('egg').Service;
calss A extends Controller{
    async index(接收参数){
        const { app } = this;
        await app.mysql.insert('数据表名',参数/object)
    }
    //  get/select('表名')  获取1条或多条数据
    //      get('posts', { id: 12 })
    //      select('posts')
    
    //  insert 添加
    
    //  const result = app.mysql.update({数据})  
    //  const foo = result.affectedRows === 1;  判断更新成功
    
    //  delete('',{id:123})
}

egg总结

1.简介

重量级 后端

js写作

阿里开发

2.安装

1.下载包 npm i egg-init -g

2.egg-init egg-demo --type=simple

3.cd egg-demo && npm i

3.目录

controller 控制层 返回页面 ctx.body="123"

service 数据>mysql(数据库)

public 静态 1.png http://localhost:7001/public/1.png

router.js 路由管理

view 测试接口 视图层 ejs模板引擎 <%%>

4.参数

get: ?name=dxw&age=18 | 动态路由 :id

post: 传参 有坑 egg安全策略限制 必须传特定的参数 (暂时解决方法就是关闭安全策略)

//  config/config.default.js
const config = exports = {
    security: {//关闭安全策略
      csrf: {
        enable: false,
      },
    }
  };

get接收的参数 query获取 this.ctx.query

5.参数校验:
//config/plugin.js
module.exports = {
  mysql: {//mysql数据库
    enable: true,
    package: 'egg-mysql',
  },
  validate:{//参数校验
    enable:true,
    package:'egg-validate'
  }
};

下载 egg-validate依赖 , 在Controller层内的逻辑里添加 try catch

const Controller = require('egg').Controller;

class Updata extends Controller {
    updata() {
        const { ctx } = this;
        console.log(ctx.request.body)

        try {//参数效验 传过来的值必须是number
            ctx.validate({ id: 'number' })
        } catch (e) {
            ctx.body = {
                code: 0,
                msg: e
            }
            return
            //不是number 就停止 不走下方 返回错误信息
        }

        ctx.service.updata.updata(ctx.request.body);
        ctx.body = {
            code: 1,
            msg: '更新成功'
        }
    }
}

module.exports = Updata;
image.png

当前我传过来的id是字符串形式
效验的id是number
不匹配,就会返回错误信息 "should be a number"

image.png

上述的return关键字就会阻止 下方的成功返回信息 和 传到Service层的方法

参数效验 : egg-validate 完。

6.路由重定向
router.redirect('/','/public/aa.html',302)   // 加一个状态码

相关文章

  • egg笔记

    创建egg项目 npm i egg-init -g egg-init egg-demo --type=simpl...

  • egg+mongodb 配置

    安装egg npm i egg-init -g egg-init egg-example --type=simpl...

  • Error: EACCES: permission denied

    全局安装egg-init后,通过 egg-init egg --type=simple 命令创建egg项目,报错 ...

  • egg学习笔记

    安装egg 我们推荐直接使用脚手架,只需几条简单指令,即可快速生成项目(npm >=6.1.0): 启动项目: 目...

  • egg

    一 、egg.js之解决跨域问题(egg-cors) 下载 egg-cors 包npm i egg-cors --...

  • 使用egg + sequelizejs 开发一个电商平台

    egg-commerce https://github.com/sfyr111/egg-commerce egg ...

  • egg 相关资源

    egg-onerror : egg 异常捕获 https://github.com/eggjs/egg-onerror

  • egg-mongoose 增删改查

    egg 基本框架的搭建 egg.js官网 一、egg.js 添加 egg-mongoose 插件 1. 在plug...

  • 课程表后台基础框架文档

    egg-syllabus-framework 快速开始 下载egg模板,并安装依赖 安装egg-syllabus-...

  • 2.14

    这是语言学习笔记 √英语 1.Charlotte's Web pen围栏,畜栏【Wilbur住的地方】 egg s...

网友评论

      本文标题:egg笔记

      本文链接:https://www.haomeiwen.com/subject/vfznrctx.html