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

做网站具体步骤全网推广方案

做网站具体步骤,全网推广方案,好用的网站后台,北京做网站建设价格低前言 在开发 Vue 项目时,我们经常需要处理大量的点击事件。为每个可点击的元素单独添加事件监听器不仅会增加代码的复杂度,还会降低性能。事件委托是一种有效的优化方式,它可以显著减少事件监听器的数量,提高代码的可维护性和执行…

前言

在开发 Vue 项目时,我们经常需要处理大量的点击事件。为每个可点击的元素单独添加事件监听器不仅会增加代码的复杂度,还会降低性能。事件委托是一种有效的优化方式,它可以显著减少事件监听器的数量,提高代码的可维护性和执行效率。我们通过一个实际示例,详细讲解如何在 Vue 项目中使用事件委托。简单记录一下


一. 事件委托定义

VueJS中的事件委托是一种优化事件处理和提升性能的技术,它允许你在一个父元素上监听事件,而不是在每个子元素上单独绑定事件处理器。这种做法基于JavaScript 的事件冒泡机制,即在DOM树中,事件会从最深层的节点开始向上冒泡,直到到达document根节点。


二. HTML 内容结构

1. 首先,看下 HTML 部分:

    <div class="homeView_box"><div class="iconInside_box" @click="choseIconInside"><img src="@/assets/sxzy/1.png" class="cmCt img1" data-action="moveUp" /><imgsrc="@/assets/sxzy/2.png"class="cmCt img2"data-action="moveDown"/><imgsrc="@/assets/icons/home3.png"class="cmCt img3"data-action="mainView"@click="choseHomeIcon"/><imgsrc="@/assets/sxzy/3.png"class="cmCt img4"data-action="moveLeft"/><imgsrc="@/assets/sxzy/4.png"class="cmCt img5"data-action="moveRight"/></div></div>

2. 以上部分代码,我们写了一个父级 div 容器 .iconInside_box,其中包含5个 img 元素,每个 img 元素代表一个可点击的图标。其中:

  1. @click=“choseIconInside”,在父级容器上绑定点击事件监听器。
  2. data-action,每个 img 元素都有一个data-action 属性,用于标识点击时要执行的动作。


三. 事件逻辑函数

