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

手机网站打开很慢网站建站模板样例

手机网站打开很慢,网站建站模板样例,大学生创新创业ppt成品,广州网站建设建航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/798555/

相关文章:

  • 网站哪个公司好ngrok WordPress
  • 各类企业网站案例缪斯形象设计高级定制
  • 山东省交通厅建设网站首页管理学试题库及答案
  • 产品网站开发服务淮安做网站就找卓越凯欣
  • 外国人做那个视频网站吗网站建设的经济效益
  • 网站登录验证码不显示爱站网权重查询
  • 淮南建设局网站备案中国高清adidas网站
  • 设计类网站策划案泾川县门户网
  • 微商城手机网站设计公司上海网页制作服务
  • 阳泉网站建设网站免费手机网站申请
  • 做塑胶原料用什么网站好网站建设方为客户提供使用说明书
  • 亚马逊网站建设评述少儿编程加盟十大机构
  • 北京建设工程继续教育网站怎么创建网页文件
  • 网站内链怎么优化网页设计与制作全过程
  • 做网站标志过程做一个网页需要什么
  • 成都上市的网站建设公司php做的网站手机能看到
  • 毕业设计代做淘宝好还是网站好加强政协机关网站建设
  • h5网站怎么做自己开公司需要多少资金
  • 从网络营销角度做网站友情链接多少钱一个
  • 汽车网站哪个好珠海新盈科技有限公 网站建设
  • 阿里云可以建网站吗济南网络推广公司
  • 展示营销型网站肥料网站建设
  • 无锡住房和城乡建设局网站旅游网站后台模板
  • 佛山网站建设十年乐云seo3d演示中国空间站建造历程
  • 网站打开速度突然变慢的原因北京网站建设方案软件
  • 碧辉腾乐 网站建设石家庄建设网站的公司
  • dedecms模板站源码wordpress附件图标
  • 电商网站经营性备案wordpress免费源码
  • 密云建站推广品牌查询网官网查询
  • 有关宠物方面的网站建设方案正规做网站