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

做网站建设平台seo技术分享

做网站建设平台,seo技术分享,杭州网站建设哪家权威,王也身高例如:下图所示: 依次识别获取.js文件中的tag和props,可以理解为字符串拼接,将整个vue的标签结构看作是一个字符串。 话不多说,先放上完整代码,思路看代码备注。(自己实现的时候,可以…

例如:下图所示:

依次识别获取.js文件中的tagprops,可以理解为字符串拼接,将整个vue的标签结构看作是一个字符串。

话不多说,先放上完整代码,思路看代码备注。(自己实现的时候,可以先把tag标签,即vue结构弄出来,后续再加上props属性,这样思路会更加清晰)

实现方法:

首先想到的是利用递归,一点一点的拼接字符串,因为.js文件到底多大是不确定的。

data() {return {previewContent: '',suojinStr: ''// 获取缩进字符}},methods: {handlePreview() {var jsdata = require('../../../public/js/bbb.js') //获取文件this.obtainData(jsdata.default) //调用递归方法this.previewContent = '<template>' + this.previewContent + '\n' + '</template>'},obtainData(data) {var children = data.childrenif (children) {this.suojinStr += '\t'for (var i = 0; i < children.length; i++) {// 拼接字符串:换行符+缩进+开始标签this.previewContent += '\n' + this.suojinStr + '<' + children[i].tag + '>'// 获取props相关数据---放在开始标签的里面--比开始标签在往里缩进一格if (children[i].props !== undefined) {for (var key in children[i].props) {// 拼接字符串:换行符+缩进+(再一格缩进)+props的内容this.previewContent += '\n' + this.suojinStr + '\t' + key + '=' + '"' + children[i].props[key] + '"'}}// 调用自身,递归---挖掘孩子节点,一层一层拼接this.obtainData(children[i])// 拼接字符串:换行符+缩进+结束标签---当没有孩子时,闭合标签this.previewContent += '\n' + this.suojinStr + '</' + children[i].tag + '>'}// 结束标签的空格回退---父亲的结束标签和和父亲的开始标签对齐,所以等没有孩子时,回退一格缩进this.suojinStr = this.suojinStr.substr(1)}}}

后面,和Sweny-blog讨论了一下,发现她的字符串是整个拼接起来的,不像我拼接的这么零碎。然后我也尝试了一下拼接完整版。

methods: {handlePreview() {var jsdata = require('../../../public/js/bbb.js')this.previewContent = this.obtainData1(jsdata.default)this.previewContent = '<template>' + this.previewContent + '\n' + '</template>'},obtainData1(data) {// 换行+缩进+首标签+递归(找孩子)+换行+缩进+尾标签var previewContent = ''var children = data.childrenif (children) {this.suojinStr += '\t'for (var i = 0; i < children.length; i++) {// 获取props属性的值---这块可以写成一个函数,后面完整拼接的时候,直接调用就行了var propsStr = ''if (children[i].props !== undefined) {for (var key in children[i].props) {propsStr += '\n' + this.suojinStr + '\t' + key + '=' + '"' + children[i].props[key] + '"'}}// 完整的拼接previewContent += '\n' + this.suojinStr + '<' + children[i].tag + '>' + propsStr + this.obtainData1(children[i]) + '\n' + this.suojinStr + '</' + children[i].tag + '>'}// 结束标签的空格回退this.suojinStr = this.suojinStr.substr(1)}return previewContent},}

这里面用到了previewContent这个局部变量进行拼接

为什么要使用局部变量?不像之前使用全局变量?

因为,拼接字符串中,调用了this.obtainData1(children[i])获取孩子拼接的字符串。若是全局变量,没有清空的过程,它会累加多余的字符。这里涉及到的知识点是变量作用域。

下面简单写个相似的递归:

function test1(num){var str = ''console.log('外面的str:'+ str)num++if(num<5){str+='a'+test1(num)console.log('if里面的str:'+ str)}return str;
}test1(0);

依次输出:

递归的过程是一层一层调用函数,每调用一个函数,又重新声明赋值了变量str,这就相当于子函数重新生成了一个同名变量,操作的是自己的变量。这个return str,是每次递归调用子函数,子函数返回的字符串,一层一层的累加。

其实相当于:先走到最内层,然后从最内层一层一层往外加str。

再看一个var变量作用域的示例:

var a = 1
function test4(){var a= 2;console.log(a)
}console.log(a) // 输出:1
test4();       // 输出:2
console.log(a) // 输出:1

若是还不懂,之前发过一篇博客JS中变量(var、let、const)的声明提升和作用域梳理专门讲作用域的,可以看看。

http://www.mmbaike.com/news/64460.html

相关文章:

  • 无锡有没有做网站的公司搜索引擎seo
  • 建设部网站158号文件今天最新新闻10条
  • 简单的购物网站怎么做淘客推广怎么做
  • 天津网架公司西安seo王尘宇
  • 网站做打火机如何淘宝优化
  • 工商注册公司的流程郑州seo培训班
  • 绵阳高端网站建设高端网站建设公司哪家好
  • 千图网素材解析网站开发百度登陆
  • 企业做网站预付账款会计分录网销怎么做才能做好
  • c 做游戏的网站教学长尾关键词挖掘词工具
  • 做婚恋网站有哪些cpa广告联盟平台
  • 广告公司的电话深圳龙岗区优化防控措施
  • 网站制作 网站建设 杭州站点搜索
  • wordpress二维码用户登录seo推广有哪些方式
  • 专门做油画交流的网站线上培训课程
  • 殡葬网站建设深圳百度推广
  • 巢湖做网站的公司怎样做品牌推广
  • 网站正在建设中的信息流优化师招聘
  • 用卡通人物做网站属于侵权吗百度灰色关键词代发
  • 在线做venn图网站宁波seo推广费用
  • 纯静态网站seo论坛排名
  • 企业怎么做网络销售广告优化
  • 深圳龙华的学校网站建设广东省新闻
  • 网站的音乐怎么做的seo搜索引擎优化实训
  • 昆明网站制作网页window优化大师
  • 三门县住房和城乡建设规划局网站个人建站
  • 数码网站建设总体目标网站推广公司排行榜
  • 网站后台功能枸橼酸西地那非片
  • 做视频网站该把视频文件传到哪免费浏览外国网站的软件
  • 建设网站一般流程2023网络营销成功案例