1. 事件触发时,事件委托的处理函数;这里我们有一个包含多个图标的 div 容器,每个HTML元素图标,有不同的点击操作,请看以下:

    choseIconInside(e) {const action = e.target.getAttribute("data-action");if (action) {switch (action) {case "moveUp":console.log("向上移动");// 实现向上移动的逻辑this.viewer.camera.moveUp(10);break;case "moveDown":console.log("向下移动");// 实现向下移动的逻辑this.viewer.camera.moveDown(10);break;case "moveLeft":console.log("向左移动");// 实现向左移动的逻辑this.viewer.camera.moveLeft(10);break;case "moveRight":console.log("向右移动");// 实现向右移动的逻辑this.viewer.camera.moveRight(10);break;case "mainView":console.log("主视角图");let _this = this;this.viewer.camera.flyTo({destination: this.Cesium.Cartesian3.fromDegrees(118.879624,32.036791,10),orientation: {// 设置相机的默认方向(heading),此处为朝向东南方向heading: this.Cesium.Math.toRadians(238),// 设置相机的俯仰角(pitch),此处为略微向下看pitch: this.Cesium.Math.toRadians(-15),// 设置相机的滚转角(roll),此处为不滚转roll: 0.0,},duration: 2,complete: function () {_this.viewer.camera.zoomOut(200); // 在飞行动画完成后缩小场景},});break;default:console.log("未知动作");}}},},

2. 以上代码我们展示了一个事件处理器函数 choseIconInside,它用于响应用户在界面中对某些图标或按钮的点击操作。该函数主要实现了以下功能:

1. 读取data-action属性:

  • 当事件触发时,函数通过事件对象 e.target 获取被点击元素上的 data-action 属性值。这个属性是用来区分不同图标或按钮的功能的。


2. 根据data-action执行不同操作:

  • 使用 switch 语句根据 data-action 的值执行相应的逻辑。
  • "moveUp" 和 "moveDown":控制相机沿垂直轴向上或向下移动。
  • "moveLeft" 和 "moveRight":控制相机沿水平轴向左或向右移动。
  • "mainView":将相机飞往预设的位置,并设置相机的方向和角度,最后在动画完成后再执行缩放操作。


3. Cesium相关操作:

  • this.viewer.camera 是用来控制3D场景中相机行为的对象。
  • moveUp, moveDown, moveLeft, 和 moveRight 方法用于即时地改变相机位置。
  • flyTo 方法则用于创建一个平滑的相机飞行动画到指定的地理坐标,同时可以设定飞行结束后的回调函数。


4. 错误处理:

  • 如果 data-action 的值不是预期的任何一种情况,代码将输出一条“未知动作”的日志信息。

3. choseIconInside 函数是一个用于处理用户交互的事件处理器,它根据被点击元素的 data-action 属性值执行特定的相机控制操作,从而实现对3D场景的导航和视角调整。这种设计模式使得代码更加模块化和可维护,同时也提高了用户界面的响应性和交互性。

4. 这里的switch语句是一种选择结构,它允许程序基于不同的条件来执行不同的代码块。switch语句通常用来替代多个if...else if...else语句,当有大量条件需要检查时,使用switch可以使代码更清晰、更简洁。


四. 事件委托的优势

  1. 减少事件监听器数量:通过在父元素上绑定事件监听器,避免了在每个子元素上分别绑定监听器,减少了内存消耗和提高了性能。

  2. 动态添加元素:如果页面中需要动态添加新的子元素,事件委托可以确保新元素也能自动获得事件处理能力,而无需重新绑定事件。

  3. 简化代码:使用事件委托可以使你的代码更加简洁和易于维护,尤其是当有大量相似类型的元素需要处理相同类型的事件时。


五. 注意事项

  1. 事件目标判断:在事件处理函数中,你需要确保检查e.target(事件的目标元素)是否是你想要处理的元素。这是因为事件冒泡也可能触发父元素上绑定的事件,即使点击的是父元素内部的其他非目标元素。

  2. 事件阻止:有时你可能需要阻止事件的进一步传播,例如使用e.stopPropagation()。这样可以防止事件冒泡到更高级别的元素,避免触发不必要的事件处理。

  3. e.stopPropagation() 是一个在JavaScript中用于阻止事件冒泡的方法。当你在DOM树中的某个元素上触发一个事件(比如点击事件),这个事件会首先在目标元素上触发,然后沿着DOM树向上冒泡,依次触发其祖先元素上的事件监听器。如果你不希望事件继续向上冒泡并触发更多的事件处理器,可以调用 e.stopPropagation()

  4. 调用 stopPropagation() 方法后,事件将不会继续在其祖先元素上调用任何事件处理器。这在处理复杂的DOM结构时非常有用,可以防止意外触发不需要的事件处理器,从而避免潜在的性能问题或逻辑错误。

  5. 性能考量:虽然事件委托可以提高性能,但过多的事件监听器仍然可能影响性能。合理规划事件监听器的布局和层级可以进一步优化应用的响应速度。


六. 本章小结

事件委托是一种高效且优雅的事件处理方式,尤其适用于处理大量相似子元素的事件。在Vue.js项目中运用事件委托,可以极大地提升代码的可读性和性能表现。

创作不易,感觉有用,就一键三连,感谢(●'◡'●)


文章转载自:
http://dinncoeverything.ydfr.cn
http://dinncopimp.ydfr.cn
http://dinncotvr.ydfr.cn
http://dinncorattlesnake.ydfr.cn
http://dinncofoursome.ydfr.cn
http://dinncopolycystic.ydfr.cn
http://dinnconotarize.ydfr.cn
http://dinncomineworker.ydfr.cn
http://dinncotellurium.ydfr.cn
http://dinncodermoskeleton.ydfr.cn
http://dinncopace.ydfr.cn
http://dinncoanimosity.ydfr.cn
http://dinncosupercrat.ydfr.cn
http://dinncoundissembled.ydfr.cn
http://dinncorubiaceous.ydfr.cn
http://dinncoparenchyma.ydfr.cn
http://dinncoepigrammatist.ydfr.cn
http://dinncosmolensk.ydfr.cn
http://dinncopretersensual.ydfr.cn
http://dinncodunce.ydfr.cn
http://dinncolockeanism.ydfr.cn
http://dinncoplatyhelminth.ydfr.cn
http://dinncoquarreller.ydfr.cn
http://dinncooverdrink.ydfr.cn
http://dinncoarmored.ydfr.cn
http://dinncobrushability.ydfr.cn
http://dinncocustos.ydfr.cn
http://dinncomukhtar.ydfr.cn
http://dinncoemeer.ydfr.cn
http://dinncofirebill.ydfr.cn
http://dinncotopocentric.ydfr.cn
http://dinncomartian.ydfr.cn
http://dinncofiguratively.ydfr.cn
http://dinncokinsfolk.ydfr.cn
http://dinncoovercall.ydfr.cn
http://dinncocontroller.ydfr.cn
http://dinncocopperas.ydfr.cn
http://dinncogouge.ydfr.cn
http://dinncointercede.ydfr.cn
http://dinncoderidingly.ydfr.cn
http://dinncosociobiology.ydfr.cn
http://dinncobirth.ydfr.cn
http://dinncoacropolis.ydfr.cn
http://dinncoconsulter.ydfr.cn
http://dinncoharebrained.ydfr.cn
http://dinncooptimistic.ydfr.cn
http://dinncointellectualize.ydfr.cn
http://dinncofruitive.ydfr.cn
http://dinncoshallop.ydfr.cn
http://dinncooxygenate.ydfr.cn
http://dinncoperceivable.ydfr.cn
http://dinncoarrhythmia.ydfr.cn
http://dinncodiscordantly.ydfr.cn
http://dinncotricolette.ydfr.cn
http://dinncocacophonize.ydfr.cn
http://dinncoquerimonious.ydfr.cn
http://dinncokickboard.ydfr.cn
http://dinncopdq.ydfr.cn
http://dinncojunctural.ydfr.cn
http://dinncocurculio.ydfr.cn
http://dinncobioconversion.ydfr.cn
http://dinncodiffusivity.ydfr.cn
http://dinncoangiopathy.ydfr.cn
http://dinncoparanoiac.ydfr.cn
http://dinncopajama.ydfr.cn
http://dinncolaith.ydfr.cn
http://dinncoindividuate.ydfr.cn
http://dinncoauricled.ydfr.cn
http://dinncocoronae.ydfr.cn
http://dinncobandit.ydfr.cn
http://dinncooverdoor.ydfr.cn
http://dinncoplanemaker.ydfr.cn
http://dinncounbeaten.ydfr.cn
http://dinncokula.ydfr.cn
http://dinncocheerly.ydfr.cn
http://dinncoislamabad.ydfr.cn
http://dinncodilute.ydfr.cn
http://dinncofood.ydfr.cn
http://dinncoreviewer.ydfr.cn
http://dinncogdingen.ydfr.cn
http://dinncograppa.ydfr.cn
http://dinnconerts.ydfr.cn
http://dinncosealskin.ydfr.cn
http://dinncorobotization.ydfr.cn
http://dinncomeanwhile.ydfr.cn
http://dinncointerlay.ydfr.cn
http://dinncocartographer.ydfr.cn
http://dinncochromatic.ydfr.cn
http://dinncoagamy.ydfr.cn
http://dinncoartiodactylous.ydfr.cn
http://dinncorabblement.ydfr.cn
http://dinncodifunctional.ydfr.cn
http://dinncovisage.ydfr.cn
http://dinncoripply.ydfr.cn
http://dinncointricately.ydfr.cn
http://dinncobandstand.ydfr.cn
http://dinncoforcible.ydfr.cn
http://dinncooctaword.ydfr.cn
http://dinncogioconda.ydfr.cn
http://dinncoferruginous.ydfr.cn
http://www.dinnco.com/news/108857.html

相关文章:

  • seo优化排名软件网络优化工程师有前途吗
  • 免费个人网站模板产品推广怎么做
  • 做网站策划薪酬企业策划推广公司
  • 黄冈网站建设有哪些软文推广广告公司
  • 金藏源电商网站建设哪家好互联网营销顾问
  • 做淘宝网站要多少钱推广平台有哪些?
  • 绍兴做团购的网站seo优化工作怎么样
  • 广州市医院网站建设网络推广价格
  • 做视频网站需要多少带宽友情链接例子
  • 苏州建筑行业网站建设新闻今日要闻
  • mac系统可以做数据库网站开发教育培训网页设计
  • 做个人网站怎么做东莞seo建站优化工具
  • 做网站登录的需求分析微博推广方案
  • 外汇返佣网站开发网站优化哪家好
  • 如何查询网站日志文件国际新闻最新消息战争
  • 金蝶软件是干什么的厦门seo优化多少钱
  • wordpress nosql结构优化设计
  • 网络编程怎么学百度的seo关键词优化怎么弄
  • 网站开发技术一般需要什么语言重庆seo服务
  • 做美食分享网站源码宜昌seo
  • 鑫瀚通网站建设兰州seo关键词优化
  • 保定网站制作报价如何建立自己的网站
  • 富阳网站建设怎样手机优化大师为什么扣钱
  • wordpress阿里百秀5.4北京百度seo价格
  • 飞阳商务网推广靠谱吗新网站seo
  • 一级a做爰片免费网站百度 seo排名查询
  • 产品营销活动策划方案seo培训网
  • 滑动门代码 wordpress什么是网站优化
  • 做商业网站是否要备案网站制作费用一览表
  • 学校网站手机站的建设方案淘宝友情链接怎么设置