脚手架安装

1、安装

$ npm i egg-init -g
$ egg-init egg-example --type=simple   //egg提供的一款名为simple的模板
$ cd egg-example
$ npm i    //安装依赖

2、项目目录的讲解

1、middleware 中间件定位是拦截用户的请求,如鉴权,安全检查,访问日志等;
2、extend 防止扩展文件,作用在于将一些常用的动作抽离在js文件内的一个独立的function ,可用js处理一些复杂的逻辑。
3、schedule 防止定时任务文件,如定时从远程api更新本地缓存,定时进行文件删除;

3、启动项目

//启动项目的命令
1、cnpm run start  //用于实际项目
2、cnpm run dev   //用于开发npm run dev

然后浏览器打开http://localhost:7001 就可以看到 “hellow,egg” 字样说明运行成功。

 "scripts": {"dev": "egg-bin dev  --host 192.168.6.58",    // egg 使用ip访问}

Config

运行环境配置

//config/config.{env}.js
--env = {env}


Extend

// app/extend/response.js
module.exports = {set foo(value) {this.set('x-response-foo', value);},
};this.response.body= 'bar';  => this.body= 'bar';   =>   this.response.foo = 'bar';

模板引擎

ejs官方网站

npm install egg-view-ejs -s

数据库(egg-mysql)

1、get 查找一条

let result = await this.app.mysql.get("user",{id:1})

2、查找数据的另一种方式

let result = await this.app.mysql.select("user",{
where:{id:1}
})

3、增加数据

let result = await this.app.mysql.insert("user",{username:"lisi",password:"1234"})

4、修改数据的第一种方式:根据主键修改

let result = await this.app.mysql.update('user',{ id:2, username:'赵四' });

//修改数据的第二种方式:通过 sql 来修改数据

let results=await this.app.mysql.query('update user set username = ? where id = ?',["王五",2]);

5、删除数据

let result= await this.app.mysql.delete('user',{ id:3 });

6、执行 sql

this.app.mysql.query(sql,values);

7、mysql 事务

const conn=await this.app.mysql.beginTransaction();
try{await conn.insert('user',{'username':'xiao1','password':'1111'});await conn.update('user',{id:2,username:'黑子'});await conn.commit();  //提交事务
}catch(err){await conn.rollback();//回滚事务throw err;
}

VS插件

安装eggjs插件egg controller    //快速生成controller  egg service    //快速生成service egg config    //快速生成configegg plugin    //快速生成plugin

问题解决

1. 安全威胁csrf的防范

报错信息:

invalid csrf token. See https://eggjs.org/zh-cn/core/security.html#安全威胁csrf的防范
nodejs.ForbiddenError: invalid csrf token
解决方案:

  在 config/config.default.js 中新增// 框架的安全插件是默认开启的,如果我们想关闭其中一些安全防范,直接设置该项的 enable 属性为 false 即可config.security = {csrf: {enable: false,},};

基础编写

1、静态资源(images,css,js等文件)放到app/public 目录即可;
2、模板渲染:
绝大多数情况,我们都需要读取数据后渲染模板,然后呈现给用户。故我们需要引入对应的模板引擎。
1). 先安装对应的插件 egg-view-nunjucks :

$ npm i egg-view-nunjucks --save

2). 开启插件:

// config/plugin.js
exports.nunjucks = {enable: true,package: 'egg-view-nunjucks'
};
// config/config.default.js
// 添加 view 配置
exports.view = {defaultViewEngine: 'nunjucks',mapping: {'.tpl': 'nunjucks',},
};

基础语法

1、controller 中指向页面:

yield this.ctx.render(‘news/list.tpl’,datalist);

2、页面中循环:

  <ul>{% for item in list %}<li><a href="{{item.url}}">{{item.title}}</a></li>{% endfor %}</ul>

3、控制器中获取动态路由:

1). router.js 中配置路由

  router.get('/list/:id', controller.list.checkId);

2). controller 中获取路由参数

  * checkId(){const {ctx} = this;ctx.body = `"您输入的是:"+${ctx.params.id}`;}

浏览器:

4、控制器中传参给页面:

1). 控制器中定义参数的值

2). 页面获取参数

浏览器中:

5、自定义工具类及其引用方法:

1). 在 app目录下新建一个util的文件夹,这里用来放置公用类

2). 在 helper.js 中定义

3). 在controller 中的js文件里使用

