node.js 什么是模板引擎?(具体介绍underscore)

前言:在 Web 开发中,数据的呈现通常是基于 HTML 和 CSS 的,而数据的变化又是非常频繁的,需要根据数据动态生成 HTML 标记。手动拼接 HTML 标记显然是一种非常低效的方式,不仅容易出错,而且难以维护。使用,我们使用到了模板引擎来解决这一问题。 

一、模板引擎概念:

模板引擎是一种将数据和模板结合起来生成最终结果的工具。它将一个模板和一个数据对象转为输入,通过模板解析和渲染生成最终的结果。通俗来说,模板引擎就是用来生成html等标记的工具。可以分解为两部分:

1.模板:一个模子(结构)。依据不同数据套不同的逻辑

2.引擎:一个处理器(编译、运行),最后渲染出HTML代码

二、模板引擎作用:

模板引擎在Web开发中扮演着重要角色,其主要作用包括:

(1)界面与数据分离

(2)业务代码与逻辑代码分离

(3) 生成特定格式的文档

(4)支持逻辑控制语句

(5)模板继承

(6)提高开发效率

 三、常用的模板引擎:

(1)underscore

(2)art-template

(3)ejs

(4)jade

下面,我们来具体介绍常用的underscore模板引擎:

四、underscore模板引擎:

(1)安装underscore

npm install underscore —save

(2)导入underscore

var_=require('underscore')

(3)补充:依赖项问题

3-1》如上述的安装underscore后面要接 —save,意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。

3-2》-g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。

3-3》-save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖。

(4)在underscore模板文件中制定渲染规则

4-1》<%= %> 插入数据

eg:<%=name%>

4-2》<% %> 执行javascript代码(一定要遵循js语法规则)

eg:

<%

for(let i=0;;i<3;i++){...}

%>

(5)使用underscore渲染模板

5-1》获取渲染函数

var compiled=_.template(data)

注意 _是模板引擎的对象,data是模板文件内容

5-2》渲染数据生成html内容

var htmlstr=compiled(dataObj)

注意 dataObj是模板文件所需数据对象

(6)代码示例

见我的下一篇博客:node.js服务器端动态资源处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows电脑使用Everything+cpolar搭建在线资料库并实现无公网IP管理文件

文章目录 推荐前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家…

算法——马尔可夫与隐马尔可夫模型

HMM&#xff08;Hidden Markov Model&#xff09;是一种统计模型&#xff0c;用来描述一个隐含未知量的马尔可夫过程&#xff08;马尔可夫过程是一类随机过程&#xff0c;它的原始模型是马尔科夫链&#xff09;&#xff0c;它是结构最简单的动态贝叶斯网&#xff0c;是一种著名…

attention and tell论文【无标题】

这个公式使用LaTeX语法表示为&#xff1a; ( i t f t o t c t ) ( σ σ σ tanh ⁡ ) T D m n , n ( E y t − 1 h t − 1 x t ) \begin{pmatrix}i_t \\f_t \\o_t \\c_t\end{pmatrix} \begin{pmatrix}\sigma \\\sigma \\\sigma \\\tanh\end{pmatrix}T_{Dmn,n}\begin{pmatri…

SQL215 查找在职员工自入职以来的薪水涨幅情况

输入&#xff1a; drop table if exists employees ; drop table if exists salaries ; CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_…

ChatGPT实用技巧:提升论文写作效果

ChatGPT无限次数:点击直达 ChatGPT实用技巧&#xff1a;提升论文写作效果 随着人工智能技术的不断发展&#xff0c;ChatGPT作为一种先进的自然语言生成模型&#xff0c;为学术界和科研人员提供了强大的写作辅助工具。本文将介绍如何利用ChatGPT提升论文写作效果&#xff0c;并…

内外网文件摆渡系统,如何贯通网络两侧被隔断的工作流?

随着业务范围不断扩大&#xff0c;产生的数据体量越来越多&#xff0c;企业会采取网络隔离&#xff0c;对核心数据进行保护。网络隔离主要目的是保护企业内部的敏感数据和系统不受外部网络攻击的风险&#xff0c;可以通过物理或逻辑方式实现&#xff0c;例如使用防火墙、网闸、…

解释Python中的RESTful API设计和实现

解释Python中的RESTful API设计和实现 RESTful API&#xff0c;即符合REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;架构风格的Web服务接口&#xff0c;已成为现代Web应用程序通信的标准。Python作为一种灵活且强大的编程语言&…

Day13-Python基础学习之数据分析案例

数据分析案例 data_define.py # 数据定义的类 class Record:def __init__(self, date, order_id, money, province):self.date dateself.order_id order_idself.money moneyself.province province ​def __str__(self):return f"{self.date}, {self.order_id}, {se…

