位置: 编程技术 - 正文

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万个人所得税是多少
  • 当月认证发票进项税转出能不能第二个月转出
  • 工厂房租没有发票怎么办
  • 增值税纳税申报表模板
  • 商业保理公司票据贴现账务处理
  • 合作建房分配比例 如何确定
  • 个税中的年金是什么意思
  • 由收款人签发,经付款人承兑
  • 赞助支出为什么不算广告费
  • 做企业所得税汇算清缴前需要准备什么资料
  • 增值税清单模板样例导出
  • 每月发放奖金的会计分录
  • 投资收益涉及税种
  • 企业房产税如何计算缴纳
  • 增值税发票地址开错了有影响吗
  • 核定征收的企业需要做账吗
  • 库存占销售的多少合适
  • 哪些资产减值损失可以 转回,哪些不能?
  • 原料采购入库检测损耗的会计处理怎么做?
  • 办公软件无形资产的确认条件有哪些
  • 小规模纳税人按季收入不达30万
  • 试用期内进一步使用
  • 商家说补发什么意思
  • typecho 插件开发
  • pkjobs.exe - pkjobs是什么进程 有什么用
  • 小程序常见问题
  • php常用方法
  • vue的安装步骤
  • mysqlmha高可用
  • 借款利息收入开票
  • python3 静态方法
  • 劳动仲裁要出钱吗
  • 卖家运费险是不是退货免费
  • 预缴税款表怎么打印出来
  • 个人在平台销售怎么做
  • 报销备用金的摘要
  • sql2005安装不上
  • 企业当期营业收入的计算
  • 购买办公用品属于什么凭证类型
  • 水处理设备行业发展
  • 异地预缴税款怎么抵扣
  • 税务机关如何对个人股东股权财务报表审核
  • 外贸公司收取客户的费用
  • 已经认证抵扣的发票,要退回,怎么处理
  • 应交税金的负数重分类
  • 发票未到货已入库会计分录 原材料
  • 不动产固定资产的区别
  • 职工食堂的费用可以在差额里扣除吗
  • 对公账户进出账常识
  • 资产减值损失结转到本年利润吗
  • 公司固定资产有很多种类,怎样计提折旧
  • MySQL中truncate误操作后的数据恢复案例
  • sql报错22018
  • sqlserver合并脚本工具
  • windows怎么彻底删除
  • 谁编写了元素周期表
  • win7全屏游戏怎么窗口化
  • windows vista在哪里
  • windows 运行
  • linux常用命令 删除
  • linux系统中文件权限分为哪三种
  • rhel6.5安装教程
  • office2013标准版
  • glibc2.14安装
  • win8.1安装包
  • cocos2d开发app
  • jquery教程w3school
  • linux自动清理磁盘空间
  • unity物体边缘发光
  • python,for循环
  • linearlayout布局怎么设置
  • 上海地区附加税税率
  • 建筑业小规模纳税人工程结算增值税
  • 教师十三薪是什么意思
  • 不想订亲
  • 天津摇号申请查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设