二十二、ejs模板在Express框架中的集成

          在上一篇内容中已经使用了pug模板,那么本篇就来了解一下ejs模板在Express框架中的集成使用,ejs模板也是常用的模板引擎,支持在标签内直接编写javascript代码,通过javascript代码就能够生成HTML页面的,通过本期对ejs模板的学习可以与之前讲的pug模板进行一个比较,两者均有自身的优劣,下面就开始进入正题:

Express框架指定模板

        在上一篇内容为了讲述,可以知道通过express命令安装项目环境可以在views文件下可以看到jade的模板文件,jade是pug模板的前身,那么在下次进行express命令创建项目环境就可以通过指定使用哪种模板,在操作之前请先确保是否已经全局安装了express :
(如若未安装可以翻阅先前的篇目,有相关express框架的全局以及局部的创建);

express --version

通过express命令指定模板安装(ejs): 

express --view=ejs ejsPro

         可以看一下 app.js 配置文件,查看相关视图引擎的设置:

        app.set('views',path.join(__dirname,'views')) 设置视图模板文件的路径; app.set('view engine','ejs') 设置视图模板的默认后缀名为ejs,无需每次都输入文件的ejs后缀名;


下面来一个简单的案例来了解一下ejs模板的使用:

1. 准备渲染在ejs模板上的json数据:(photo.json)

[
    {
        "id":1,
        "sname":"百度",
        "imgSrc":"https://www.baidu.com/img/flexible/logo/pc/result.png",
        "skip":"http://www.baidu.com"
    },
    {
        "id":2,
        "sname":"搜狗",
        "imgSrc":"https://upd10.sogoucdn.com/static/sogou/images/logo.png?v=1",
        "skip":"https://123.sogou.com/"
    },
    {
        "id":3,
        "sname":"360",
        "imgSrc":"https://p3.ssl.qhimg.com/t011e94f0b9ed8e66b0.png",
        "skip":"https://www.360.cn/"
    }
]

2. 路由文件 routes/index.js :

        通过fs模块去读取模拟的photo.json文件数据,将获得的数据转为json对象,然后将数据传给ejs模板;

var express = require('express');
var router = express.Router();
var fs = require('fs');
var path = require('path');

/* GET home page. */
router.get('/', function(req,res,next) {
  res.redirect('/index');
});

router.get('/index',function(req,res,next){
  let result = JSON.parse(fs.readFileSync(path.join(__dirname,'../public/photo.json')));
  // 数据传到ejs模板
  res.render('index',{data:result});
})

module.exports = router;

3. 编写ejs模板,将传过来的json数据进行渲染;

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link rel="stylesheet" href="../stylesheets/index.css">
</head>
<body>
    <!-- <ul>
      <%data.forEach(function(item){%>
        <li>
          <img src="<%=item.imgSrc%>"/>
          <p>
            <a href="<%=item.skip%>">
              <%=item.sname%>
            </a>
          </p>
        </li>
      <%})%>
    </ul> -->

    <ul>
      <% for(var i in data){ %>
          <li>
              <img src="<%=data[i].imgSrc%>">
              <p>
                <a href="<%=data[i].skip%>">
                  <%=data[i].sname%>
                </a>
              </p>
          </li>        
      <% } %>
    </ul>

</body>
</html>

4. 测试运行:

        通过命令 npm start 先将项目跑起来,通过浏览器去请求http://127.0.0.1:3000/index  

        以上就是使用ejs模板,感觉与pug模板如何?通过以上对ejs模板的了解以及上一篇对pug模板的讲解,这两种模板引擎在Express框架中是比较常用到的,对这两个模板引擎如果要进一部的深入了解可以看相关的文档内容,ejs模板相对于pug模板来说对于初学以及了解html相关知识的是一个很好的过渡,反观pug模板,虽然学习成本要相对较高一些,但pug的模板比较简介不像ejs较复杂些,具体取决于读者自身的能力,好了本期的内容就到此结束了,感谢大家的支持,谢谢大家!


补充:ejs标签含义:

标签 含义
<%  脚本标签,用于流程控制,无输出
<%_  删除其前面的空格符
<%=  输出数据到模板,输入的是转义的HTML标签
<%-  输出非转义的数据到模板
<%# 注释标签,不执行,不输出内容
<%%  输出字符串 "<%"
%> 一般结束标签
-%> 删除紧随其后的换行符
_%> 将结束标签后面的空格符删除

具体内容可以查看ejs文档:EJS -- 嵌入式 JavaScript 模板引擎 | EJS 中文文档

猜你喜欢

转载自blog.csdn.net/weixin_52203618/article/details/128403318
今日推荐