zoukankan      html  css  js  c++  java
  • 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);
    };
  • 相关阅读:
    sqlite3经常使用命令&amp;语法
    DataTable.AcceptChanges方法有何用处
    C面试题
    keil程序在外部RAM中调试的问题总结(个人的一点经验总结)
    jps命令
    【C++基础】类的组合
    《算法导论》为什么经典
    Spring3.0 AOP 具体解释
    Java中StringBuilder的清空方法比較
    TFS(Team Foundation Server)介绍和入门
  • 原文地址:https://www.cnblogs.com/loaderman/p/11540502.html
Copyright © 2011-2022 走看看