No more than code.
Vue lifeCycle & Little tips summary
| 生命周期
| keep-alive 组件切换/缓存
PS:使用 keep-alive 的组件,实例化 name 值与路由配置 name 值必须相同,否则 keep-alive 失效
- activated 当 keepalive 包含的组件再次渲染的时候触发
- deactived 当 keepalive 包含的组件销毁的时候触发
keepalive 可以接收三个属性作为参数进行匹配对应的组件进行缓存,默认 keepalive 包含的组件都缓存
- include 包含的组件
- exclude 排除的组件
- max 缓存组件的最大值
其中 include,exclude 可以为字符,数组,以及正则表达式 max 类型为字符或者数字
<!-- 只缓存组件 name 为 a 或者 b 的组件 -->
<keep-alive include="a,b">
<component :is="currentView"/>
</keep-alive>
<!-- 组件名为 c 的组件不缓存 -->
<keep-alive exclude="c">
<component :is="currentView"/>
</keep-alive>
<!-- 如果同时使用include,exclude,那么exclude优先于include,下面的例子只缓存a组件 -->
<keep-alive include="a,b" exclude="b">
<component :is="currentView"/>
</keep-alive>
<!-- 如果缓存的组件超过了 max 设定的值 5,那么将删除第一个缓存的组件 -->
<keep-alive exclude="c" max="5">
<component :is="currentView"/>
</keep-alive>
| 动态添加类名和样式
动态添加类名
- 对象语法:
<div class="tab" v-bind:calss="{'active' : active , 'unactive' : !active}"> </div>
vm实例中需要包含data : {active : true} 渲染结果为: <div class="tab active"></div> - 数组语法:
<div v-bind:class="[classA, classB]"></div>
vm实例中需要包含 data : {classA : ‘class-a’,classB : ‘class-b’ } 渲染结果为:<div class="class-a class-b"></div> - 使用三元表达式:
<div v-bind:class="[classA, isB ? classB : '']"></div>
如果 vm.isB = false, 则渲染结果为 <div v-bind:class="class-a"></div>
动态添加样式
- 对象语法:直接绑定符合样式格式的对象
<div v-bind:style="alertStyle"></div>
data : { alertStyle : {color : ‘red’,fontSize : ‘20px’ } }
除了直接绑定对象外,也可以绑定单个属性或直接使用字符串
<div v-bind:style="{ fontSize : alertStyle.fontSize, color : 'red'}"></div>
- 数组语法:v-bind:style 允许将多个样式对象绑定到统一元素上。
<div v-bind:style="[ styleObjectA, styleObjectB]"></div>
| 常用修饰符
数据绑定 => 文本插值:v-once
单次插值,即首次赋值后,再更改 vm 实例属性值不会引起 DOM 变化。
Vue.js 2.0 去除了 1.0 的写法,采用 v-once 代替。以上模板需要改写为 <span v-once='name'></span>
input 参数特性
lazy(在change事件中同步数据) 例:<input v-model="query" lazy />
number(会自动将用户输入转为 Number 类型,如果原值转换结果为 NaN 则返回原值。 )
debounce 设置的最小延时,单位为 ms,即为单位时间内仅执行一次数据更新。 <input v-model="query" debounce="500" />
Vue.js 2.0 中取消了 lazy 和 number 作为参数,用修饰符(modifier)来代替 :
<input v-model.lazy="query" />
.lazy修饰符可以实现单向数据绑定
<input v-model.numer="age" />
去除了debounce,原因是无法监测到输入新数据,但尚未同步到vm 实例属性时这个状态。
新增了 trim 修饰符,去掉输入值首尾空格 : <input v-model.trim="name" />
常用事件修饰符
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用时间捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>
<!-- the click event will be triggered at most once -->
<a v-on:click.once="doThis"></a>
常见的按键修饰符
<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">
<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">
<!--全部的按键别名:-->
enter / tab / delete (捕获 “删除” 和 “退格” 键) / esc / space
up / down / left / right / ctrl / alt / shift / meta
<!-- 通过全局 config.keyCodes自定义按键修饰符别名,记住要在new新实例之前注册 -->
<!-- 可以使用 v-on:keyup.f1 -->
Vue.config.keyCodes.f1 = 112
| vue 中使用 jQuery
-
npm install jquery --save
-
webpack 配置:webpack.base.conf.js 新增代码块
var webpack = require('webpack') plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", jquery: "jquery", "window.jQuery": "jquery" }) ],
参考链接
vue-in-github
Vue2 技术栈归纳与精粹
Vue-plugin(page/dialogs/tablegrid/uploader/ztree/gallery/region)
Vue技术内幕
前端路由简介以及vue-router实现原理
从0到1手写一个vuejs
Vue UI库
vuejsdevelopers
Awesome Vue
revue
前端日刊
力荐 35 个最好用的 Vue 开源库!