Vue基础知识之指令和生命周期(一)
2017-06-11 14:31
731 查看
优点:轻量易学,灵活。
核心:通过尽可能简单的API来实现响应的数据绑定和组合的视图组件。
1、数据绑定:数据改变,驱动视图的自动更新。 2、视图组件化:把整个网页拆分成一个个区块,每个区块都可以看成一个组件,网页就是由多个组件拼接或者嵌套组成。
使用场景:
1、频繁操作DOM 2、项目中有多个部分都是相同的,并可以封装成一个组件。 3、vue.js的核心实现使用了ES5的Object.defineProperty特性,故而IE8以及以下的浏览器不兼容。
vue的安装和使用
npm install bower bower info vue 查看所有版本 npm init -y npm install vue -S
<div> {{message}} </div> <script> var vm=new Vue({ el:'#app',//可以指定vue的指定范围,不能给body和html data:{ message:'hello world' } }) </script> 通过new Vue()创建一个vm,意即viewModel,数据要挂在VM上才能实现MVVM,VM会代理data中的所有数据 vm.message。Object.defineProperty。
指令
是一种特殊自定义的行内属性,在Vue中,指令以v-开头。
1、v-model:双向数据绑定,当你改变数据上的属性,视图也会随之变化。相反视图变化也会影响数据。只有input、radio、checkbox、textarea、select这五个元素可以增加v-model指令,其它均不行只能放置表达式。
2、v-once:数据只绑定一次,当数据在更改时不会更新内容。
3、v-html:当绑定的数据是html字符串时,展示正常的html
<div v‐once>{{message}}</div> <div v‐html="html"></div> data:{ html:'<h1>hello</h1>' }
4、v-for:循环数组或者对象
<ul> <li v‐for="(phone,index) in phones">{{phone}} {{index}}</li> </ul> data:{ phones:['apple','xiaomi','huawei'] }
//对象没有索引用的是键值对 <li v‐for="(value,key) in json" > {{value}} </li> data:{ json:{name:'zfpx'} } <button v‐on:click="addFruit">按钮</button> <ul> <li v‐for="value in fruits"> {{value}} </ul>
5、v-on:v-on:click简写@click。执行方法时,不加上()事件源默认不传递,需要手动传入$event,此时的$event代表的就是事件源,如果有()而没有传参则事件源e变为了undefined。methods中的this永远指向Vue的实例。
<button v‐on:click="addFruit">按钮</button>, <ul> <li v‐for="value in fruits" > {{value}} </li> </ul> var vue = new Vue({ el:'#box', data:{ fruits:['香蕉','苹果','橘子'] }, methods:{ addFruit(){ this.fruits.push('苹果'); } } });
6、v-if/v-show:v-show通过css样式(display:none)将元素隐藏,频繁的操作时用v-show;v-if通过DOM移除DOM节点,判断是否存在。v-if后面可以根velseif或者velse。
<div v‐if='false'>jw,handsome</div> <div v‐show='false'>jw,handsome</div>
7、v-cloak:防止闪烁,当vue加载完成后移除v-clock属性
<style> [v-cloak]{ display:none; } </style> <div v-cloak> {{name}}{{age}} </div>
8、v-bind:绑定动态数据,可以直接简写为':'
<div id='app'> <img v-bind:src='msg' v-bind:title='zf' v-bind:width='w'> </div> new Vue({ el:'#app', data:{ msg:'http://www.。。。', zf:'xxx', w:'100px' } })
生命周期
new Vue()=>设置数据=>挂载元素=>渲染成功
Vue把整个生命周期划分为创建、挂载、更新、销毁等阶段,每个阶段会提供给一个钩子函数让我们做一些想实现的动作。
beforeCreate:即将创建。数据和挂载元素都是undefined
created:创建完成。数据可以读取,但是DOM还没生成。
beforeMount:即将挂载。DOM已经生成,但是DOM中的数据还没有渲染成data中的数据。
mounted:挂载完毕。数据成功渲染出来。
beforeUpdate:开始更新。在检测到我们要修改数据的时候,更新渲染视图之前就会触发钩子beforeUpdate。
updated:更新完毕。更新视图之后,在读取视图上的内容,已经是最新的内容。
beforeDestroy:调用实例的destory()之前可以销毁当前的组件之前,会触发这个钩子。
destroyed:成功销毁之后。
actived:keep-alive组件被激活的时候调用
deactivated:keep-alive组件停用时调用
<div id='app'>{{name}}</div> <script> let vm=new Vue({ el:'#app', data:{ name:'Hello World' }, beforeCreated(){ console.log('即将创建'); console.log(this.$data);//undefined console.log(this.$el);//undefined }, created(){ console.log(this.$data);//object{__ob__:Observer} console.log(this.$el);//undefined }, beforeMounted(){ console.log(this.$el);//<div>{{name}}</div> }, mounted(){ console.log(this.$el);//挂载完毕数据已渲染 }, beforeUpdated(){ console.log(this.$refs.app.innerHTML);//Hello World数据并未更新 }, updated(){ console.log(this.$refs.app.innerHTML);//Hello World数据已更新 }, beforeDestory(){ } }) </script>
相关文章推荐
- Vue 2.0入门基础知识之内部指令详解
- vue2.0+基础知识连载(11)--- 生命周期
- Linux基础知识整理[6]——压缩指令与正规表达法
- javaEE中servlet基础知识--生命周期和实现的接口
- Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想
- Android 的生命周期基础知识
- Android基础知识:Activity生命周期和Intent用法
- Linux系统命令分类详解【指令大全加详解】【基础知识】
- jsp基础知识二(jsp编译指令)
- Android Activity学习 <一> Activity基础知识和生命周期
- Android基础知识之四大组件Activity(二)一个Activity的生命周期?
- Vuejs——(2)Vue生命周期,数据,手动挂载,指令,过滤器
- 7号指令基础知识
- JSP脚本语言基础知识之指令
- 黑马程序员_学前须知之mac常用知识介绍和unix基础指令
- iOS基础知识:预处理指令
- android基础知识复习(一)——对话框风格的Activity、Menu、Activity生命周期
- 创建自定义 AngularJS 指令:Part I 指令基础知识
- Java基础知识之字节码指令简介
- Vue.js基础知识汇总