Vue 进阶语法和生命周期
文章目录
- Vue 进阶语法和生命周期
- 16、Vue:生命周期【了解】
- 17、Vue:computed计算属性
- 18、Vue:watch监控属性
Vue 进阶语法和生命周期
a. 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 根Root实例 开始的:
// 创建Vue实例
var vue = new Vue({// 选项对象
});
b. 当创建一个 Vue 实例时,你可以传入一个选项对象, 选项对象包括(例举):
- DOM (视图):
- el: 渲染的html元素
- template: 渲染的模板(组件开发时用)
- render: 渲染函数(组件开发时用)
- 数据/方法
- data: 数据
- props: 组件属性((组件开发时用))
- methods: 方法
- computed: 计算属性
- watch: 监控属性
- 生命周期钩子(不同阶段自动回调的函数)
- beforeCreate
- created
- beforeMount
- mounted
- beforeUpdate
- updated
- beforeDestory
- destoryed
c. Vue实例常用的方法:
vm.$mount() 挂载方法 (常用于组件开发)
如果 Vue 实例在实例化时没有指定 el 选项,则它处于“未挂载”状态,没有关联的 DOM 元素。
可以使用
vm.$mount()
手动地挂载一个未挂载的实例。vm.$emit() 定义触发当前实例上的事件 (常用于组件开发)
触发当前实例上的事件。附加参数都会传给监听器回调。
参考官方api: https://cn.vuejs.org/v2/api/
16、Vue:生命周期【了解】
目标: 了解vuejs的生命周期
每个 Vue 实例在被创建时都要经过一系列的初始化过程: 创建实例,装载模板,渲染模板等。Vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每当Vue实例处于不同的生命周期时,对应的函数就会被触发调用。
生命周期钩子函数:
beforeCreate:实例初始化之后调用(要啥啥没有,data和methods都拿不到)
created:实例创建完成后调用(data和methods都拿到了)
beforeMount:挂载开始之前调用**(拿到了html元素作为模板,但是还没有做数据挂载)**
mounted:挂载完毕之后调用
beforeUpdate:数据更新之前调用
updated:数据更新之后调用
beforeDestory:实例销毁之前调用。在这一步,实例仍然完全可用。
destoryed:实例销毁之后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
生命周期图示:
vm.$el: Vue 实例使用的根 DOM 元素。
Vue在实例化的过程中,会调用这些生命周期的方法,给我们提供了执行自定义逻辑的机会。那么,在这些vue钩子中,vue实例到底执行了那些操作,我们先看下面执行的例子:
demo_13.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Vuejs生命周期钩子</title><script src="node_modules/vue/dist/vue.js"></script>
</head>
<body><div id="app">{{message}}</div><script type="text/javascript">var vm = new Vue({el : '#app',data : {message : 'VueJS 您好!'},beforeCreate : function() {showData('1.实例初始化之后', this);},created : function() { // 比较重要(发异步请求加载初始化数据)showData('2.实例创建完成后', this);},beforeMount : function() {showData('3.挂载到dom前', this);},mounted : function() {showData('4.挂载到dom后', this);},beforeUpdate : function() {showData('5.数据变化更新前', this);},updated : function() {showData('6.数据变化更新后', this);},beforeDestroy : function() {vm.test = "3333";showData('7.vue实例销毁前', this);},destroyed : function() {showData('8.vue实例销毁后', this);}});function showData(process, obj) {console.log(process);console.log('data 数据:' + obj.message)console.log('挂载的对象:')console.log(obj.$el)console.log('真实dom结构:' + document.getElementById('app').innerHTML);console.log('-------------------------------')}vm.message = "good...";vm.$destroy();</script>
</body>
</html>
小结
页面初始化数据,可以在哪些钩子函数中提前加载?
- created、beforeMount、mounted 三个钩子函数(发送异步请求,获取后台数据)
17、Vue:computed计算属性
目标: 掌握compued计算属性的使用
在插值表达式中使用js做运算非常方便。但是如果表达式的内容很长,就会显得不够优雅,而且后期维护起来也不方便,这个时候就可以用计算属性。
使用语法:
computed: {key1: function(){return "计算后的数据";},key2: function(){return "计算后的数据";}
}
demo_14.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Vuejs计算属性</title><script src="node_modules/vue/dist/vue.js"></script>
</head>
<body><div id="app"><!-- 插值表达式 --><h2>{{new Date(milliseconds).getFullYear() + "年"+ new Date(milliseconds).getMonth()+ "月" + new Date(milliseconds).getDate()}}</h2><!-- 计算属性 (注意:它不是一个函数) --><h2>{{time}}</h2></div><script type="text/javascript">var vue = new Vue({el : '#app', // 渲染的html元素data : { // 数据对象milliseconds : 1573878276849,},computed : { // 计算属性time (){ // time属性const date = new Date(this.milliseconds);return date.getFullYear() + "年" + date.getMonth() + "月" + date.getDate();}}});</script>
</body>
</html>
注意:
- 计算属性本质是函数,但是一定要返回数据。页面渲染时,只能把这个函数当成一个属性来使用。
- 计算属性需要我们自己主动调用,生命周期钩子函数不会主动调用计算属性。
18、Vue:watch监控属性
目标: 掌握watch监控属性的使用
watch可以帮我们监控数据对象中的属性值发生改变。
使有语法:
watch : {key1 : function(newVal, oldVal){},"obj.key1" : function(newVal, oldVal){},obj : {// 开启深度监控(对象)deep : true,// 监控函数,必须用这个函数名handler : function(obj){}}
}
demo_15.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Vuejs监控属性</title><script src="node_modules/vue/dist/vue.js"></script>
</head>
<body><div id="app"><input type="text" v-model="message"/><br/><h2>{{message}}</h2><input type="text" v-model="user.name"/><br/><input type="text" v-model="user.age"/><br/><h2>姓名: {{user.name}} ==> 年龄: {{user.age}}</h2></div><script type="text/javascript">var vue = new Vue({el : '#app', // 渲染的html元素data : { // 数据对象message : '',user : {name : '', age : ''}},watch : { // 监控属性message : function(newVal, oldVal){console.log("新值:" + newVal + ",旧值:" + oldVal);},"user.name" : function(newVal, oldVal){console.log("user.name:" + newVal + ",user.name:" + oldVal);},user : {// 开启深度监控,可以监控到对象属性值的变化deep : true,// 监控处理函数handler : function (obj) {console.log("name:" + obj.name + ",age:" + obj.age);}}}});</script>
</body>
</html>
- 监控message变化:
- 监控user对象变化:
Memorial Day is 509 days |
Vue 进阶语法和生命周期相关推荐
- Vue 进阶系列丨生命周期
Vue 进阶系列教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的.若感本文对您有所帮助请点个赞吧! 2013年7月28日,尤雨溪第一次 ...
- day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法
系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...
- Vue之MVVM、Vue实例对象、生命周期
1.初识Vue Vue是一套用于构建用户界面的渐进式框架,Vue 被设计为可以自底向上逐层应用,Vue的核心是只关注视图层(如何理解),不仅易于上手,还便于与第三方库或既有项目整合. 渐进式框架:渐进 ...
- vue手机端回退_从外链回退到vue应用不触发生命周期、beforeRouterEnter等钩子函数的问题...
在iphoneX及以上版本从外链回退不触发事件,7P,7没发现这个bug 安卓上自测没有发现这个问题 最近做项目中发现了一个问题,iphoneX及以上版本从当前vue应用中跳转到外部链接然后在回退到v ...
- Vue基础进阶 之 实例方法--生命周期
在上一篇博客中我们知道生命周期的方法: 生命周期: vm.$mount:手动挂载Vue实例: vm.$destroy:销毁Vue实例,清理数据绑定,移除事件监听: vm.$nextTick:将方法中的 ...
- 【Vue.js学习】生命周期及数据绑定
一.生命后期 官网的图片说明: Vue的生命周期总结 var app = new Vue({el:"#app", beforeCreate: function(){console. ...
- Gavin小黑屋——Vue 学习笔记 :生命周期特点(先渲染HTML标签再渲染数据)
Vue基础 生命周期特点(先渲染HTML标签再渲染数据) 目录 Vue基础 生命周期特点(先渲染HTML标签再渲染数据) 一.Vue生命周期 Vue 的生命周期总共分为8个阶段:创建前/后,载 ...
- Vue(十)生命周期
Vue生命周期 vue实例从创建到销毁的过程,称为生命周期,共有八个阶段 <script> window.οnlοad=function(){let vm = new Vue({el:'# ...
- vue函数如何调用其他函数?_从源码中学Vue(一)生命周期中的钩子函数的那点事儿...
欢迎来到我的<从源码中学Vue>专题系列文章,更多精彩内容持续更新中,欢迎关注 :) Vue作为当下前端最流行的框架之一,在国内占绝对的优势.所以接下来我们一起来学习它吧! 我不会像其它人 ...
最新文章
- JAVA序列化和反序列化
- 检查图形是否为真彩色图形
- 华为服务器如何登录修改密码,如何修改云服务器的登录密码
- 51nod1325-两棵树的问题【最大权闭合图,网络流】
- Java 9:对可选的增强
- SSM:Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束的解决
- 建立带头结点的双向链表_尾插法
- mysql5.7安装教程centos_MySQL5.7版CentOS系统简易安装教程
- 欢迎加入免费星球,一起交流大数据技术。
- python设计模式18-备忘录模式
- 服务器常见远程管理网口及登录方式
- 程序员面试宝典问题及解析
- Java程序设计基础(第五版)期末总复习
- 程序员必备智力题集锦 (典藏版)
- swagger-ui快速入门教程
- [GIS教程] 5.3 空间数据组织
- 永不消逝的电波(二)HackRF入门:家用无线门铃信号重放
- 如何在Excel 2013中使用公式编辑器
- 如何修改网页视频播放倍速?(最高16倍速)
- linux下执行php命令echo不输出,linux echo命令以及linux echo命令提示权限不够的方法...