正确输出HTML需默认转义变量,EJS用、Handlebars用{{{}}}、Vue用v-html输出未转义内容,注意控制空白与数据格式化,保持模板安全简洁。

HTML模板引擎输出内容的格式化,关键在于控制变量插入方式、保持结构清晰,并防止XSS等安全问题。不同模板引擎(如EJS、Handlebars、Pug、Vue模板等)处理方式略有差异,但核心原则一致。
正确输出HTML内容
默认情况下,多数模板引擎会对变量进行HTML转义,防止恶意脚本注入。如果你需要输出带标签的真实HTML内容,必须显式声明“不转义”。
-
EJS:使用
输出未转义HTML,会自动转义 -
Handlebars:使用
{{{htmlContent}}}输出原始HTML,双大括号{{}}会转义 -
Vue:用
v-html="content"渲染HTML字符串,普通插值{{ content }}会转义
控制空白与换行
模板中多余的空格和换行可能影响页面布局或数据展示。可通过以下方式优化输出结构:
- 在EJS中使用
-%>去除生成的换行,例如:{ -%> - Pug等缩进式模板天然结构清晰,注意缩进一致性即可
- 预处理数据,在JavaScript中格式化好再传入模板,减少模板逻辑
日期、数字等数据格式化
直接输出原始数据体验差,应在渲染前或模板中进行格式化。
第三版升级内容:1、增加了分类可以自定义分类名称的颜色和粗体显示 搜索引擎优化。2、增加了商品搜索引擎优化和相关文章添加3、增加了配套商品的添加4、增加了前台商品列表按照分类、属性、品牌、价格范围进行筛选5、增加了商品的配件功能6、增加了分类的批量删除7、增加了商品扩展属性在前台的显示关闭方式8、增加了商品具体显示页商品编码和打折商品图标显示形式9、增加了最近浏览商品功能10、增加了非会员直接购物
立即学习“前端免费学习笔记(深入)”;
- 在数据传入模板前处理:如将时间戳转为“YYYY-MM-DD”格式
- 使用模板助手函数(Helpers),例如Handlebars注册helper处理货币显示
- Vue中可用过滤器或计算属性,React可直接在JSX内调用格式化函数
安全与可维护性建议
格式化不只是美观,更关乎安全和后期维护。
- 除非必要,始终使用转义输出,避免XSS漏洞
- 复杂逻辑不要写在模板里,保持模板简洁
- 统一团队格式规范,如缩进、变量命名、标签闭合等
基本上就这些。掌握转义规则、合理使用格式化工具、注意结构整洁,就能让模板输出既安全又美观。










