模板拼装最简单处理 字符串拼接版本

var html_line = html.replace(/[\r\t\n]+/g, "\n").split(/\n/)
var tpl = `var _h = []`
var _begin = ‘<?‘ , _end = ‘?>‘
,_is = true
html_line.forEach(function(line){

while(true){
var _pos = line.indexOf(_is ? _begin : _end)
if (_pos !== -1){
var _part = line.slice(0 ,_pos )

line = line.slice(_pos + 2 )
if (_is) {
_part = _part.replace(/\"/g,`\\\"`)
if (_part.length) {
tpl += ` _h.push( "${_part}");`
}
} else {
if (‘=‘ == _part.slice(0,1)) {
_part = _part.slice(1)
tpl += ` _h.push( ${_part});`
}else{
tpl += ` ${_part}`
}
}

}else {
if (_is) {
line = line.replace(/\"/g,`\\\"`)
if (line.length) {
tpl += ` _h.push( "${line}");`
}
} else {
tpl += ` ${line}`
}
break
}
_is = !_is
}

})
tpl += ‘\n return _h.join("")‘

时间: 2024-11-10 01:16:54

模板拼装最简单处理 字符串拼接版本的相关文章

ajax交互数据简单拼装,数组成字符串

json2Form:function(json) { var str = ""; for(var p in json){ // 判断对象是否为数组 if(typeof json[p]=="object"){ var m=String(p) for(var i=0;i<json[p].length;i++){ for(var x in json[p][i]){ str+=m+"["+i+"]"+"["+

字符串模版,替代原来Es5的+号拼装字符串

字符串模版 这节我们主要学习ES6对字符串新增的操作,最重要的就是字符串模版,字符串模版的出现让我们再也不用拼接变量了,而且支持在模板里有简单计算操作.小伙伴们是不是已经摩拳擦掌等不急了那?那我们就开始吧. 先来看一个在ES5下我们的字符串拼接案例: let xzdemo='小智'; let blog = '非常高兴你能看到这篇文章,我是你的朋友'+xzdemo+'.这节课我们学习字符串模版.'; document.write(blog); ES5下必须用+ xzdemo +这样的形式进行拼接,

JS模板引擎:基于字符串拼接

目的 编写一个基于字符串拼接的js模板引擎雏形,这里并不会提供任何模板与数据的绑定. 基本原理 Javascript中创建函数的方式有多种,包括: 1. var func = function () {...} 2. function func () {...} 3. var func = new Function (...); 其中new Function的方法给到了我们很大的自由度,比如: var func = new Function('a', 'b', 'return a+b;'); f

[笔记]Go语言的字符串拼装方式性能对比

Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好? 下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间. 在VMWare下的Ubuntu 14.04下运行的结果表明: fmt.Sprintf 和 strings.Join 速度相当 string + 比上述二者快一倍 bytes.Buffer又比上者快约400-500倍 如果循环内每次都临时声明一个bytes.Buffer来使用,会比持续存在慢

JS中字符串拼装 单双引号的处理 字符转义

js中可能会用到动态追加元素,可能数据也是从后台传过来的,当然有两种思路, 1.在后台拼装好直接返回; 2.在前台js里面拼装, 如果拼装大量的html时可能单双引号就容易出问题;那么如何解决呢?最近遇到了这个问题,就做一下总结. 可以一句一句的拼装. 注意点:html元素属性全部用 双引号 字符串用单引号 var htmlline='<tr id="row'+obj.idArr+'">'; htmlline +='<td style="text-align

JS下高效拼装字符串的几种方法比较与测试代码

在使用Ajax提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交.尽管提交这样大的信息的做法看起来并不优雅,但有时我们可能不得不面对这样的需求.那么JavaScript中对字符串的累加速度如何呢?我们先来做下面的这个实验.累加一个长度为30000的字符串. 测试代码1 - 耗时: 14.325秒 复制代码代码如下: var str = ""; for (var i = 0; i < 50000; i++) { str += "xxxxx

ES6-使用模板字符串完成字符串拼接

var obj = {name:'tom',age:11}; //es5的字符串拼接比较麻烦 var str = '姓名是:'+obj.name+' '+'年龄是:'+obj.age; //es6提供简便的方式 var str1 = `姓名是:${obj.name} 年龄是:${obj.age}`; console.log(str); console.log(str1); 原文地址:https://www.cnblogs.com/maycpou/p/12330570.html

java 字符串拼接的单元测试

整体内容介绍 本文分为几个部分: * String.StringBuffer.StringBuilder的对比 * 字符串拼接方式的对比 使用到的内容: * Junit4单元测试 * slf4j的日志框架 String.StringBuffer.StringBuilder的对比 对于这三者使用的场景做如下概括(参考:<编写搞质量代码:改善java程序的151个建议>): String:在字符串不经常变化的场景中可以使用String类,如:常量的声明.少量的变量运算等. StringBuffer

第2章 简单动态字符串

2.1 SDS SDS(Simple Dynamic String在Redis里被用作动态字符串的实现.,是一个包含char数组的结构体. free 空闲数组 len 已经使用的数组的长度 buf 具体保存数组的地方 2.2 SDS与C字符串的区别 C语言使用长度为N+1的字符数组来存储长度为N的字符串,Redis为了提高效率并没有采用这种策略 提高获得字符串长度的效率即提高STRLEN的速度. C语言字符串要想获得长度需要遍历整个数组 O(n),Redis只需要读取len存储的数值O(1) 杜