Node.js中的Express框架利用jade,ejs进行后端渲染

Node.js环境安装

后端渲染

  • 前端渲染,根据后端返回的json数据,生成html
  • 后端渲染,后端直接把json与html结合完成返回到浏览器

jade

jade介绍
jade使用
  • 先安装jadenpm i jade
  • js文件代码
//引入 express   jade
const express=require('express')
const jade=require('jade')

// 创建服务器
const server=express()
server.listen(3000)
server.use(express.static('./public'))


//访问http://localhost:3000/
server.get('/',(req,res)=>{
      //通过jade模板引擎渲染文件
    //let html = jade.renderFile('jade模板文件',{pretty:true,key:value});	//返回字符

    let html=jade.renderFile('./views/index.jade',{pretty:true,data:'这是一段数据'})

    res.send(html)
})
  • jade模板文件
html
    head   
        body
            div(class='active')
                ul
                    li(class='active')
                        a(href="http://www.baidu.com")这是a标签
            div 这是div标签
                h1 #{data}
运行

在这里插入图片描述
在这里插入图片描述

ejs

ejs介绍
  • ejs 结构就是html
  • 输出: <%= 数据名|属性名|变量名 + 表达式 %>
  • 语句: <% 语句 %> 需要被<% %> 包裹
  • 非转义输出: <%- 数据名|变量名 + 表达式 %>
  • 载入公共:<%- include('./hd.ejs',{数据}) %>
  • ejs更多资料点击进入官网了解
ejs使用
  • 先安装ejsnpm i ejs
    在这里插入图片描述
  • js文件代码
const express = require('express')
const ejs = require('ejs')

const server = express()
server.listen(3000)
// 静态资源托管
server.use(express.static('./public'))


let data={
    title:'hello ejs模板',
    name:'张三',
    age:18,
    bool:false,
    list:[
        {id:1,msg:'今天周一',href:'href1'},
        {id:1,msg:'今天周二',href:'href2'},
        {id:1,msg:'今天周三',href:'href3'}
    ],
    strong:"<strong>我是非常强壮的</strong>"
}

server.get('/', (req, res) => {
    ejs.renderFile('./views/index.ejs', data, (err, data) => {
        if (!err) {
            res.send(data)
        }
    })
})
  • ejs模板文件index.ejs代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 只有静态资源托管才能引入 -->
    <link rel="stylesheet" href="/css/style.css">
</head>

<body>
    <!-- 引入另一个文件 -->
    <%- include('./head.ejs',{data:'也可以在这传递数据'})%>

    <!-- 输出 -->
    <h1><%=name %></h1>
    <h2><%= age+1 %></h2>

    <!-- <strong>我是非常强壮的</strong>  -->
   <%= strong  %>  
   <!-- 非转义输出 -->
   <%- strong  %>

    <!-- 语句 -->
    <%  let a=1
        let b=2
        let c=a+b
    %>
    <p>c=>  <%= c%></p>
    <% d=10 %>
    <% e=10 %>
    <% f=d+e %>
    <p>f=>  <%= f%></p>

    <!-- 判断语句 -->
    <% if(bool){ %>
        <h5>bool是false</h5>
    <% }else{ %>
        <h5>bool是true</h5>
    <% } %>

    <!-- 循环语句 -->
    <ul>
    <% for(let i=0;i<list.length;i++){ %>
        <li><a href="<%= list[i].href %>"><%= list[i].msg %></a></li>
    <% } %>
    </ul>

</body>

</html>
  • ejs模板文件head.ejs代码
<h1><%= title%></h1>
<h1><%= data%></h1>
  • css文件
h1{color: red;}
ul,li{list-style: none;}
运行

在这里插入图片描述

直接用express进行后端渲染

代码
  • 直接用res.render
//安装完成 ejs  jage模块后  直接用express就可以
const express=require('express')
const server=express()
server.listen(3000)
server.use(express.static('./public'))


let data={
    title:'hello ejs模板',
    name:'张三',
    age:18,
    bool:false,
    list:[
        {id:1,msg:'今天周一',href:'href1'},
        {id:1,msg:'今天周二',href:'href2'},
        {id:1,msg:'今天周三',href:'href3'}
    ],
    strong:"<strong>我是非常强壮的</strong>"
}

//默认文件名 是 views  因此只需要写views下的文件路径即可

// 如果自己起了一个文件名字的话  例如  abc 则设置
// server.set('views','abc')

server.get('/',(req,res)=>{

    //ejs 文件
    // res.render('./index.ejs',data,(err,data)=>{
    //     if(!err){
    //         res.send(data)
    //     }
    // })

    // jade文件
    let html=res.render('./index.jade',{pretty:true,data:'这是一段数据'})
    res.send(html)

})

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值