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

宁波公司网页制作优化二十条

宁波公司网页制作,优化二十条,dedecms怎么做网站,手机制作音乐app生命周期 Vue.js 组件生命周期: 生命周期函数(钩子)就是给我们提供了一些特定的时刻,让我们可以在这个周期段内加入自己的代码,做一些需要的事情; 生命周期钩子中的this指向是VM 或 组件实例对象 在JS 中,…

生命周期

Vue.js 组件生命周期:

生命周期函数(钩子)就是给我们提供了一些特定的时刻,让我们可以在这个周期段内加入自己的代码,做一些需要的事情;

生命周期钩子中的this指向是VM 或 组件实例对象

在JS 中,函数的执行上下文(也就是函数内部的 this 指向的对象)取决于函数的调用方式而 Vue 在创建组件实例时,会在内部确保生命周期钩子函数的执行上下文是指向组件实例的

具体来说,当 Vue 创建一个组件实例时,它会使用JS 的 Function.prototype.bind 方法来绑定组件实例作为函数内部的 this这意味着无论在哪个生命周期钩子函数中,我们使用的 this 都会指向当前组件实例

Vue 实例生命周期

image-20230829104559179

  • 初始化:

    • Events & Lifecycle:初始化生命周期、事件,数据代理尚未开始(beforeCreate前)

    • Injections & reactivity:初始化数据监测、数据代理,(beforeCreate实例创建后)

  • 创建阶段:

    • beforeCreate: 在数据监测、数据代理注入之前,在这个阶段初始化生命周期、事件,但数据代理还未开始注入

      数据代理:Vue 会将组件实例上的数据(data)、计算属性(computed)、方法(methods)等代理到实例本身上,在beforeCreate阶段使得我们可以通过 this 访问到vm,我们不能通过 this 直接访问 data 中的数据和 methods 中的方法

      数据监测:Vue 开始进行数据的响应式监测,即开始追踪数据的变化以便在数据变化时更新视图。

    • created: 数据监测、数据代理都已完成,数据监测确保了数据的变化能够被 Vue 追踪和响应。此时,我们可以在组件内部通过 this 访问并操作已经初始化的 data 和 methods,但组件尚未挂载到 DOM

  • 挂载阶段:

    • beforeMount: 组件挂载前调用,这时候操作不了真实DOM

    • mounted: 组件挂载到 DOM 后,此时页面呈现的是经过编译的真实DOM,可以进行 DOM 操作和初始化,但是尽量不要更改,刚挂载完成就给人家更改了?一般在此阶段开启定时器、发送网络清求、订阅消息、绑定自定义事件等初始化操作

  • 更新阶段:

    • beforeUpdate: 数据更新前调用,可做准备工作

    • updated: 数据更新完成,DOM 重新渲染避免修改数据以防止循环

  • 销毁阶段:

    • beforeDestroy: 在组件即将销毁(卸载)之前触发。这是一个很好的时机来进行一些清理工作,例如取消订阅、清除定时器、解绑事件监听器等。在这个阶段,组件仍然处于活动状态,可以访问组件的数据和方法。一旦 beforeDestroy 钩子执行完毕,组件就会被销毁,无法再通过实例访问组件的属性或方法。

    • destroyed: destroyed 生命周期钩子在组件已经销毁(卸载)之后触发。在这个阶段,组件实例以及其所有相关的 DOM 已经被完全销毁。我们可以在这个钩子中做一些清理工作,例如释放组件占用的资源、解绑全局事件监听器等。与 beforeDestroy 不同,此时无法访问组件的数据和方法,因为组件实例已经被销毁

      在destoryed这个阶段一般什么都不做,在react中没有这个阶段

  • 其他钩子:

    • activated(仅用于 keep-alive 组件):组件激活时调用

    • deactivated(仅用于 keep-alive 组件):组件停用时调用

    • errorCaptured: 捕获组件内部错误,类似于 try-catch

下面具体说明一下细节

测试时候记得配合debugger开控制台刷新使用,否则一下子执行完生命周期了:

 // data中定义了number:666beforeCreate() {console.log('实例创建前')console.log(this)debugger}

Vue实例中number为undefined

image-20230829105905696

下图中template和Outer 指的是哪?

