Vue基础知识之指令和生命周期(一)
优点:轻量易学,灵活。
核心:通过尽可能简单的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基础知识之指令和生命周期(一)的更多相关文章
- Android基础知识05—活动的生命周期
------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...
- 【05】Vue 之 实例详解与生命周期
Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...
- Vue的项目搭建及请求生命周期
目录 Vue的项目搭建及请求生命周期 Vue-CLI的项目搭建 环境搭建 项目创建 pycharm运行Vue项目 Vue项目的大体结构 Vue的请求生命周期 两个小用法 Vue的项目搭建及请求生命周期 ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- iOS系列 基础篇 04 探究视图生命周期
iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...
- vue基础知识之vue-resource/axios
Vue基础知识之vue-resource和axios(三) vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没 ...
- Vue基础知识之vue-resource和axios
Vue基础知识之vue-resource和axios 原文链接:http://www.cnblogs.com/Juphy/p/7073027.html vue-resource Vue.js是数据驱 ...
- 一起学习vue源码 - Vue2.x的生命周期(初始化阶段)
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e8 ...
- Vue.js的指令、生命周期钩子与数据选项
vue.js官网:https://cn.vuejs.org/v2/guide/components-registration.html 一.常用指令 v-if ... v-else: 作用:控制元素是 ...
随机推荐
- [置顶]
Retrofit2 初印象?
鄙人由于工作繁忙很久没写博客了还望大家谅解!之前csdn登不上,算了不说借口了,retrofit2相信已经很火了吧,而且上手也比较容易,之前可能大家都是用Volley,Okhttp.Okhttp3其实 ...
- ss-libev 源码解析udp篇 (4)
本篇分析remote_recv_cb,这是整个udp转发的反方向,即读取从后端发送过来的数据再发送给前端.对于ss-server,读取到的数据是目标地址的udp服务器发送回来的响应数据,ss-serv ...
- 微信网页登录Tips
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 以这篇文章为例,一般都是用户在第三方app中登录时,由第三方去申请资源服务器的登录权限等.即 ...
- BZOJ4831: [Lydsy1704月赛]序列操作(非常nice的DP& 贪心)
4831: [Lydsy1704月赛]序列操作 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 250 Solved: 93[Submit][Statu ...
- BZOJ5142: [Usaco2017 Dec]Haybale Feast(双指针&set)(可线段树优化)
5142: [Usaco2017 Dec]Haybale Feast Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 182 Solved: 131[ ...
- BZOJ5281: [Usaco2018 Open]Talent Show(01分数规划&DP)
5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 166 Solved: 124[S ...
- BZOJ3786 星系探索 【Splay维护dfs序】*
BZOJ3786 星系探索 Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均 ...
- POJ3068 "Shortest" pair of paths 【费用流】
POJ3068 "Shortest" pair of paths Description A chemical company has an unusual shortest pa ...
- 使用 Task.Wait()?立刻死锁(deadlock)
最近读到一篇异步转同步的文章,发现其中没有考虑到异步转同步过程中发生的死锁问题,所以特地在本文说说异步转同步过程中的死锁问题. 文章作者 林德熙 已经修复了描述: - win10 uwp 异步转同步 ...
- ios 视图切换翻页效果
本文写的是视图切换,涉及到的内容有 1.实现代码添加Navigation Bar Toolbal: 2.实现在Navigation Bar和Toolbar上用代码添加Bar Button Item: ...