Node - Egg.js 框架从入门到放弃系列(5)- 模板引擎渲染

本文为个人学习整理所得,希望对读者有所帮助。

View 模板渲染

基本信息

在某些情况下,我们需要进行服务端渲染,是需要引入对应的模板引擎的。

egg.js框架内置 egg-view 作为模板解决方案,并支持多模板渲染,每个模板引擎都以插件的方式引入,但保持渲染的 API 一致。如果想更深入的了解,可以查看 模板插件开发

这里推荐给大家一个比较成熟的egg-view的插件,也是官方推荐的插件:egg-view-nunjucks,官方API文档 点击这里

安装插件

$ npm i egg-view-nunjucks --save

引入插件

我们在 config/plugin.js 文件中输入以下代码

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

配置插件

config/config.default.js 文件中输入以下代码

// 添加 view 配置
config.view = {
    defaultViewEngine: 'nunjucks',
    mapping: {
  // 这里可以是.nj/.tpl/.html等文件后缀
  // '.nj': 'nunjucks',
  // '.tpl': 'nunjucks',
    '.html': 'nunjucks',
    },
}

如何利用引擎渲染

一个简单业务场景:我们在收到一个商品list数组,里面包括了id、name和price,需要渲染到页面上。

我们修改一下上一节的代码。

controller/goods.js

async index() {
   const { ctx } = this;
   const res = await ctx.service.goods.index();
   await ctx.render('goods.html', { 
     res
   });
}

service/goods.js

const Service = require('egg').Service;
class GoodsService extends Service {
 async index() {
   const list = [
     {
       id:1,
       name:'河粉',
       price: 666,
     },
     {
       id:2,
       name:'米粉',
       price: 233,
     },
     {
       id:3,
       name:'肠粉',
       price: 99,
     }
   ]
   return list;
 }
}
module.exports = GoodsService;

这里我们使用ctx对象的render方法,调用 render 渲染文件时,会根据上述配置的后缀名去寻找对应的模板引擎。

render方法接受两个参数:① 是需要渲染的文件,此处为 goods.html

紧接着在view文件夹中创建一个新文件goods.html

<body>
  {% for item in res %}
  <ul>
    <li>商品名:{{item.name}}</li>
    <li>商品ID:{{item.id}}</li>
    <li>商品价格:{{item.price}}</li>
  </ul>
  {% endfor %}
</body>

浏览器中输入localhost:7001/goods,得到下图结果便是成功使用:

一起做项目

估计要Pass几章节才会有实践项目,这里就当作是唠叨吧

PS:全部的代码仓库:https://github.com/hejian1993/node_egg,暂时没有分章节,仅供参考。

我是河粉,我们下一节见

三个月前,一个人关注了我,他娶了一个如花似玉的老婆。
一周前,一个人关注了我,他中了888亿。
今年,关注了我的人都娶了如花似玉的老婆结婚那天还中888亿。
我已开过光,话已经放到这了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值