博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超轻量模板引擎
阅读量:7232 次
发布时间:2019-06-29

本文共 701 字,大约阅读时间需要 2 分钟。

还在痛苦的手工拼接HTML?

使用模板引擎渲染出目标HTMl,避免手工拼接的错误,同时增加模板代码的可读性。

话不多说,先看代码,此demo实现了一个轻量的模板引擎。

模板引擎的核心

正则表达式的单元匹配,以及replace函数。

模板采用双大括号的形式来标识此处是模板插槽,匹配到的可以是一个变量,同时也可以是对象访问属性。

replace函数第二个参数,支持传入function配合正则的匹配。

/{
{((\w+\.?)+)}}/g复制代码

正则表达式当中一个括号代表一个匹配组

\w 匹配字母、数字、下划线。等价于[A-Za-z0-9_]

+ 匹配前面的子表达式一次或多次

? 匹配前面的子表达式零次或一次

render 函数的实现

支持对象的属性访问

function render(tpl, data) {  var reg = /{
{((\w+\.?)+)}}/g return tpl.replace(reg, function(matchItem, keyName) { let keys = keyName.split('.'); if (keys.length === 1) return data[keys[0]]; let res = data; for (let item of keys) { res = res[item]; } return res; })}复制代码

完整DEMO

复制代码

转载于:https://juejin.im/post/5aba69636fb9a028b92d2c4a

你可能感兴趣的文章
反射工厂模式
查看>>
网络打印机拒绝访问,无法连接处理方法汇总
查看>>
SQL Server 表压缩
查看>>
HDU-3549 Flow Problem 简单最大流
查看>>
HDU-2102 A计划 BFS
查看>>
win7 怎样找到 "显示桌面"
查看>>
艾伟:WCF从理论到实践(14):WCF解决方案模板
查看>>
[BuildRelease]跨平台build脚本
查看>>
C# WinForm开发系列 - DataGrid
查看>>
Ant高级-task
查看>>
X509Certificate类解析证书的差异,算是.Net的BUG吗?
查看>>
PHP autoload机制详解(转)
查看>>
依赖注入
查看>>
增加系统右键菜单
查看>>
tail 500 跟踪系统错误 日志
查看>>
面向对象的设计原则二-单一职责原则
查看>>
数据库中聚簇索引与非聚簇索引的区别
查看>>
Objective-C中的一些特殊的数据类型
查看>>
C++关键字
查看>>
Kruskal算法的思想、证明及步骤
查看>>