当前位置:首页 > 前端技术 > VUE的介绍及生命周期

VUE的介绍及生命周期

2022年08月05日 17:20:09前端技术6

声明式渲染:

 

VUE的介绍及生命周期 _ JavaClub全栈架构师技术笔记

条件与循环:

VUE的介绍及生命周期 _ JavaClub全栈架构师技术笔记

条件渲染注意事项:

VUE的介绍及生命周期 _ JavaClub全栈架构师技术笔记

事件绑定:

VUE的介绍及生命周期 _ JavaClub全栈架构师技术笔记

双向绑定:

VUE的介绍及生命周期 _ JavaClub全栈架构师技术笔记

生命周期:

一共8个阶段

1.beforeCreate(创建前)

2.created(创建后)

3.beforeMount(载入前)

4.mounted(载入后)

5.beforeUpdate(更新前)

6.updated(更新后)

7.beforeDestroy(销毁前)

8.destroyed(销毁后)

 

vue第一次页面加载会触发那几个钩子函数?

beforeCreate、created、beforeMount、mounted

 

DOM渲染在那个周期中就已经完成?

mounted

 

VUE的介绍及生命周期 _ JavaClub全栈架构师技术笔记

mounted

1 .在mounted里面修改data里面的数据,并不是想要的直接就拿mounted里面的修改过的值渲染界面,而是还会先拿data里面的初始值进行渲染,然后走beforeUpdate这里拿新的数据进行渲染
2 .这是不是说如果想要修改data里面的数据,要在beforeMounted的时候修改呢
3 .其实beforeMounted也是先按照默认值进行渲染,如果beforeMounted里面修改数据比较慢的话,他是不会等着的,还是会直接执行下一个生命周期函数。也就是说所有的生命周期函数之间没有done的操作
4 .如果在beforeMounted里面加一个setInterval()来延迟修改值的话,也会触发beforeMounted函数
5 .往下看其实发现在mounted生命周期之前修改data里面的数据都是在修改虚拟dom,直到mounted之后任何修改才会被渲染到页面上。
6 .所以理论上只要在mounted之前修改数据都行,比如mounted里面进行ajax请求,也是这个原理
7 .这个还需要再看下源码,应该就能记得比较清楚
8 .挂载页面。

beforeCreate

1 .进行初始化事件,this指向创建的实例
2 .不能访问到data
3 .不能访问computed
4 .不能访问watch
5 .不能访问methods
6 .以上的方法和数据
7 .用来初始化非响应变量

created钩子

1 .实例创建完成
2 .数据已经和data属性绑定,此时放在data中的属性值发生改变的同时,视图也会改变
3 .可以初始化ajax请求了
4 .可以访问data
5 .可以访问computed
6 .可以访问watch
7 .可以访问methods
8 .可以访问到以上的方法和数据
9 .未挂载到DOM
10 .不能访问到ref属性内容为空数组

beforeMount

1 .判断是否有el选项,有就继续,没有就停止编译,除非调用vm.$moune(el)
2 .是否有template参数选项

1 .有template参数选项,将模板编译为render函数
2 .没有template选项,将外部html作为模板编译
3 .template中的模板优先级要高于outer HTML的优先级
 
<body>
  <div id="app">
    <!--html中修改的-->
    <h1>{
    {message + '这是在outer HTML中的'}}</h1>
//有template属性的时候这个就不会被渲染了
  </div>
