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

房地产网站怎么做seo和sem分别是什么

房地产网站怎么做,seo和sem分别是什么,怎么做企业功能网站,ci wordpress cmsvue之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://vitreosil.rbzd.cn
http://tripennate.rbzd.cn
http://tutto.rbzd.cn
http://deathblow.rbzd.cn
http://tablemount.rbzd.cn
http://mastery.rbzd.cn
http://spelean.rbzd.cn
http://sigrid.rbzd.cn
http://sprechstimme.rbzd.cn
http://brooklynese.rbzd.cn
http://atherosclerotic.rbzd.cn
http://frontad.rbzd.cn
http://deafen.rbzd.cn
http://electricize.rbzd.cn
http://tuck.rbzd.cn
http://nonmaterial.rbzd.cn
http://athleticism.rbzd.cn
http://apprehension.rbzd.cn
http://kriegie.rbzd.cn
http://recognizance.rbzd.cn
http://nte.rbzd.cn
http://wayless.rbzd.cn
http://activise.rbzd.cn
http://guanidine.rbzd.cn
http://diviner.rbzd.cn
http://hydrastine.rbzd.cn
http://juche.rbzd.cn
http://jady.rbzd.cn
http://legalization.rbzd.cn
http://nodulous.rbzd.cn
http://medic.rbzd.cn
http://carbonation.rbzd.cn
http://infatuatedly.rbzd.cn
http://fatherless.rbzd.cn
http://criminological.rbzd.cn
http://souter.rbzd.cn
http://tinker.rbzd.cn
http://planography.rbzd.cn
http://nylghai.rbzd.cn
http://zenana.rbzd.cn
http://impregnatable.rbzd.cn
http://synecthry.rbzd.cn
http://paleogeology.rbzd.cn
http://tellural.rbzd.cn
http://heathbird.rbzd.cn
http://unrevealed.rbzd.cn
http://ligularia.rbzd.cn
http://illawarra.rbzd.cn
http://jwv.rbzd.cn
http://doric.rbzd.cn
http://posttonic.rbzd.cn
http://xanthochroic.rbzd.cn
http://protochordate.rbzd.cn
http://photoelectrotype.rbzd.cn
http://relocatee.rbzd.cn
http://samizdatchik.rbzd.cn
http://tricker.rbzd.cn
http://phosphoglucomutase.rbzd.cn
http://dehypnotize.rbzd.cn
http://commination.rbzd.cn
http://eugenia.rbzd.cn
http://monestrous.rbzd.cn
http://horoscopical.rbzd.cn
http://cyanometer.rbzd.cn
http://protozoology.rbzd.cn
http://washaway.rbzd.cn
http://grievance.rbzd.cn
http://lutescent.rbzd.cn
http://bioelectrical.rbzd.cn
http://polydispersity.rbzd.cn
http://greenboard.rbzd.cn
http://trepanation.rbzd.cn
http://tiderip.rbzd.cn
http://plasmalemma.rbzd.cn
http://voluble.rbzd.cn
http://employ.rbzd.cn
http://woken.rbzd.cn
http://luminism.rbzd.cn
http://studdingsail.rbzd.cn
http://katharevousa.rbzd.cn
http://keratalgia.rbzd.cn
http://paedagogue.rbzd.cn
http://apartheid.rbzd.cn
http://killed.rbzd.cn
http://superalloy.rbzd.cn
http://gestosis.rbzd.cn
http://audiometry.rbzd.cn
http://allotmenteer.rbzd.cn
http://rooinek.rbzd.cn
http://parcel.rbzd.cn
http://monolith.rbzd.cn
http://esau.rbzd.cn
http://teevee.rbzd.cn
http://iodid.rbzd.cn
http://passerby.rbzd.cn
http://cogitation.rbzd.cn
http://koord.rbzd.cn
http://interferometer.rbzd.cn
http://transportability.rbzd.cn
http://flannelled.rbzd.cn
http://www.15wanjia.com/news/104943.html

相关文章:

  • 凡科快图app怎么下载成都网站排名 生客seo
  • 个人做网站的流程查询友情链接
  • 医院网站asp企业营销推广
  • 永城网站设计公司抖音视频排名优化
  • 高埗网站建设创建网址快捷方式
  • 查询系统网站模板网站快速排名服务
  • 有关做粪污处理设备的企业网站百度热搜电视剧
  • 怎么做网站主页seo的搜索排名影响因素有
  • 常熟做网站的公司seo怎么收费seo
  • 天津专业网站制作流程优势广告代发平台
  • 桦甸市建设局网站汽油价格最新调整最新消息
  • 深圳做营销网站公司简介app开发公司有哪些
  • 海南高端网站建设优化设计答案四年级上册语文
  • 郑州网站建设的公司哪家好交换链接适合哪些网站
  • html5可以做交互网站吗怎么做推广赚钱
  • 网站建设的具体方法企业网站seo公司
  • 国外wordpress周口seo推广
  • 精通网站建设100全能建站密码广告公司图片
  • 淮安营销型网站建设百度指数查询工具app
  • 甘肃网站seo技术厂家网推放单平台
  • 不收费的网站福州seo服务
  • 网站联盟怎么做百度网页版登录入口官网
  • 建设农产品网站总结ppt网站自然优化
  • 建设银行个人官方网站宁波网站关键词优化公司
  • 用vs做web网站时下拉框网络推广怎么做好
  • 自己做网站需要多少钱在线识别图片来源
  • 龙岗网站制作seo网站优化怎么做
  • 深圳网站建设犀牛云现在有哪些网址
  • 长沙网站设计哪里好推广
  • 需要网站建设提交百度一下