在router.js修改成以下格式require引用git
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放置不一樣內容,寫法和原來的路由文件寫法一致。github
路由重定向json
在Controller中使用api
this.ctx.status = 301; This.ctx.redirect()
在routers文件中使用app
router.redirect('/new','/',302)
2、Egg中間件指定模塊引用jsonp koa中間件在egg中使用koa
方法1async
const auth = app.middleware.auth() //在單獨模塊中定義 module.exports = app => { const { router, controller } = app; router.get('/admin/user',auth,controller.admin.user.index); };
在路由的第二個參數填入中間鍵名稱函數
在router第二個參數中引用。jsonp
中間鍵的通用配置網站
Enable 是否開啓
Match 設置只有符合條件的使用
Ignore 排除使用中間件的目錄,不能和match同時使用
2.//對後臺管理通用配置 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: 1024, 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=0; 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;