数学基础:深度学习的语言

数学基础&#xff1a;深度学习的语言 概述 在深度学习的世界里&#xff0c;数学不仅仅是一套工具&#xff0c;它是构建、理解和优化深度学习模型的基石。从向量空间的概念到复杂的优化算法&#xff0c;数学的每一个分支都在深度学习的发展中扮演着关键角色。本文的目标是通过深…

【前端面试3+1】17 伪类和伪元素的区别、CSS权重、图片显示优化、【二叉树最大深度】

一、伪类和伪元素的区别 1、伪类&#xff1a; 伪类是用来描述元素的特定状态的选择器&#xff0c;比如:hover、:active、:first-child等。伪类在选择器中以冒号&#xff08;:&#xff09;开头&#xff0c;用于匹配处于特定状态的元素。伪类可以用于选择DOM元素的特定状态&#…

zabbix解析以及安装

目录 目录 zabbix 是什么&#xff1f; 监控主要功能 zabbix 监控原理&#xff1a; zabbix运行机制 Zabbix的监控方式 Zabbix监控系统监控对象 Zabbix的优缺点 Zabbix的缺点 zabbix主要特点 zabbix 监控部署在系统中&#xff0c;包含常见的五个程序: 监控的架构 3.maste…

vscode和pycharm等idea编写protobuf文件格式化

想在pycharm或者goland等idea中开发protobuf文件的话&#xff0c;可以安装一个插件&#xff1a;protocol-buffers 安装之后&#xff0c;proto文件就会支持高亮和格式化了。 如果是vscode想要编写proto文件&#xff0c;可以安装另外一个插件&#xff1a;vscode-proto3 安装后&a…

vue 组件间传值

背景&#xff1a; 组件之间传值&#xff0c;父组件将数据传递给子组件&#xff0c;子组件通过操作同步修改父组件传递过来的数据 1. 简单传递值和接收值 <script>// 创建 vue实例const app Vue.createApp({// 数据项data() {return {num: 123456}},// 动态传达参数tem…

“资深主食冻干品鉴家”认证!希喂CPMR2.0鲜肉主食冻干值得入!

作为一名养猫长达十二年的资深铲屎官&#xff0c;自从20年起&#xff0c;我家便步入了全冻干喂养的新纪元。请别误会&#xff0c;我并非什么拆二代&#xff0c;而是因为我找到了一款既让猫咪爱不释手&#xff0c;又在我预算之内的优质主食冻干。市面上的主流品牌&#xff0c;我…

如何解决线程池引发的future性能问题?

背景 在我们的日常开发中肯定会遇到线程池的使用&#xff0c;那么随着jdk8的使用发现&#xff0c;future.get&#xff08;&#xff09;这个API的使用也很普及了&#xff0c;当然重点不是这个api而是我们在设置线程池参数的时候如果使用自带的四种拒绝策略&#xff0c;那没什么…

网络安全赛事中开源威胁情报的妙用

写在前面 近期参与了一场网络安全赛事&#xff0c;一些题目的解法涉及到开源网络威胁情报&#xff0c;遂对相关题目及涉及到的知识点进行分析。 什么是OSCTI 开源网络威胁情报 (Open-Source Cyber Threat Intelligence,OSCTI)是详细描述针对某个组织网络安全威胁的数据。OSC…

数组名的指针用法

【题目描述】 读入一些整数&#xff0c;逆序输出到一行中&#xff0c;数中间用空格隔开。已知整数不超过100个。 【样例输入】 94 95 27 【样例输出】 27 95 94 【题目来源】 刘汝佳《算法竞赛入门经典 第2版》程序3-1 逆序输出 【解析】 原书代码&#xff1a; #inc…

【力扣 Hot100 | 第二天】4.11 无重复字符的最长子串

文章目录 2.无重复字符的最长子串2.1题目2.2解法一&#xff1a;滑动窗口2.2.1解题思路2.2.2代码实现 2.无重复字符的最长子串 2.1题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例一&#xff1a; 输入: s "abcabcbb" 输…

如何使用 git 提交项目到 github上

前言 由于网上已有众多优秀的教程&#xff0c;本文将不会重复造轮子。 本文的定位是给小伙伴们推荐、归纳和整理一些笔者认为很好的教程。 使用 git 提交项目到 github 文章推荐1&#xff1a;https://zhuanlan.zhihu.com/p/30044692文章推荐2&#xff1a;https://zhuanlan.z…

数据库(5)

目录 21.Redis一般有哪些使用场景? 22.Redis有哪些数据类型? 23.谈谈Redis的对象机制(RedisObject)?