Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。
导入Vue2
在HTML中通过jsdelivr导入:
1
| <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
|
在Chorme/Edge浏览器中打开https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd即可获取Vue官方插件用于辅助开发
Vue实例
导入vue.js后即可在script标签内新建Vue实例对象
1 2 3 4 5 6 7 8
| <script> const vm = new Vue({ el:..., data:{ url:'https://dougunduzi.top' } }) </script>
|
其中el字段填入css选择器,用于绑定HTML标签,也可直接填入HTML标签对象如document.getElementById(‘id’)
data字段填入一些数据
el属性可在构造方法外用vm.$mout()方法手动挂载,data属性也可写成一个方法:
1 2 3 4 5 6 7 8 9 10
| <script> const vm = new Vue({ data(){ return{ url:'https://dougunduzi.top' } } }) vm.$mout('css选择器') </script>
|
数据绑定
绑定Vue实例后可以直接在innerHTML中使用Vue实例中的data数据变量,用双重花括号{{}}包裹即可
单向绑定
在HTML标签的属性前加上v-bind:标记即可实现数据的单向绑定,有v-bind绑定的属性可直接以字符串形式使用Vue实例中的data数据
v-bind:通常简写为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <body> <div id="app"> <h1>{{ id }}</h1> <a :href="url">dgdz</a> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script type="text/javascript"> const vm = new Vue({ el: "#app", data() { return { id: 5, url: "https://dougunduzi.top", } }, }) </script> </body>
|

当data中的数据发生变化时,由v-bind绑定的数据会同步变化

但仅v-bind绑定的数据变化时,data中的数据不会变化,因此成为单向绑定
双向绑定
v-model:标记可实现双向绑定,即data中的数据和被绑定的HTML标签中的数据其中之一改变时,the other也会同步改变
由于v-model经常被用于绑定value属性,因此v-model:value=可简写为v-model=
因为双向绑定的特性,以下代码中,改任意一个input标签的value,其他所有input标签的value都会同步改变
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <body> <div id="app"> <input type="text" v-model="id"><br/> <input type="text" v-model="id"><br/> <input type="text" v-model="id"><br/> <input type="text" v-model="id"><br/> <input type="text" v-model="id"><br/> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script type="text/javascript"> const vm = new Vue({ el: "#app", data() { return { id: 5, url: "https://dougunduzi.top", } }, })
</script> </body>
|
事件处理
Vue2中的事件用v-on:事件标记,用Vue实例对象中的methods对象中的方法实现,如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <body> <div id="app"> <button v-on:click="greet">Hello World</button> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script type="text/javascript"> const vm = new Vue({ el: "#app", methods: { greet() { alert("Hello World") }, }, }) </script> </body>
|
v-on:事件=可简写为@事件=
传参
事件触发时会默认传回event对象,可在methods的方法中使用它
当方法指定了需要传入的参数时,在调用加上()传入对应参数即可,event对象在调用处可使用$event表示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <body> <div id="app"> <button @click="greet('dougunduzi',$event)">Hello World</button> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script type="text/javascript"> const vm = new Vue({ el: "#app", methods: { greet(user,e) { alert(`Hello ${user}`) console.log(e) }, }, }) </script> </body>
|

事件修饰符
Vue2支持使用一些事件修饰符来修饰HTML元素事件,包括:
- prevent 阻止默认事件(如a标签点击跳转)
- stop 阻止事件冒泡
- once 使事件只触发一次
- capture 使用事件的捕获模式
- self 组织事件传播
标准写法为@事件.修饰符1.修饰符2... =(支持多个修饰符共同使用)
键盘事件
键盘事件分为 keyup、keydown、keypress,分别在按下瞬间触发、松开瞬间触发、按下字符键触发。
标准写法为 @键盘事件.按键名=
如 @keyup.enter='method'
常用按键别名:
| 按键 |
别名 |
| 回车 |
enter |
| 删除(包括退格和删除) |
delete |
| 退出 |
esc |
| 空格 |
space |
| 换行 |
tab |
| 上 |
up |
| 下 |
down |
| 左 |
left |
| 右 |
right |
除了以上常用按键,其他按键名都可以在 event.key 中得到