ejs模板渲染页面

2023-11-21 14:59
文章标签 模板 页面 渲染 ejs

本文主要是介绍ejs模板渲染页面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、npm init 

2、安装ejs npm i ejs --save

3、app.js 

 1 const http = require('http');
 2 const fs = require('fs');
 3 const ejs = require('ejs');
 4 const path = require('path');
 5 
 6 // 1. 创建服务器
 7 http.createServer((req, res)=>{
 8     // 1.1 读取文件
 9     readDataJson((jsonData)=>{
10 
11          // 1.2 读取模板信息
12         fs.readFile(path.join(__dirname, 'view/list.ejs'), (err, data)=>{
13             if(err) throw err;
14 
15             // 实例化模板引擎
16             let ejsList = data.toString();
17             let tempList = ejs.render(ejsList, jsonData);  //jsonData 下方函数返回的,将jsonData注入ejs中
19       // 1.3 响应给客户端  
20       res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});

21       res.end(tempList); 22 }); 23 });
24     }).listen(3000);
26 let readDataJson = (callback)=>{
27   fs.readFile(path.join(__dirname, 'model/data.json'), (err, data)=>{
28   if(err) throw err;
29   let jsonData = JSON.parse(data);
30   callback && callback(jsonData);
31 });
32 };

//第一个callback判断是否存在 第二个存在就返回

4、model中json文件

{"lists":[{"title": "撩课学院1周年庆倒计时", "count": 675593, "up": 1},{"title": "女演员全美善自杀", "count": 634434, "up": 1},{"title": "哈登骑电动车被抓", "count": 623323, "up": 0},{"title": "吃酸辣粉被罚款", "count": 546767, "up": 0},{"title": "蔚来汽车庄莉离职", "count": 536237, "up": 1},{"title": "父母抓阄陪女儿", "count": 525193, "up": 0},{"title": "宋仲基爸爸短信", "count": 475593, "up": 0},{"title": "宋仲基爸爸短信", "count": 375593, "up": 1},{"title": "今天天气很好", "count": 275593, "up": 1}],"source": "撩课风云榜 - itLike.com"
}

5、view中ejs.js文件

  1 <!doctype html>
  2 <html>
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport"
  6           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>百度风云排行版</title>
  9     <style>
 10         * {
 11             margin: 0;
 12             padding: 0;
 13             list-style: none;
 14         }
 15 
 16         #panel {
 17             width: 500px;
 18             border: 1px solid #c6c8ca;
 19             margin: 100px auto;
 20         }
 21 
 22         #panel_header {
 23             display: flex;
 24             justify-content: space-around;
 25             border-bottom: 1px solid #ccc;
 26             line-height: 44px;
 27             color: #777;
 28         }
 29 
 30         #panel_body > li {
 31             display: flex;
 32             flex-direction: row;
 33             justify-content: space-between;
 34             line-height: 44px;
 35             border-bottom: 1px solid #e8e8e8;
 36         }
 37 
 38         .c-icon {
 39             background: url(https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/icons_5859e57.png) no-repeat 0 0;
 40             display: inline-block;
 41             width: 14px;
 42             height: 14px;
 43             vertical-align: text-bottom;
 44             font-style: normal;
 45             overflow: hidden;
 46         }
 47 
 48         .opr-toplist-st {
 49             margin-bottom: 2px;
 50         }
 51 
 52         .c-icon-up {
 53             background-position: -720px -168px;
 54         }
 55 
 56         .c-icon-down {
 57             background-position: -744px -168px;
 58         }
 59 
 60         .left {
 61             margin-left: 10px;
 62             display: flex;
 63             flex-direction: row;
 64             align-items: center;
 65         }
 66 
 67         .left .no {
 68             display: flex;
 69             justify-content: center;
 70             align-items: center;
 71             width: 18px;
 72             height: 18px;
 73             background-color: red;
 74             color: #fff;
 75             margin: 5px;
 76         }
 77 
 78         .right {
 79             margin-right: 10px;
 80         }
 81 
 82         #panel_footer {
 83             display: flex;
 84             justify-content: flex-end;
 85             margin: 10px;
 86             color: #777;
 87             font-size: 15px;
 88         }
 89     </style>
 90 </head>
 91 <body>
 92 <section id="panel">
 93     <div id="panel_header">
 94         <span>排名</span>
 95         <span>搜索指数</span>
 96     </div>
 97     <ul id="panel_body">
 98         <% for(var i = 0; i < lists.length; i++) { %>
 99             <li>
100                 <div class="left">
101                 <span class="no" style="background: <%= i > 2 ? 'gray' : 'red' %>;">
102                     <%= i + 1 %>
103                 </span>
104                     <span>
105                     <%= lists[i].title %>
106                 </span>
107                 </div>
108                 <div class="right">
109                 <span>
110                     <%= lists[i].count %>
111                 </span>
112                     <% if(lists[i].up === 1){ %>
113                         <i class="opr-toplist-st c-icon c-icon-up"></i>
114                     <% }else { %>
115                         <i class="opr-toplist-st c-icon c-icon-down"></i>
116                     <% } %>
117                 </div>
118             </li>
119         <% } %>
120     </ul>
121     <div id="panel_footer">
122         <span style="margin-right: 5px">来源:</span>
123         <span>
124             <%= source %>
125         </span>
126     </div>
127 </section>
128 </body>
129 </html>
View Code

 

 

转载于:https://www.cnblogs.com/zhangzhengyang/p/11146150.html

这篇关于ejs模板渲染页面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403090

相关文章

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock