位置: 编程技术 - 正文

Javascript 字符串模板的简单实现(Javascript 字符串拼接)

编辑:rootadmin

推荐整理分享Javascript 字符串模板的简单实现(Javascript 字符串拼接),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript 字符串转字节,javascript 字符串转字节,javascript 字符串长度,Javascript 字符串数组,javascript字符串转换为数字,javascript 字符串转字节,Javascript 字符串拼接,javascript字符串大小写转换,内容如对您有帮助,希望把文章链接给更多的朋友!

这是源于两年前,当我在做人生中第一个真正意义上的网站时遇到的一个问题

该网站采用前后端分离的方式,由后端的 REST 接口返回 JSON 数据,再由前端渲染到页面上。

同许多初学 Javascript 的菜鸟一样,起初,我也是采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来:

书写不连贯。每写一个变量就要断一下,插入一个 + 和 "。十分容易出错。 无法重用。HTML 片段都是离散化的数据,难以对其中重复的部分进行提取。 无法很好地利用 <template> 标签。这是 HTML5 中新增的一个标签,标准极力推荐将 HTML 模板放入 <template> 标签中,使代码更简洁。 当时我的心情就是这样的:

这TMD是在逗我吗

为了解决这个问题,我暂时放下了手上的项目,花了半个小时实现一个极简易的字符串模板。

需求描述

实现一个 render(template, context) 方法,将 template 中的占位符用 context 填充。要求:

不需要有控制流成分(如 循环、条件 等等),只要有变量替换功能即可级联的变量也可以展开被转义的的分隔符 { 和 } 不应该被渲染,分隔符与变量之间允许有空白字符例子:

实现

先写下函数的框架:

显然,要做的第一件事便是 匹配模板中的占位符。

匹配占位符

Javascript 字符串模板的简单实现(Javascript 字符串拼接)

匹配的事,肯定是交给正则表达式来完成。那么,这个正则表达式应该长什么样呢?

根据 需求 1、2 的描述,我们可以写出:

至于需求 3,我第一个想到的概念是 前向匹配,可惜 Javascript 并不支持,只好用一个折衷的办法:

占位符替换

嗯,正则表达式确定了,接下来要做的便是替换工作。

根据 需求2,模板引擎不仅要能渲染一级变量,更要渲染多级变量。这该怎么做呢?

其实很简单:将 token 按 . 分隔开,逐级查找即可:

不过,有可能 token 指定的变量并不存在,这时上面的代码便会报错。为了更好的体验,代码最好有一定的容错能力:

把所有的代码组合在一起,便得到了最终的版本:

除去空白行,一共 行。

将函数挂到 String 的原型链

甚至,我们可以通过修改原型链,实现一些很酷的效果:

之后,我们便可以这样调用啦:

JavaScript常用数组算法小结 今天抽点时间把javascript中的一些常用的数组算法做一下总结,以方便大家面试笔试或者日常开发过程中用到。其中部分算法来自网络,这里做了下汇总

javascript实现查找数组中最大值方法汇总 方法一(使用递归函数):vararr=[9,8,,,,,,,,6,2,1];varmax=arr[0];functionfindMax(i){if(i==arr.length)returnmax;if(maxarr[i])max=arr[i];findMax(i+1);}findMax(1);console.log(ma

JavaScript操作class和style样式代码详解 废话不多说了,直接给大家贴js代码了,具体代码如下所示:!doctypehtmlhtmlheadmetacharset="utf-"title无标题文档/titlestyle.fontSize{font-size:px;}.fontWeight{font-weight:bol

标签: Javascript 字符串拼接

本文链接地址:https://www.jiuchutong.com/biancheng/381655.html 转载请保留说明!

上一篇:JavaScript实现标题栏文字轮播效果代码(javascript代码用什么来标记)

下一篇:JavaScript常用数组算法小结(javascript常见的数据类型)

  • 民营医院一般纳税人帐务处理视频税收风险
  • 现金流量套期与什么无关
  • 备用金可以不要发票吗
  • 银行汇票可以异地跨行使用吗
  • 增值税优惠政策3%降1%
  • 个体户免费发票怎么领
  • 应收账款和应付账款对冲会计分录
  • 进账单填错了用重新开转账支票吗
  • 临时用工工资税率怎么算
  • 社保扣除当月工资还是上个月
  • 出口退税可以不申报是否需要缴纳增值税
  • 待转销项税额如何列报
  • 总分机构如何做账
  • 闲置资金的利息收益要冲减财务费用
  • 利息支出应计入
  • 加工费计入应付账款可以吗
  • 公司公章丢失登报后又找到了
  • 维修开票单位写什么
  • 1697508991
  • 个人投资到企业的资金入什么科目
  • 公司买别人汇票有风险吗
  • 个体工商户给员工交社保属于职工社保吗
  • win7系统中回收站的内容清空后还能恢复吗
  • windows10提示更新11
  • php源码怎么上传到服务器
  • 芦荟的功效与作用治什么病
  • php在线阅读器源代码
  • 事件循环(Event Loop)
  • 预付装修款账务处理
  • 非营利组织营利包括哪些
  • 增值税纳税人兼营免税减税项目的
  • vue实战开发项目视频
  • ai的工具介绍
  • 如何利用数据有效性制作单元格菜单
  • 直接关联和间接关联
  • 建筑企业其他应付款
  • 开发票纸巾属于什么编码
  • 个体工商户注册资本是多少
  • 收到事业单位分红怎么办
  • 银行存款利息收入会计分录怎么写
  • 开票和不开票的销项税额怎么算
  • 固定资产一次性折旧账务处理
  • 织梦如何使用
  • 国家定额发票使用范围
  • 资本性支出与资本性支出(基本建设)的区别
  • 上市公司收购其他股票
  • 微信发放红包如何退回去
  • 资产负债表中应付账款项目应根据什么填制
  • 建筑工程分包案例
  • sql server 2005 数据库还原
  • 当月的进项税可以不认证吗?
  • 本月留抵增值税
  • 销货清单和发票金额不一致
  • 一般纳税人公司注册资金最低多少
  • 收据为什么不能写今收到
  • 暂估固定资产的账务处理
  • 对公账户进账不了怎么办
  • 非营利医疗机构免征哪几种税
  • sqlserver 查询锁
  • 不同数据库之间的数据一同传递
  • winxp和win7共享
  • 电脑系统2003
  • 迁移windows
  • 简单易上手 固态硬盘SSD安装WIN7系统的3种办法
  • ubuntu修改ip地址方法
  • cfg是什么格式,怎么打开
  • linux 文件执行
  • win10怎么显示磁盘已用空间
  • easyui给下拉框赋值
  • div如何排版
  • Internet Explorer 8 beta 中文版与IE7共存的解决方法
  • 详细说明js的执行过程
  • 浅谈自己对教育的理解
  • 使用jquery实现表单验证
  • 网页弹窗不见了
  • 安卓中textview
  • 菜鸟教程javaweb
  • js校验密码复杂度
  • python2ide
  • 环保税怎么申报?看完你就明白了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设