亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【備戰春招】第7天 eggjs

標簽:
Node.js

课程名称:Node.js工程师养成计划


课程章节: 第九章


课程讲师:北瑶



课程内容

    

        Egg 的插件机制有很高的可扩展性,一个插件只做一件事

$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i
$ npm run dev
$ open http://localhost:7001

        以上是eggjs 得安装方法


他的写法根mvc模式有点相似

'use strict';

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

class HomeController extends Controller {
  async index() {
    // const { ctx } = this;
    // ctx.body = 'hi, egg';
    var serviceData = this.service.user.getUserList()
    this.ctx.body = serviceData
  }
}

module.exports = HomeController


配置路由映射:

// app/router.js
'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  app.foo = 'app-foo'
  const { router, controller } = app;
  router.get('/', controller.home.index);
};
// app/service/user.js
const Service = require('egg').Service
class UserService extends Service {
  getUserList(){
    return [
      {id:0,username:'Monica'}
    ]
  }
}

module.exports = UserService


通过继承egg得service 返回了一个 getUserList()

https://img1.sycdn.imooc.com//63ead7440001eb9403070051.jpg

在egg中使用插件得方式进行引用 mongoose


为什么要插件

我们在使用 Koa 中间件过程中发现了下面一些问题:

  1. 中间件加载其实是有先后顺序的,但是中间件自身却无法管理这种顺序,只能交给使用者。这样其实非常不友好,一旦顺序不对,结果可能有天壤之别。

  2. 中间件的定位是拦截用户请求,并在它前后做一些事情,例如:鉴权、安全检查、访问日志等等。但实际情况是,有些功能是和请求无关的,例如:定时任务、消息订阅、后台逻辑等等。

  3. 有些功能包含非常复杂的初始化逻辑,需要在应用启动的时候完成。这显然也不适合放到中间件中去实现。

综上所述,我们需要一套更加强大的机制,来管理、编排那些相对独立的业务逻辑。


egg-mongoose

$ npm i egg-mongoose --save

https://img1.sycdn.imooc.com//63eadada00010af008870190.jpg

在egg.js中 可以通过声明 确认开启或者关闭




https://img1.sycdn.imooc.com//63eadaec0001e0cb09470531.jpg





點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
27
獲贊與收藏
19

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消