Shu-How Zの小窝

Loading...

Egg.js入门视频教程 - 200分钟学会Egg.js框架 掌握全栈开发( 完结)

Egg.js入门视频教程 - 200分钟学会Egg.js框架 掌握全栈开发( 完结)

https://www.bilibili.com/video/BV1s3411C71V 1

01.课程介绍和Egg.js开发环境搭建

Egg.js的语法仍然是JavaScript。也就是说,你不用再学习Golang或者Java这样的基础语言了。
而是只要学习Egg.js的框架API,就可以快速开发全栈。
Egg.js是阿里旗下为数不多的,让人放心使用的开源项目。Egg.js为企业级框架和应用而生的Node.js框架,Egg(简写)奉行【约定优于配置】的框架,按照一套同意的约定进行应用开发。适合团队开发,学习成本小,减少维护成本。

yarn create egg --type-simple

特征对比
Egg.js
Express/Koa
代码规范性
符合MVC模式
灵活编码
(MVC开发模式)
Controller/Service/View
没有明确规范
学习成本

创建机制/扩展机制


多线程管理



HttpClient集成


02.Egg.js项目结构介绍

egg3

yarn run dev 开发

yarn start 服务终端 一直run

yarn stop

03.Controller控制器的编写方法

04.Egg.js下的单元测试编写

yarn test 单元测试

如果是异步 测试也要异步

async getGirls(){
const{ctx}= this;await new Promise(resolve =>{
setTimeout(()=>{
resolve(ctx.body ='<h1>小红,正向你走来<h1>');
},5000);
});

05.Get请求和参数传递

//自由传参模式

router.get('/hello/:name', controller.home.hello);

post

REST Client vscode

根目录 test.http

config

//CSRF enable false config. security ={
csrf:{
enable: false,

ctx.body = ctx.request.body;

06.POST请求和参数接受

07.Service的编写和使用方法

Service 封装的一个抽象层,数据库交互的代码保持Controller 逻辑更加简单独立性,Service 多个Controller写测试用例简单
Controller

const { Service } = require('egg');
class UserService extends Service {
  async getUser() {
    return 'egg';
  }
}
module.exports = UserService;

控制器
async upload(){
    const { ctx } = this;
    const res=await ctx.service.home.getUser();
    ctx.body=res
    // ctx.body = ctx.request.body;
  }
home文件名

08.View中使用EJS模板引擎-1

对SEO 非常友好
-Egg php 后端的一致性认可
|中台 一次登录 SPA

ejs thinkphp-ejs

yarn add egg-view-ejs

还要在插件配置开启

config.default
  config.view={
    mappping:{
      ".html":"ejs"
    }
  }
  config.ejs={}
plugin.js
exports.ejs={
  enable:true,
  package:'egg-view-ejs',
}

app/view/index.html

await ctx.render('index.html');

.ejs

09.View中使用EJS模板引擎-2
10.View中使用EJS模板引擎-3
11.Cookie的增删改查

ctx.cokies.set()

ctx.cookies.get()

加密

ctx.cookies.set('name', 'koo',{maxAge:10000,httpOnly:false,encrypt:true});

ctx.cookies.get('name', {encrypt:true});

12.Cookie的配置和加密

13.Session的相关操作

config.default 设置session...参数

14.Egg.js中间件的编写和使用

module.exports = options=>{
    return async (ctx, next)=>{
        console.log('111111111111111111111');
        await next();
    };
}
midde/log.js
config.default
  config.middleware=["logmidd"]

全局

路由

  const { router, controller,middleware } = app;
  router.get('/', middleware.logmidd,controller.home.index);

ctx.seesion.loomidd

15.Egg.js的Extend-application

15.Egg.js的Extend-application Egg虽然给我们提供了很多内置的方法,但有时候还是感觉不够用,这时候就需要我们自己对Egg中的方法进行扩展和编写了。
多种对象进行扩展
Egg.js可以对内部的五种对象进行扩展,我也作了一个表格,给出了可扩展的对象、说明、this指向和使用方式。

Egg.js丰富的扩展方式说明
this 指向
使用方式
application全局应用对象
app对象
this.app context请求上下文ctx对象
this.ctx request请求级别的对象,提供了请求相关的属性和方法
ctx.request对象this.ctx.request response请求级别的对象,提供了相应相关的属性和方法
ctx.response对象this.ctx.response helper帮助函数
ctx.helper对象this.ctx.helper

不需要配置

路径名字一样的

控制器
async index() {
    const { ctx ,app} = this;
    // ctx.body = 'hi, egg';
    ctx.cookies.set('name', 'koo',{maxAge:10000,httpOnly:false,encrypt:true});
    ctx.cookies.get('name', {encrypt:true});
    console.log(app.currentTime(),5555555)
    await ctx.render('index.html',{name:'koo'});
  }

extend/application.js
module.exports={
    //extends fum
    currentTime(){
        return new Date().getTime();
    }
}

16.Egg.js的Extend-context
17.Egg.js的Extend-request
18.Egg.js的Extend-response和helper

19.定时任务的编写

app >schedule> Js get_time.js

写日志 定时等等 安规范命名 自动加载

cron 定时任务格式

备份数据库...

const { Subscription } = require('egg');

class GetTime extends Subscription {
  static get schedule() {
    return {
      cron: '0 0 0 * * *', // 每天0点0分0秒执行一次
      interval: '1s', // 1m 分钟间隔
      type: 'all', // 指定所有的 worker 都需要执行
    };
  }

  async subscribe() {
    console.log('定时任务执行了');
    // 获取当前时间
    // const currentTime = this.ctx.helper.currentTime()
    // 获取当前时间
    // const currentTime2 = this.ctx.helper.currentTime()
  }
}

module.exports = GetTime;
//app >schedule> Js get_time.js

20.Egg.js配置连接MySql数据库

egg-mysql plugins.js配置

config.default config.mysql+++ 配置地址密码...

操作数据库 要 try 死锁,...

app.mysql.select('xx') 服务操作

21.Egg.js操作MySql数据库-1(查询)
22.Egg.js操作MySql数据库-2(增、改、删)

简化操作sql egg-mysql 不是orm

posted @ 2024-12-12 11:04  KooTeam  阅读(65)  评论(0)    收藏  举报