egg.js-基于koa2的node.js进阶(一)
一、路由进阶Egg路由的路由重定向,路由分组
在router.js修改为如下格式require引用
module.exports = app => {
const { router, controller } = app;
require('./routers/admin')(app);
require('./routers/index')(app);
require('./routers/api')(app);
};
新建 routers文件夹,分别建admin.js index.js api.js放置不同内容,写法和原来的路由文件写法一致。
路由重定向
在Controller中使用
this.ctx.status = ; This.ctx.redirect()
在routers文件中使用
router.redirect('/new','/',)
二、Egg中间件指定模块引用jsonp koa中间件在egg中使用
方法1
const auth = app.middleware.auth() //在单独模块中定义
module.exports = app => {
const { router, controller } = app;
router.get('/admin/user',auth,controller.admin.user.index);
};
在路由的第二个参数填入中间键名称
在router第二个参数中引用。
中间键的通用配置
Enable 是否开启
Match 设置只有符合条件的使用
Ignore 排除使用中间件的目录,不能和match同时使用
.//对后台管理通用配置
config.adminAuth ={
match: '/admin' //对某个路由配置表示只匹配该路由
}
3.Koa-jsonp使用 https://github.com/kilianc/koa-jsonp
Npm i koa-jsonp
//koa 中的应用
// jsonp = require("koa-jsonp")
// app.use(jsonp())
新建中间件jsonp.JS
module.exports =require("koa-jsonp");
Config.default.js中配置
config.middleware = ['jsonp'];
koa-compress的使用
建立中间件引用
module.exports =require("koa-compress");
Config.default.js中配置
config.compress = {
threshold: ,
enable:false,
match(ctx){
if(ctx.request.url=='/yingu' || ctx.request.url == '/news'){
return true
}
return false;
}
}
非标准写法
let koaJsonp = require("koa-jsonp");
module.exports = (option,app) => {
return koaJsonp(option)
}
三、控制器控制器继承的使用
新建core/base.js作为公共controller
'use strict';
const Controller = require('egg').Controller;
class BaseController extends Controller {
async success(redirectUrl = "/") {
await this.ctx.render('public/success',{url:redirectUrl});
}
async error(redirectUrl) {
await this.ctx.render('public/error',{url:redirectUrl || "/"});
}
}
module.exports = BaseController;
在list.js中修改引用的controller
const BaseController = require('../core/base.js');
class ListController extends BaseController { //继承BaseController
async index() { await this.success('/news/1') //直接this使用公共内容 } }
四、定时任务模块的使用,和实现网站监控功能
在app/schedule写定时任务模块,新建watchfile.js
const Subscription = require('egg').Subscription;
let i=;
class WatchFile extends Subscription {
// 通过 schedule 属性来设置定时任务的执行间隔等配置
static get schedule() {
return {
interval: '5m', // 1 分钟间隔
type: 'all', // 指定所有的 worker 都需要执行
disable:false //是否开启
};
}
// subscribe 是真正定时任务执行时被运行的函数
async subscribe() {
i++
console.log(i)
}
}
module.exports = WatchFile;
egg.js-基于koa2的node.js进阶(一)的更多相关文章
- iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源
视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks
视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层
视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...
- egg.js-基于koa2的node.js入门
一.Egg.JS 简介 Egg.JS是阿里开发的一套node.JS的框架,主要以下几个特点: Egg 的插件机制有很高的可扩展性,一个插件只做一件事,Egg 通过框架聚合这些插件,并根据自己的业务场景 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 规范与部署
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923889450 规范与部署 懒人推动社会进步. 本篇中,我们会讲述三个知识点 定制书写规范 开发环境运行 如何 ...
随机推荐
- Python小白学习之路(三)—【数字功能】【字符串功能】
数字(int)常见功能 在网络课上,老师把这些功能称为神奇的魔法,想要揭开魔法神奇的面纱,想要看看有什么招数,在Pycharm里敲击三个字母(int),按住Ctrl,将鼠标点在int上,这时鼠标会变成 ...
- leetcode-917-仅仅反转字母
题目描述: 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转. 示例 1: 输入:"ab-cd" 输出:"dc-b ...
- nginx添加认证
1.检查工具是否安装,如果未安装则使用yum安装 #htpasswd 有以上输出表示已经安装,如果没有按装,使用如下命令安装: #yum -y install httpd-tools 2.htpas ...
- Linq基础知识小记四之操作EF
1.EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Dat ...
- WebService-01-使用jdk发布第一个WebService服务并调用
Webservice是SOAP+XML,SOAP是基于Http的,Http底层是Socket,先回顾一下Socket: Server: public class Server { public sta ...
- HDFS DATANODE 磁盘容量的最小值
HDFS的DATANODE的剩余空间具体要到多大?关于这个问题,下面记录下对这个问题的调查 昨天,讨论群里面给出了一个异常: op@odbtest bin]$ hadoop fs -put ../tm ...
- [转]asp.net core中的View Component
解读ASP.NET 5 & MVC6系列(14):View Component http://www.cnblogs.com/TomXu/p/4496486.html
- IRing项目开发
最近在做一个应用,名字我把它命名为IRing. 这是一款管理手机铃声的软件,主要目的是将白天和晚上的铃声设置进行区分,为用户提供方便.
- 《LeetBook》leetcode题解(19):Remove Nth Node From End of List[E]——双指针解决链表倒数问题
我现在在做一个叫<leetbook>的开源书项目,把解题思路都同步更新到github上了,需要的同学可以去看看 这个是书的地址: https://hk029.gitbooks.io/lee ...
- 如何VMare虚拟机里安装Mac操作系统(图文详解)
不多说,直接上干货! 大部分用户玩的是windows,现在,跟随我来玩玩Mac. 1. VMware Workstation 11 2. unlocker 206(for OS X 插件补丁),这是V ...