浏览器:

6、获取路由中的参数

const { ctx } =  this;
console.log(ctx.query)  // 获取  ?id=123&name=***
console.log(ctx.params)  // 获取  /123/***

egg.js 使用笔记相关推荐

  1. egg.js学习笔记

    文章目录 安装egg 目录结构 路由相关 1. get传值 2. 4种配置方法 重定向 1. ctx 2. 路由重定向 3.路由分组 控制器 自定义 Controller 基类 模板引擎 1. 安装和 ...

  2. uniapp+egg.js+react实现全栈笔记App

    软件介绍 这是一个笔记App,主要使用的技术是uniapp+egg.js+react 软件预览图片: 首页: 编辑页面.png 编辑和登录页面 编辑页面2.png 项目地址: https://gith ...

  3. 【笔记-node】《Egg.js框架入门与实战》、《用 React+React Hook+Egg 造轮子 全栈开发旅游电商应用》

    20210226-20210227:<Egg.js框架入门与实战> 课程地址:https://www.imooc.com/learn/1185 第一章 课程导学 01-01 课程介绍 一. ...

  4. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...

  5. React+Egg.js实现全栈个人博客

    React+Egg.js实现全栈个人博客 这是一个个人博客软件,前台和后台使用的都是React,后端使用egg.js,地址 前台 文章列表 1.png 文章详情 2.png 后台管理系统 添加文章 3 ...

  6. 我开发了一个基于 Egg.js 的后端脚手架

    背景 之前基于 Egg.js 开发了几个项目,发现每个项目中都有配置文件.数据库连接操作.数据模型定义.微信登陆授权处理等功能,而做新项目时总会复制之前的项目来删删改改,有时候在 A 项目中添加了一个 ...

  7. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计 1

    前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...

  8. ArcGIS JS 学习笔记4 实现地图联动

    原文:ArcGIS JS 学习笔记4 实现地图联动 1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而 ...

  9. egg.js连接mysql数据库遇到的问题

    最近在策划写一个博客采用前后端分离模式,前端使用vue后端使用egg.js,我也是刚开始学习egg.js,所以会将自己踩的坑都记录下来. 首先介绍下后端为什么采用egg.js吧,之前我是学习了koa2 ...

最新文章

  1. Gitlab备份与恢复[七]
  2. 只要用心就可以看见 十个幸福瞬间照片
  3. (jquery插件)打造百分比动态色彩条
  4. android四大组件之Service 注册广播接收者
  5. Python暴力破解凯撒加密的文本
  6. VMware虚拟机中不识别移动硬盘
  7. 红帽急了:新年的 RHEL 将有低成本或免费版
  8. 马云电脑水平曝光;快狗打车回应裁员50% ;华为邀请开发者加入应用商店 | 极客头条...
  9. 面试 其实就是短时间内展现出你最好的自我
  10. Python使用scrapy框架编写自动爬虫爬取京东商品信息并写入数据库
  11. GPIO设备虚拟文件结点的创建【转】
  12. Educational Codeforces Round 51 (Rated for Div. 2).B. Relatively Prime Pairs(水题)
  13. itools备份短信到android,【itools备份文件路径】itools备份路径_itools备份短信-系统城...
  14. 为什么说运维的未来必然是 AIOps?
  15. 如何重装java tm_彻底重装JDK的方法
  16. 数据库:数据查询(指定的列、全部列、经过计算的值、消除重复的行、查询满足条件的元组、比较查询、范围查询、集合查询、字符匹配查询)
  17. 关系模式判断候候选关键字 与 函数依赖无损连接
  18. 那些让面试官直呼内行的Java知识点(一)
  19. Springboot AOP注解方式获取请求参数及返回值并发送至rabbitMQ
  20. ubuntu如何设置默认程序打开方式

热门文章

  1. 【九日集训】《LeetCode刷题报告》题解内容 Ⅲ
  2. https网站请求下载http的资源会被拦截
  3. 来自GitHub的系列渗透测试工具
  4. 总线、通信接口、串行通信、并行通信详解
  5. 慧静51单片机软件_MCS-51单片机程序求极值
  6. 查看Eigen、CMake、ceres、opencv版本
  7. 北理工乐学H:洗牌(选作)
  8. xp职称计算机考试题库,全国职称计算机考试题库(WindowsXP模块)
  9. 使用Xshell修改文件
  10. Python安装Graphviz 详细图文教程