美文网首页
Egg.JS学习

Egg.JS学习

作者: AcessCors | 来源:发表于2019-06-13 16:01 被阅读0次

egg是标准的mvc模型,即为controller控制层,view视图层,module模型。
router主要是分发页面的请求,当访问该页面,将这个请求分发给对应的controller去完成。

//app->router.js
module.exports = app =>{
  const { router, controller } = app;
  router.get('/', controller.home.index);//此处为访问/地址时分发到controller下home文件中index方法。
  router.get('/list', controller.list.index);//此处为访问/地址时分发到controller下list文件中index方法。
  router.get('/news', controller.news.list);//此处为访问/地址时分发到controller下news文件中list方法。
}

// app->controller/home.js
const Controller = require('egg').Controller;
class HomeController extends Controller{
  async index(){
    this.ctx.body = 'Hello world';
  }
}
module.exports = HomeController;

//app-<controller/news.js
const Contriller = require('egg').Controller;
class NewsController extends Contriller{
  async list(){
    const ctx = this.ctx;
    const page = ctx.query.page || 1;
    const newsList = await ctx.service.news.list(page);//此处对应到service层中service->news.js->list方法
    await ctx.render('news/list.html', { list: newsList });//此处对应到view层中view->news->list.html,并且将list作为参数传递到list.html使用
  }
}
module.exports = NewsController;

//service->news.js
const Service = require('egg').Service;
class NewsService extends Service {
  async list(page = 1) {
    const { serverUrl } = this.config.news;//serverUrl从config.default.js中读取news的serverUrl 属性
    const res = await this.ctx.curl(`${serverUrl}/title/top`    , {
      method: "GET",
      dataType: "json",//设置返回数据类型为json,如果这里不设置需要将res.data JSON序列化
      headers:  this.config.headers
    });
    const result = res.data;
    // const result = JSON.parse(res.data)//将res.data转换成json格式
    return result.data
  }
}
module.exports = NewsService;

//app->view->news->list.html。此处的list是从controller中传过来的list
<html>
  <head>
    <title>模板</title>
    <link rel="stylesheet" href="/public/css/news.css"/>
  </head>
  <body>
    <ol class="news-view view">
      {% for item in list %}
        <li class="item">
          <a href="#">
            {% for details in item.list %}
              <span>{{details.titleName}}</span>
            {% endfor %}
          </a>
        </li>
        {% endfor %}
    </ol>
  </body>
</html>

config.default.js为egg.js的配置项文件。
Router 则主要用来描述请求 URL 和具体承担执行动作的 Controller 的对应关系, 框架约定了 app/router.js 文件用于统一所有路由规则。
Controller 负责解析用户的输入,处理后返回相应的结果。
Service 就是在复杂业务场景下用于做业务逻辑封装的一个抽象层。
1、保持 Controller 中的逻辑更加简洁。
2、保持业务逻辑的独立性,抽象出来的 Service 可以被多个 Controller 重复调用。
3、将逻辑和展现分离,更容易编写测试用例。

相关文章

  • uni-app写一个阅读类app

    这个程序主要是学习uni-app和egg.js,介绍:前端开发使用uni-app,后端使用egg.js,数据库使用...

  • egg.js 入门视频教程

    egg.js视频教程整理如下: 01 Egg.js的介绍、egg.js环境搭建、创建 运行egg项目(14分12秒...

  • Egg.JS学习

    egg是标准的mvc模型,即为controller控制层,view视图层,module模型。router主要是分发...

  • egg-mongoose 增删改查

    egg 基本框架的搭建 egg.js官网 一、egg.js 添加 egg-mongoose 插件 1. 在plug...

  • Egg.js框架学习

    框架内置基础对象 Application Application(简写为app) 是全局应用对象,在一个应用中,只...

  • Egg 的基本知识点

    1、Egg.js 是什么? Egg.js 是《阿里旗下产品》基于 Node.js 和 Koa 是一个 Nodejs...

  • 基于 Egg.js 构建 OAuth 2.0 服务器

    技术栈:Egg.js、MongoDB、EJS Egg.js 作为后台服务端框架; MongoDB 作为后台服务器的...

  • Egg框架应用Sequelize操作MySQL小结

    Egg.js,是阿里开源的企业级 Node.js 框架。相比Express、Koa,Egg.js更为轻量,是Koa...

  • 本周

    主要支持游戏上线及线上维护,了解拍摄平台需求 学习了egg.js基础工程基本学习完毕,ES5 ES6 Promis...

  • 【原创】快速搭建egg.js

    快速初始化 安装egg.js脚手架 初始化egg.js应用 安装应用依赖 启动项目 在localhost:7001...

网友评论

      本文标题:Egg.JS学习

      本文链接:https://www.haomeiwen.com/subject/lwjsfctx.html