安装
- 通过script标签引入CDN文件
- npm install vue –save-dev
- bower install vue –save-dev
或使用vue-cli
工具
1 | npm install -g @vue/cli |
这里选择引入CDN的JS文件
1 | <script src="https://cdn.jsdelivr.net/npm/vue@2.5.22/dist/vue.js"></script> |
这个是未压缩版本,压缩版本只需把vue.js
改成vue.min.js
,当然压缩版本少了一些关键的错误提示信息。
插值与表达式
1 |
|
指令
原生标签前面v-
前缀开头
v-show
值为false的时候,元素被隐藏,审查元素发现元素上多了display:none
v-if
值为false的时候,不会在DOM中
v-else-if
跟在v-if
后面
v-else
跟在v-if
后面
1 | <p v-if="directive">if directive</p> |
v-model
在表单控件上创建双向绑定
1 | <form> |
v-for
基于源数据重复渲染元素
1 | <ul> |
当数组数据出现变化时,只有部分操作会触发视图更新:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
那如果需要修改某项的值
1 | change(index) { |
也可以使用filter、slice、map方法返回的新数组替换原来的数组
1 | change(index) { |
Vue 为了使得 DOM 元素得到最大范围的重用而实现了一些智能的启发式方法,所以用一个含有相同元素的数组去替换原来的数组是非常高效的操作,不一定会重新渲染整个列表。
1 | <ul> |
v-html
更新元素的innerHTML
v-bind
用于响应更新HTML特性
1 | <img v-bind:src="src" /> |
1 | <div :id="id1"> |
动态参数
1 | <a v-bind:[attributename]="src"> ... </a> |
1 | data: { |
v-on
绑定事件监听
1 | <div v-on:click="clickMe(2,$event)"> |
修饰符
.stop
调用event.stopPropagation().prevent
调用 event.preventDefault()指定按钮触发
enter:13,space:32 等等
1 | <a href="http://www.baidu.com" v-on:click.prevent="clickMe(1,$event)">www.baidu.com</a> |
v-cloak
防止页面加载时出现 vuejs 的变量名而设计,一般也用不到
1 | <style> |
v-ref与v-el
使用vue版本是2.5.22
1 | <p rel=ele @click="clickMe">v-el</p> |
1 | clickMe() { |
自定义指令
钩子函数 (均为可选):
bind
:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。inserted
:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。update
:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新。componentUpdated
:指令所在组件的 VNode 及其子 VNode 全部更新后调用。unbind
:只调用一次,指令与元素解绑时调用。
钩子参数:
el
:指令所绑定的元素,可以用来直接操作 DOM 。
binding
:一个对象,包含以下属性:
name
:指令名,不包括v-
前缀。value
:指令的绑定值,例如:v-my-directive="1 + 1"
中,绑定值为2
。oldValue
:指令绑定的前一个值,仅在update
和componentUpdated
钩子中可用。无论值是否改变都可用。expression
:字符串形式的指令表达式。例如v-my-directive="1 + 1"
中,表达式为"1 + 1"
。arg
:传给指令的参数,可选。例如v-my-directive:foo
中,参数为"foo"
。modifiers
:一个包含修饰符的对象。例如:v-my-directive.foo.bar
中,修饰符对象为{ foo: true, bar: true }
。
vnode
:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
oldVnode
:上一个虚拟节点,仅在 update
和 componentUpdated
钩子中可用。
1 | ... |
1 | Vue.directive('demo', { |
动态指令参数
这里版本不支持,vue版本改为2.6.0
1 | v-mydirective:[argument]="value" |
argument
参数可以根据组件实例数据进行更新!这使得自定义指令可以在应用中被灵活使用。
示例1:
1 | <p v-pin="200">Stick me 200px from the top of the page</p> |
1 | Vue.directive('pin', { |
示例2:
1 | <p v-pin1:[direction]="200">I am pinned onto the page at 200px to the left.</p> |
1 | Vue.directive('pin1', { |
对象字面量
如果指令需要多个值,可以传入一个 JavaScript 对象字面量,像上面的value
就是个对象