egg学习-抓取数据并ejs渲染到页面的过程

egg学习-抓取数据并ejs渲染到页面的过程

初始化

全局安装egg脚手架

npm i egg-init -g

创建egg项目

mkdir egg-example
cd egg-example
npm init egg --type=simple
npm i

启动项目

npm run dev

代码过程 MVC

M app/service 模型层 获取数据

V app/view 视图层 页面渲染

C app/controller 控制层 业务逻辑处理

router.js 配置路由 访问 controller里
'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.get('/news', controller.news.index);
  router.get('/newsContent', controller.news.content);
};
service news.js 获取数据return 出去
'use strict';

const Service = require('egg').Service;

class NewsService extends Service {
    //抓取新闻列表
  async getNewsList() {
    let api = this.config.api + 'appapi.php?a=getPortalList&catid=20&page=1';
    let response = await this.ctx.curl(api);
    let newsList=JSON.parse(response.data)
    // console.log(newsList)
    return newsList.result

  }
//抓取新闻详情
  async getNewsContent(aid) {
    let api = this.config.api + 'appapi.php?a=getPortalArticle&aid='+aid;
    let response = await this.ctx.curl(api);
    let newsList=JSON.parse(response.data)
    // console.log(newsList)
    return newsList.result
    
  }
}

module.exports = NewsService;
controller news.js 拿到service里面返回的数据 并render 到 ejs模板
'use strict';

const Controller = require('egg').Controller;

class NewsController extends Controller {
  async index() {
    let list= await this.service.news.getNewsList()
   await this.ctx.render('news.html',{
      list:list
    })
  }
  async content(){
    let aid =this.ctx.query.aid
    let list=await this.service.news.getNewsContent(aid)
    await this.ctx.render('newsContent.html',{
      list:list[0]
    })
  }
}

module.exports = NewsController;
view news.html 渲染数据到页面上
<body>
    <h4>新闻列表</h4>
    <ul>
        <%for(var i=0;i<list.length;i++){%>
        <li><a href="/newsContent?aid=<%- list[i].aid%>"> <%- list[i].title%></a> </li>
        <%}%>
    </ul>
</body>
配置模板引擎 config.default.js
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = exports = {};

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + 'xxxxxx';

  // add your middleware config here
  config.middleware = [];

  // add your user config here配置模板引擎
  config.view = {
    mapping: {
      '.html': 'ejs',
    },
  };
  // 配置公共url地址
  config.api = 'http://www.phonegap100.com/';
  return {
    ...config,
  };
};
配置 ejs 插件 plugin.js
'use strict';
exports.ejs = {
  enable: true,
  package: 'egg-view-ejs',
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值