Vue 的特点
1)遵循 MVVM 模式
2)编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发
3)它本身只关注 UI, 可以轻松引入 vue 插件或其它第三方库开发项目
与其它前端 JS 框架的关联
1)借鉴 angular 的模板和数据绑定技术
2)借鉴 react 的组件化和虚拟 DOM 技术
Vue 扩展插件
1)vue-cli: vue 脚手架
2)vue-resource(axios): ajax 请求
3)vue-router: 路由
4)vuex: 状态管理
5)vue-lazyload: 图片懒加载
6)vue-scroller: 页面滑动相关
7)mint-ui: 基于 vue 的 UI 组件库(移动端)
8)element-ui: 基于 vue 的 UI 组件库(PC 端)
9)它本身只关注 UI, 可以轻松引入 vue 插件或其它第三方库开发项目
使用 vue-cli 创建模板项目:
使用vue创建项目:
npm install -g vue-cli
node -v
npm -v
vue init webpack vue_demo
cd vue_demo
npm install
npm run dev
访问: http://localhost:8080/
Vue的基本使用
代码格式:
<div id="app">
<input type="text" v-model="username">
<p>Hello, {{username}}</p>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
new Vue({
el: '#app',
data: {
username: 'vue'
}
})
</script>
1.3. 模板语法
1.3.1. 模板的理解
1)动态的 html 页面
2)包含了一些 JS 语法代码
a.双大括号表达式
b.指令(以 v-开头的自定义标签属性)
文本
<span>Message:{{msg}}</span>
原始HTML
<p>Using mustaches:{{rawHtml}}<p>
<p>Using v-html directive:<span v-html="rawHtml"></span></p>
双大括号表达式
1)语法: {{exp}}
2)功能: 向页面输出数据
3)可以调用对象的方法
表达式
{{number + 1}}
{{ok?'YES':'NO'}}
{{message.split('').reverse().join('')}}
1.3.3. 指令一: 强制数据绑定
1)功能: 指定变化的属性值
2)完整写法:
v-bind:xxx='yyy' //yyy 会作为表达式解析执行
3)简洁写法:
:xxx='yyy'
1.3.4. 指令二: 绑定事件监听
1)功能: 绑定指定事件名的回调函数
2)完整写法:
v-on:keyup='xxx'
v-on:keyup='xxx(参数)' v-on:keyup.enter='xxx'
3)简洁写法:
@keyup='xxx' @keyup.enter='xxx'
1.4. 计算属性和监视
1.4.1. 计算属性
1)在 computed 属性对象中定义计算属性的方法
2)在页面中使用{{方法名}}来显示计算的结果
1.4.2. 监视属性
1)通过通过 vm 对象的$watch()或 watch 配置来监视指定的属性
2)当属性变化时, 回调函数自动调用, 在函数内部进行计算
1.4.3. 计算属性高级
1)通过 getter/setter 实现对属性数据的显示和监视
2)计算属性存在缓存, 多次读取只执行一次 getter 计算
1.5. class 与 style 绑定
1.5.1. 理解
1)在应用界面中, 某个(些)元素的样式是变化的
2)class/style 绑定就是专门用来实现动态样式效果的技术
1.5.2. class 绑定
1):class='xxx'
2)表达式是字符串: 'classA'
3)表达式是对象: {classA:isA, classB: isB}
4)表达式是数组: ['classA', 'classB']
1.5.3. style 绑定
1):style="{ color: activeColor, fontSize: fontSize + 'px' }"
2)其中 activeColor/fontSize 是 data 属性
1.6. 条件渲染
1.6.1. 条件渲染指令
1)v-if 与 v-else
2)v-show
1.6.2. 比较 v-if 与 v-show
3)如果需要频繁切换 v-show 较好
4)当条件不成立时, v-if 的所有子节点不会解析
1.7. 列表渲染
1.7.1. 列表显示指令
数组: v-for / index
对象: v-for / key
1.7.2. 列表的更新显示
删除 item
替换 item
1.7.3. 列表的高级处理
列表过滤
列表排序
1.8. 事件处理
1.8.1. 绑定监听:
1)v-on:xxx="fun"
2)@xxx="fun"
3)@xxx="fun(参数)"
4)默认事件形参: event
5)隐含属性对象: $event
1.8.2. 事件修饰符
1).prevent : 阻止事件的默认行为 event.preventDefault()
2).stop : 停止事件冒泡 event.stopPropagation()
1.8.3. 按键修饰符
1).keycode : 操作的是某个 keycode 值的键
2).keyName : 操作的某个按键名的键(少部分)
1.9. 表单输入绑定
1.9.1. 使用 v-model 对表单数据自动收集
1)text/textarea
2)checkbox
3)radio
4)select