</body>
<script>
  var vm = new Vue({
    
    el: '#app',
    template: "<h1>{
    {message +'这是在template中的'}}</h1>", //在vue配置项中修改的
    data: {
    
      message: 'Vue的生命周期'
    }
</script>
3 .如果Vue对象中还有一个render函数的话,那么又会先渲染render函数里面的内容。所以这是有优先级的
4 .模板编译完成,但是未挂载,无法获取dom

5 .给实例对象添加$el成员
6 .在挂载开始前被调用,在beforeMount之前,会找到对应的template,并编译成render函数

mounted

1 .在mounted之前还是通过{ {message}}进行占位的,因为还没有挂载到页面上,还是在js中以虚拟dom形式存在的
2 .mounted之后换成了我们想要的样子
3 .实例挂载到DOM上,此时可以通过DOM api获取到DOM节点。
4 .$ref属性可以访问
5 .常用于获取VNode信息ajax请求

beforeUpdate

1 .当data中的数据发生了改变,会触发对应组件的重新渲染
2 .响应式数据更新时调用,发生在虚拟dom打补丁之前
3 .适合在试图更新之前访问现有dom,比如手动移除或者添加事件监听器

updated

1 .虚拟dom重新渲染和打补丁之后调用,组件dom已经更新,可执行依赖dom的操作
2 .避免在这个钩子中操作数据,不然可能陷入死循环

beforeDestory

1 .实例销毁之前调用,这一步实例仍然可以使用,this仍然可以获取实例
2 .常用于销毁定时器,解绑全局事件,销毁插件对象等操作

destoryed

1 .实例销毁之后调用,调用后,Vue实例指示的所有东西都会解绑,所有事件监听器都会被移除,所有子实例也会被销毁、

注意

1 .created阶段的ajax请求和mounted阶段请求的区别:前者页面未出现,如果请求消息太多,页面会长时间处于白屏状态
2 .mounted不会承诺所有的子组件也都一起被挂载。如果希望等到整个视图都被渲染完毕,可以使用this.$nextTick

 

作者:changzhenwei
来源链接:https://blog.csdn.net/changzhenwei/article/details/107522844

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/front/17699.html

标签: vue
分享给朋友:

“VUE的介绍及生命周期” 的相关文章

vue全套教程(实操)

vue全套教程(实操)

  Vue (读音 /vjuː/,类似于 View) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具...

【vue】Vue中添加$alert的messageBox消息弹出框,进行换行、空格等html渲染

出现情况: 在Vue中 $alert的messageBox 无法直接通过正则表达式进行来进行换行和缩进解决方式: dangerouslyUseHTMLString 是否将 message 属性作为 HTML 片段处理 boolean — false this.$alert(...

Vue的生命周期的详解

Vue的生命周期的详解

Vue的生命周期 Vue的生命周期是每个使用Vue框架的前端人员都需要掌握的知识,以此作为记录。 Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从...

用HBuilderX 打包 vue 项目 为 App 的步骤

用HBuilderX 打包 vue 项目 为 App 的步骤

用HBuilderX 打包 vue 项目 为 App 的步骤 首先打包你的 vue 项目 生成 dist 文件夹,教程请移步  https://www.cnblogs.com/taohuaya/p/...

dotnetcore+vue+elementUI 前后端分离---支持前端、后台业务代码扩展的快速开发框架

dotnetcore+vue+elementUI 前后端分离---支持前端、后台业务代码扩展的快速开发框架

Document 框架采用dotnetcore+vue+elementUI 前后端分离,并且支持前端、后台代码业务动态扩展,框架内置了一套有着20多种属性配置的代码生成器,可灵活配置生成的代码,代码生成器界面配置完成即可生成单表/主从表的增、删、改、查、导入、导出、上传、审核基础...

脚手架vue-cli和@vue/cli的搭建及区别

脚手架vue-cli和@vue/cli的搭建及区别

vue-cli与@vue/cli vue脚手架版本目前有2,3,4.不管搭建哪个版本的脚手架,首先都需要安装node. node的安装 node的安装我们可以直接去node官网(http://nodejs.cn/)下载安装,node安装...

Vue中自定义标签及其使用

Vue中自定义标签及其使用

Vue中自定义标签及其使用 问题 需求 自定义 创建组件的vue文件 编辑组件 使用 导入...

vue.js快速搭建图书管理平台

vue.js快速搭建图书管理平台

上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够让我们更深刻的理解这门语言的妙用。   前  言 上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够...

Vue.js——60分钟browserify项目模板快速入门

Vue.js——60分钟browserify项目模板快速入门

概述 在之前的一系列vue.js文章,我们都是用传统模式引用vue.js以及其他的js文件的,这在开发时会产生一些问题。 首先,这限定了我们的开发模式是基于页面的,而不是基于组件的,组件的所有代码都直接写在页面中,这对于一些复杂的页面来说,不是好事情,代码的可读性会较差,也...

vue中axios的封装

vue中axios的封装

https://juejin.im/post/5b55c118f265da0f6f1aa354 掘金的网址(很好) 一、axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promi...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。