优点:轻量易学,灵活。

核心:通过尽可能简单的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后面可以根v­else­if或者v­else。
 <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基础知识之指令和生命周期(一)的更多相关文章

  1. Android基础知识05—活动的生命周期

    ------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...

  2. 【05】Vue 之 实例详解与生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  3. Vue的项目搭建及请求生命周期

    目录 Vue的项目搭建及请求生命周期 Vue-CLI的项目搭建 环境搭建 项目创建 pycharm运行Vue项目 Vue项目的大体结构 Vue的请求生命周期 两个小用法 Vue的项目搭建及请求生命周期 ...

  4. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  5. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  6. vue基础知识之vue-resource/axios

    Vue基础知识之vue-resource和axios(三)   vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没 ...

  7. Vue基础知识之vue-resource和axios

    Vue基础知识之vue-resource和axios  原文链接:http://www.cnblogs.com/Juphy/p/7073027.html vue-resource Vue.js是数据驱 ...

  8. 一起学习vue源码 - Vue2.x的生命周期(初始化阶段)

    作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e8 ...

  9. Vue.js的指令、生命周期钩子与数据选项

    vue.js官网:https://cn.vuejs.org/v2/guide/components-registration.html 一.常用指令 v-if ... v-else: 作用:控制元素是 ...

随机推荐

  1. 转--ES6 Promise 用法讲解

    Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 var p = new Promise( ...

  2. 手游服务端框架之GM金手指的设计

    玩过单机游戏的朋友,应该对金山游侠这个软件很熟悉把.当初我经常嫌刷怪升级非常辛苦,很多时候都是直接用金山游侠来修改游戏的经验或者等级内存,直接把角色调得很牛逼. 游戏开发也非常需要这些可以修改玩家数据 ...

  3. 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激活 ...

  4. SimpliciTI无线开发 — 快速搭建低功耗、低成本无线传感器网络

    一.初闻SimpliciTI SimpliciTI是TI在2007年宣布推出的针对小型简单RF网络的专有低功耗协议,因其简化了具体的实施操作,降低对微控制器资源的占用,故基于SimpliciTI的RF ...

  5. 如何写一个LaTeX类文件,并设计你自己的简历

    2017/8/29 20:26:03 原文地址 https://www.sharelatex.com/blog/2011/03/27/how-to-write-a-latex-class-file-a ...

  6. 《DSP using MATLAB》示例Example 8.22

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  7. BZOJ4547 Hdu5171 小奇的集合

    题意 有一个大小为n的可重集S,小奇每次操作可以加入一个数a+b(a,b均属于S),求k次操作后它可获得的S的和的最大值.(数据保证这个值为非负数) 对于100%的数据,有 n<=10^5,k& ...

  8. BZOJ4057 [Cerc2012]Kingdoms

    题意 有一些王国陷入了一系列的经济危机.在很多年以前,他们私底下互相借了许多钱.现在,随着他们的负债被揭发,王国的崩溃不可避免地发生了--现在有n个王国,对于每对王国A和B,A欠B的钱被记为d_AB( ...

  9. nginx虚拟机的配置

    user nginx nginx;worker_processes 1;pid /data/var/run/nginx/nginx.pid;worker_rlimit_nofile 51200; ev ...

  10. pandas之DateFrame

    float_df = pd.DataFrame((0.45*np.arange(1,9)).reshape(4,2), index=[1,2,3,4], columns=['col_one', 'co ...