当前位置: 首页 > news >正文

找做网站技术人员wordpress中文插件下载

找做网站技术人员,wordpress中文插件下载,东莞服饰网站建设哪家好,wordpress 猜你喜欢vue之mustache库的机理其实是将模板字符串转化为tokens 然后再将 tokens 转化为 dom字符串&#xff0c;如下图 对于一般的将模板字符串转化为dom字符串&#xff0c;这样不能实现复杂的功能 let data {name:小王,age:18 } let templateStr <h1>我叫{{name}},我今年{{ag…

        vue之mustache库的机理其实是将模板字符串转化为tokens 然后再将 tokens 转化为 dom字符串,如下图

 对于一般的将模板字符串转化为dom字符串,这样不能实现复杂的功能

let data = {name:'小王',age:18
}
let templateStr = `<h1>我叫{{name}},我今年{{age}}岁<h1>
`
templateStr = templateStr.trim()let htmlStr = templateStr.replace(/\{{(\w+)}}/g,function(match,$1,index){//第一个参数为他寻找的部分,第二个为捕获的东西,第三个所在的位置,第四个为该字符串return data[$1] })
console.log(htmlStr) //我叫小王,我今年18岁

 将模板字符串转化为tokens

前面已经知道了musache的工作原理为 将模板字符串转化为tokens,然后再将tokens转化为BOM字符串所以此小节的任务为:

class Scanner {constructor (templateStr ){//将模板字符串写到实例身上this.templateStr = templateStr//指针this.pos = 0//尾巴,刚开始为字符串本身this.tail = templateStr}//让指针跳过目标,进而扫描后面的内容scan(target){this.pos += target.lengththis.tail = this.templateStr.substring(this.pos)}//扫描字符串,直到扫描到目标,返回目标之前的字符串scanUtil(target) {let recordPosValue = this.pos//如果该字符串的地一个元素即该目标的索引不为0时,说明指针还需要往右走while(this.tail.indexOf(target)!=0&&this.pos<this.templateStr.length){this.pos++;//尾巴变为pos后面的部分this.tail = this.templateStr.substring(this.pos)}return this.templateStr.substring(recordPosValue,this.pos)}
}
export default function becomeEasyToken (templateStr){let token = []//实例化一个扫描器,针对模板字符串工作let scanner = new Scanner(templateStr)while(scanner.pos<templateStr.length){let word;word = scanner.scanUtil('{{');if(word !=''){token.push(["text",word])}scanner.scan('{{')word = scanner.scanUtil("}}")if(word !=''){if(word[0] == "#"){token.push(["#",word.substring(1)])}else if(word[0]=="/"){token.push(['/',word.substring(1)])}else{token.push(["name",word])}}scanner.scan("}}")}return token
}

以上代码没有处理 "#" 的循环功能 ,所以还必须添加一个函数,并对该返回值稍加修改

import foldToken  from "./foldToken";
export default function becomeEasyToken (templateStr){let token = []//实例化一个扫描器,针对模板字符串工作let scanner = new Scanner(templateStr)while(scanner.pos<templateStr.length){let word;word = scanner.scanUtil('{{');if(word !=''){token.push(["text",word])}scanner.scan('{{')word = scanner.scanUtil("}}")if(word !=''){if(word[0] == "#"){token.push(["#",word.substring(1)])}else if(word[0]=="/"){token.push(['/',word.substring(1)])}else{token.push(["name",word])}}scanner.scan("}}")}return foldToken(token)
}
export default function foldToken(tokens) {//结果数组let nestedTokens = []//栈结构,存放小tokenslet section = [];//与nestedTokens指向的是同一数组,该数组为一级数组let collentor = nestedTokensfor (const item of tokens) {switch (item[0]) {case "#"://进栈section.push(item)collentor.push(item)//创建新一级的数组collentor = item[2] = [] break;case "/"://出栈section.pop(item)//如果都出完了,则回到一级数组,还没出完则回到其上一级collentor =  section.length>0?section[section.length-1][2]:nestedTokensbreak;default://仅负责给各级数组添加 "text" 元素collentor.push(item)}}return nestedTokens;
}

效果展示:

 

http://www.yayakq.cn/news/290227/

相关文章:

  • 有帮忙做网站的吗博客 建立网站
  • 泉州自助建站系统做阿里网站卖东西赚钱
  • 网站容量微信公众号好看的模板哪里找
  • wordpress建站插件安全平面广告设计需要学什么
  • wordpress生成pdfseo推广网址
  • creo二次开发seo研究协会网app
  • 网站建设属于什么广告没中国菲律宾时差
  • 做网站工作营销型网站建设应该注意什么
  • 网站建设牜金手指花总十四旅游网站如何做推广
  • 网站建设需要度搜去深圳公司做网站
  • 佛山网站建设公司哪家最好网络营销的特点有()
  • 网站建设课程报告论文河北网站开发多少钱
  • 百度资料怎么做网站深圳广告公司画册设计
  • 创建网站需要多少钱移动互联网开发的几种方式
  • 在百度上做个网站需要多少钱手机网站分享
  • 南阳手机网站推广网站建设的功能和目标
  • 微网站建设制作设计wordpress文章加表格
  • 国外设计大师网站有口碑的装修设计公司
  • 建设一个很大的视频网站需要多少钱多功能wordpress主题
  • 专业建设网站技术目前最火的互联网项目
  • wordpress地址和站点地址有什么用优化网站建设公司
  • 上海空气中检测出阳性宁波知名seo关键词优化
  • 网站和app可以做充值余额功能展厅设计说明万能模板
  • 做网站南京上海加盟网网站建设
  • 网站建设发言大型网站建设的难点是什么
  • 苏州官网建站专门做网络营销的公司
  • 网站建设找邓金平外贸销售管理制度
  • 设计网页时有哪些配色方法关键词优化排名用哪个软件比较好
  • 专题网站建设解决方案国外优秀个人网站
  • 江阴网站设计黄页营销网站视频免费大全