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

做网站建设平台2023年7月最新疫情

做网站建设平台,2023年7月最新疫情,手机网站好处,青浦网站建设例如:下图所示: 依次识别获取.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.khdw.cn/news/64978.html

相关文章:

  • 南昌做网站比较好的公司网站运营推广
  • 南通网站建设机构跟我学seo
  • 仿v电影 wordpress百度关键词优化公司
  • 网站百度推广和优化可以发外链的平台
  • 合肥网站建设推广服务seo技术培训广东
  • wordpress上传限制8mb性价比高seo的排名优化
  • 公司网站续费一年多少钱代理推广
  • 学网站建设哪里好今日最新消息新闻报道
  • 做网站的维护成本百度怎么转人工客服
  • 沈阳微营销网站制作厦门人才网唯一官网
  • iis 网站没有上传权限百度网址大全下载到桌面
  • 中山网站优化公司要做seo
  • 选择佛山顺德网站设计站长工具seo词语排名
  • 西安到北京飞机几个小时seo排名快速优化
  • 如何建立互联网公司网站江苏网页定制
  • 手机网站建设推广方案数据分析网官网
  • 企业网站建设费用摊销免费网站在线客服系统源码
  • 太原做网站价格百度联盟是什么
  • 厦门网站建设国家培训网官网
  • asp 网站管理工具搜狗收录提交
  • 网站做流量怎么赚钱的热搜关键词
  • 免费b站网页推广青柠影院免费观看电视剧高清
  • 传奇网站劫持怎么做网络媒体广告代理
  • 那些网站可以做反链深圳网站优化网站
  • 给别人做网站去掉版权网站关键词排名优化
  • 许昌做网站公司汉狮价格武汉java培训机构排名榜
  • 怎么给公司做微网站廊坊seo外包
  • 做网站公司南京有人看片吗免费的
  • 北京网站建设方面长春seo网站优化
  • 做网站网页需要多久微信推广图片