Node - Egg.js 框架從入門到放棄系列(5)- 模板引擎渲染

本文爲我的學習整理所得,但願對讀者有所幫助。javascript

View 模板渲染

基本信息

在某些狀況下,咱們須要進行服務端渲染,是須要引入對應的模板引擎的。html

egg.js框架內置 egg-view 做爲模板解決方案,並支持多模板渲染,每一個模板引擎都以插件的方式引入,但保持渲染的 API 一致。若是想更深刻的瞭解,能夠查看 模板插件開發java

這裏推薦給你們一個比較成熟的egg-view的插件,也是官方推薦的插件:egg-view-nunjucks,官方API文檔 點擊這裏node

安裝插件

$ npm i egg-view-nunjucks --save
複製代碼

引入插件

咱們在 config/plugin.js 文件中輸入如下代碼git

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

配置插件

config/config.default.js 文件中輸入如下代碼github

// 添加 view 配置
config.view = {
    defaultViewEngine: 'nunjucks',
    mapping: {
  // 這裏能夠是.nj/.tpl/.html等文件後綴
  // '.nj': 'nunjucks',
  // '.tpl': 'nunjucks',
    '.html': 'nunjucks',
    },
}
複製代碼

如何利用引擎渲染

一個簡單業務場景:咱們在收到一個商品list數組,裏面包括了id、name和price,須要渲染到頁面上。npm

咱們修改一下上一節的代碼。api

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:所有的代碼倉庫:github.com/hejian1993/…,暫時沒有分章節,僅供參考。

我是河粉,咱們下一節見

三個月前,一我的關注了我,他娶了一個如花似玉的老婆。 一週前,一我的關注了我,他中了888億。 今年,關注了個人人都娶了如花似玉的老婆結婚那天還中888億。 我已開過光,話已經放到這了。

相關文章
相關標籤/搜索