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); };