image-20230827234808378

  • OuterHTML:指的就是外面绿色框框内的,div都会作为模板进行解析

  • InnerHTML:在内部的也就是InnerHTML

image-20230827231533273

  • 不进行 outer 的初始化操作可能会导致我们无法获得正确的 outerHTML 值,这个没多大影响

编译模板到渲染函数内:当我们把上述整个div清除时,就会尝试编译template作为模板进行解析,template将其完全替代渲染到页面上

created之后,beforeMounted之前,这一个阶段Vue开始解析模板,在内存中生成虚拟DOM,页面已经解析完了,但是还没有显示到页面上

image-20230828005007892

image-20230828001649675

  • beforeMount此时呈现的是未经编译的DOM结构,是不能够操作真实DOM的,所有对DOM的操作最终都不生效,控制台更改瞬时生效,执行完$el 替换之后,还是把虚拟DOM拿过来瞬间生成真实DOM插入页面(虚拟DOM是在created之后,beforeMount之前生成的虚拟DOM,所以在beforeMount这时怎么修改也只是瞬间生效)

设上端点,在页面上操作进行DOM,可以发现页面的确显示了(没有断点,根本不会看到任何变化)

image-20230828222709046

一旦点击下一步页面立即回复原样,说明了此时不能操作DOM

image-20230828223823930

  • Created VM.$el and replace "el" with it 这里用$el替换整个el容器的东西,这一步内存中的虚拟DOM转换成真实DOM,并且在VM.$el上进行存储

  • mounted此时页面呈现的是经过编译的真实DOM,可以进行 DOM 操作和初始化,但是尽量不要更改,刚挂载完成就给人家更改了?一般在此阶段开启定时器、发送网络清求、订阅消息、绑定自定义事件等初始化操作

image-20230827233721850

页面和数据尚未保持同步的是哪一个阶段?

是在beforeUpdate这个阶段,此时数据是新的,页面时旧的

image-20230828000924112

这里定义了number="666",可以看到控制台已经更新了667,页面尚未刷新

image-20230828001332886

之后就不断根据新数据生成新DOM,并与旧DOM对比,最终完成页面更新;

Model->View 数据绑定的更新

在每次数据变化触发更新时,Vue 会创建一个新的虚拟 DOM,然后将新的虚拟 DOM 与之前的虚拟 DOM 进行比较,找出差异,然后将这些差异应用于真实 DOM

image-20230828002451008

http://www.hengruixuexiao.com/news/15994.html

相关文章:

  • 做外贸营销网站域名注册腾讯云
  • 安卓应用开发系统上海百度提升优化
  • 国外html5特效网站免费seo视频教程
  • 站长音效网络运营是做什么的工作
  • 手机网站网络环境北京百度seo
  • 广西一站网网络技术集团有限公司新媒体营销策略有哪些
  • 东莞做网站多少钱百度录入网站
  • 快递网站域名更换seo基础篇
  • c# 网站开发实例教程网站开发软件有哪些
  • 网站开发工具的功能西安网站优化
  • 在58同城做网站有生意吗搜狗识图
  • 怎么把抖音关键词做上去优化大师手机版
  • 哪个网站做黑色星期五订酒店活动安卓优化大师手机版下载
  • 网站建设的一般步骤包含哪些网站友情链接连接
  • 合肥做网站域名的公司百度风云榜排行榜
  • 做网站的专业叫什么网站推广优化流程
  • wordpress如何汉化版网站优化平台
  • 美食网站建设背景介绍网站排名优化
  • 正规刷手机单做任务网站aso优化技巧大aso技巧
  • 安阳 做网站google谷歌搜索引擎入口
  • 贵州做网站找谁狠抓措施落实
  • 做门户网站用什么模板好餐饮店如何引流与推广
  • 网络论坛有些什么平台宁波正规优化seo公司
  • 汉寿做网站的公司百度一下你就知道官方网站
  • 可以做ppt的网站登录百度app
  • wordpress 网站制作郴州seo快速排名
  • 现在网站建设还用测浏览器吗网络推广营销软件
  • 网站建设的公司资质郑州百度网站快速优化
  • 网站 手机版 电脑版 怎么做汕头seo网络推广
  • 如何用文档创建一个网站山西seo排名厂家