# VUE-study-notes **Repository Path**: johnnya5nan/VUE-study-notes ## Basic Information - **Project Name**: VUE-study-notes - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VUE的基本认识 1) VUE核心库+插件==》渐进式JavaScript框架 2) 作用:动态构建用户界面 3) 作者:尤雨溪(尤大大)华裔前Google工程师,如今在阿里 ## VUE的特点 - 遵循MVVM模式 - 编码简洁,体积小,运行效率高,适合移动/PC端开发 - 它本身只关注UI,可以轻松引入vue插件或其他第三库开发项目 ## 与其他前端js框架的关联 - 借鉴angular的模板和数据绑定技术 - 借鉴react的组件化和虚拟DOM技术 ## VUE扩展插件 - vue-cli:vue脚手架 - vue-resource(axios): ajax请求 - vue-router: 路由 - vuex:状态管理 - vue-lazyload: 图片懒加载 - vue-scroller: 页面滑动相关 - mint-ui: 基于vue的ui组件库(移动端) - element-ui: 基于vue的ui组件库(PC端) ## MVVM - model: data,模型,数据对象(data) - view: DOM,试图,模板页面 - viewModel: DOM Listeners 和 Data Bindings ,视图模型(Vue的实例) ## 模板语法 - 双大括号表达式 - 指令: - 强制数据绑定:v-bind(缩写“:”) - 绑定事件监听:v-on:click(缩写"@click") ## 计算属性和监视 计算关键字computed 监视关键字watch ## 数组更新检测 ### 变异方法 Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下: - `push()` 向数据的末尾添加一个或多个元素,并返回新的长度 - `pop()` 删除并返回数组的最后一个元素 - `shift()` 删除并返回数组的第一个元素 - `unshift()` 向数组的开头添加一个或多个元素,并返回新的长度 - `splice()` 增删改,删除元素,并想数组添加新元素 - `sort()` 对数组的元素进行排序 - `reverse()` 颠倒数组中元素的顺序 这些方法把原生方法重新包装过,加了更新界面的重写 ### 替换数组 非变异 (non-mutating method) 方法,例如:`filter()`, `concat()` 和 `slice()` 。这些不会改变原始数组,但**总是返回一个新数组**。当使用非变异方法时,可以用新数组替换旧数组,也能触发视图更新。 ### 注意事项 由于 JavaScript 的限制,Vue 不能检测以下变动的数组: 1. 当你利用索引直接设置一个项时,例如:`vm.items[indexOfItem] = newValue` 2. 当你修改数组的长度时,例如:`vm.items.length = newLength` 为了解决第一类问题,以下两种方式都可以实现和 `vm.items[indexOfItem] = newValue` 相同的效果,同时也将触发状态更新: ```js // Vue.set Vue.set(vm.items, indexOfItem, newValue) // Array.prototype.splice vm.items.splice(indexOfItem, 1, newValue) ``` 你也可以使用 [`vm.$set`](https://vuejs.org/v2/api/#vm-set) 实例方法,该方法是全局方法 `Vue.set` 的一个别名: ```js vm.$set(vm.items, indexOfItem, newValue) ``` 为了解决第二类问题,你可以使用 `splice`: ```javascript vm.items.splice(newLength) ``` ## 事件处理 ### 事件修饰符 修饰符是由点开头的指令后缀来表示的。 - `.stop` 阻止单击事件继续传播(冒泡) - `.prevent` 提交事件不再重载页面(阻止事件默认行为) - `.capture` 修饰符可以串联 - `.self` - `.once` - `.passive` ```js