egg 简单demo学习

添加模版引擎

npm i egg-view-ejs --save

2.找到 {app_root}/config/plugin.js

exports.ejs = {
    enable: true,
    package: 'egg-view-ejs',
};

3.找到 {app_root}/config/config.default.js

配置:

'use strict';

module.exports = appInfo => {
  const config = exports = {};

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

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

  //配置ejs模板引擎
  config.view = {
    mapping: {
      '.html': 'ejs',
    }
  };


  //配置公共的api

  config.api='http://www.xxx.com/';

  return config;
};

新闻控制器

'use strict';

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

class NewsController extends Controller {
  async index() {
    


    //获取数据显示到新闻页面

    var list=await this.service.news.getNewsList();


    await this.ctx.render('news',{

      list:list
    })
  } 
  async content(){


    //获取get传值

    var aid=this.ctx.query.aid;

    console.log(aid);


    var list=await this.service.news.getNewsContent(aid);

    console.log(list);

    await this.ctx.render('newscontent',{

      list:list[0]
    })



  }
}

module.exports = NewsController;

新闻服务:

'use strict';

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

class NewsService extends Service {
  async getNewsList() {
    
    //通过抓取接口返回数据

    // curl的方法可以获取远程的数据


    var api=this.config.api+'appapi.php?a=getPortalList&catid=20&page=1'


    var response=await this.ctx.curl(api);

    // console.log(response.data); // 返回的是Buffer

    var data=JSON.parse(response.data);    //把Buffer类型转转换成对象

    // console.log(data);
    return data.result;

  }

  //获取新闻详情

  async getNewsContent(aid){


    var api=this.config.api+'appapi.php?a=getPortalArticle&aid='+aid;


    var response=await this.ctx.curl(api);

    var data=JSON.parse(response.data);    //把Buffer类型转转换成对象

    return data.result;

  }
}

module.exports = NewsService;

新闻view显示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
    <h2>新闻列表数据</h2>


    <ul>

        <%for(var i=0;i<list.length;i++){%>
        <li><a href="/newscontent?aid=<%=list[i].aid%>"><%=list[i].title%></a>   <span>---<%=list[i].dateline%></span></span></li>

        <%}%>
    </ul>



</body>
</html>

新闻详情显示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <link rel="stylesheet" href="/public/css/basic.css">
</head>
<body>
  

    <div class="content">

  
            <h2><%=list.title%></h2>
            <div>
        
                <%-list.content%>
            </div>

    </div>





</body>
</html>

路由配置

router.js

'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);
};
原文地址:https://www.cnblogs.com/loaderman/p/11540502.html