vue基础知识和原理(二)

简介: 定义:要用的属性不存在,要通过已有属性计算得来原理:底层借助了Objcet.defineProperty方法提供的getter和setterget函数什么时候执行?(1).初次读取时会执行一次(2).当依赖的数据发生改变时会被再次调用注:计算属性最终会出现在vm上,直接读取使用即可如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变

🚩🚩🚩vue专栏:Vue全家桶


👍👍👍 希望各位博主多多支持!!!💖

#### 1.8 计算属性 > * 定义:要用的属性不存在,要通过已有属性计算得来 > * 原理:底层借助了Objcet.defineProperty方法提供的getter和setter **get函数什么时候执行?** (1).初次读取时会执行一次 (2).当依赖的数据发生改变时会被再次调用 **注:** * 计算属性最终会出现在vm上,直接读取使用即可 * 如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变 ```html 计算属性完整版写法
姓: 名: 全名: {{fullName}}
``` #### 1.9 键盘事件 `键盘事件语法:@keydown,@keyup` 1. Vue中常用的按键别名: | | | |--|--| |回车|enter| | 删除 | delete (捕获“删除”和“退格”键) | | 退出 | esc | | 换行 | tab (特殊,必须配合keydown去使用) | | 空格 | space | | 上 | up | | 下 | down | | 左 | left | | 右 | right | 2. Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名) 3. 系统修饰键(用法特殊):`ctrl、alt、shift、meta` - 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。 - 配合keydown使用:正常触发事件。 4. 也可以使用keyCode去指定具体的按键(不推荐) 5. `Vue.config.keyCodes.自定义键名 = 键码`,可以去定制按键别名 #### 1.10 监视属性 监视属性watch: * 当被监视的属性变化时, 回调函数自动调用 * 监视的属性必须存在,才能进行监视 * 监视的两种写法: * (1).new Vue时传入watch配置 * (2).通过vm.$watch监视 ```html

今天天气很{{ info }}

``` **深度监视:** (1).Vue中的watch默认不监测对象内部值的改变(一层) (2).配置deep:true可以监测对象内部值改变(多层) > 备注: > > 🌞Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以 > >✨ 使用watch时根据数据的具体结构,决定是否采用深度监视 ```html
{{numbers.c.d.e}}
``` **💥💥💥computed和watch之间的区别:** * computed能完成的功能,watch都可以完成 * watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作 > 👍两个重要的小原则: >
> 1.所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象 > > 2.所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象 #### 1.11 绑定样式 ##### class样式 写法::class="xxx" xxx可以是字符串、对象、数。 所以分为三种写法,`字符串写法,数组写法,对象写法` - (1)字符串写法 字符串写法适用于:`类名不确定,要动态获取。` ```html
{{name}}
``` - (2)数组写法 数组写法适用于:`要绑定多个样式,个数不确定,名字也不确定。` ```html
{{name}}
``` - (3)对象写法 对象写法适用于:`要绑定多个样式,个数确定,名字也确定,但不确定用不用。` ```html
{{name}}
``` ##### style样式 有两种写法,对象写法,数组写法 - (1)对象写法 ```html
{{name}}
``` - (3)数组写法 ```html ``` #### 1.12 条件渲染 ##### v-if * (1).v-if="表达式" (2).v-else-if="表达式" (3).v-else="表达式" * 适用于:切换频率较低的场景 * 特点:`不展示的DOM元素直接被移除` * 注意:v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断” ##### v-show * 写法:v-show="表达式" * 适用于:`切换频率较高的场景` * 特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉(display:none) > 备注:使用v-if的时,元素可能无法获取到,而使用v-show一定可以获取到 > > v-if 是实打实地改变dom元素,v-show 是隐藏或显示dom元素 ```html

欢迎来到{{name}}

欢迎来到{{name}}

``` #### 1.13 列表渲染 ##### v-for指令 * 用于展示列表数据 * 语法:v-for="(item, index) in xxx" :key="yyy" * 可遍历:数组、对象、字符串(用的很少)、指定次数(用的很少) ```html

人员列表(遍历数组)

  • {{p.name}}-{{p.age}}

汽车信息(遍历对象)

  • {{k}}-{{value}}

测试遍历字符串(用得少)

  • {{char}}-{{index}}

测试遍历指定次数(用得少)

  • {{index}}-{{number}}
``` #### 1.14 vue 监测data 中的 数据 ```html

学校名称:{{name}}

学校地址:{{address}}

``` **Vue.set 的使用** > Vue.set(target,propertyName/index,value) 或 >
> > vm.$set(target,propertyName/index,value) **用法**: 向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响 应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 `vm.myObject.newProperty = 'hi'`) ```html //代码

学生信息


``` > 所以我们通过 vm._data.student.hobby[0] = 'aaa' // 不起作用 > > vue 监测在数组那没有 getter 和 setter,所以监测不到数据的更改,也不会引起页面的更新 vue对数组的监测是通过 包装数组上常用的用于修改数组的方法来实现的。 #### 1.15 收集表单数据 (1) 若:`输入框为文本框`,则v-model收集的是value值,用户输入的就是value值。 (2) 若:`输入框为单选框`,则v-model收集的是value值,且要给标签配置value值。 (3) 若:`输入框为复选框`,则 * 没有配置input的value属性,那么收集的就是checked(勾选 or 未勾选,是布尔值) * 配置input的value属性: * v-model的初始值是非数组,那么收集的就是checked(勾选 or 未勾选,是布尔值) * v-model的初始值是数组,那么收集的的就是value组成的数组 **注:** `v-model的三个修饰符:` - lazy:失去焦点再收集数据 - number:输入字符串转为有效的数字 - trim:输入首尾空格过滤
目录
相关文章
|
1天前
|
JavaScript
Vue学习之--------路由的query、params参数、路由命名(3)(2022/9/5)
这篇文章详细介绍了Vue路由中的query参数、命名路由、params参数以及props配置的使用方式,并通过实际项目案例展示了它们在开发中的应用和测试结果,同时解释了`<router-link>`的`replace`属性如何影响浏览器历史记录。
Vue学习之--------路由的query、params参数、路由命名(3)(2022/9/5)
|
1天前
|
JavaScript
Vue学习之--------VueX(2022/8/31)
这篇文章是关于VueX的基础知识介绍,涵盖了VueX中的state、mutations、getters和actions的定义和使用,以及Action提交mutation而非直接变更状态,以及mutations的同步执行特性。
Vue学习之--------VueX(2022/8/31)
|
1天前
|
JavaScript
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
这篇文章通过一个实际的Vue项目案例,演示了如何在Vuex中实现多组件间共享数据。文章内容包括在Vuex的state中新增用户数组,创建Person.vue组件用于展示和添加用户信息,以及在Count组件中使用Person组件操作的数据。通过测试效果展示了组件间数据共享和状态更新的流程。
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
|
1天前
|
JavaScript
Vue学习之--------深入理解Vuex之模块化编码(2022/9/4)
这篇文章详细介绍了Vuex的模块化编码和命名空间的使用,旨在让代码更易于维护并提高数据分类的明确性。内容包括模块化和命名空间的概念、如何在store中配置模块、以及如何在组件中使用模块化的数据。文章通过实战项目案例,展示了如何拆分`store/index.js`文件,创建`count.js`和`person.js`模块,并在`Count.vue`和`Person.vue`组件中使用这些模块。最后,文章还提供了测试效果和一些使用注意点。
Vue学习之--------深入理解Vuex之模块化编码(2022/9/4)
|
1天前
|
存储 JavaScript 前端开发
Vue学习之--------路由(Router)的基本使用(1)(2022/9/5)
这篇文章是关于Vue-router路由的基本使用教程,涵盖了安装配置、应用插件、编写路由规则、实现页面跳转和高亮显示,以及一些使用中的注意点和项目实际应用案例。
Vue学习之--------路由(Router)的基本使用(1)(2022/9/5)
|
1天前
|
缓存 JavaScript
Vue学习之--------多级路由的使用(2)(2022/9/5)
这篇文章介绍了在Vue中实现多级路由缓存的方法,包括在路由配置中添加meta属性以启用缓存,使用keep-alive组件包裹需要缓存的视图,以及在Vuex中管理缓存视图列表的逻辑。
Vue学习之--------多级路由的使用(2)(2022/9/5)
|
1天前
|
JavaScript 前端开发 开发者
Vue学习之--------深入理解Vuex、原理详解、实战应用(2022/9/1)
这篇文章详细介绍了Vuex的基本概念、使用场景、安装配置、基本用法、实际应用案例以及注意事项,通过一个数字累加器的实战示例,帮助开发者深入理解Vuex的原理和应用。
|
1天前
|
存储 JavaScript API
vue后台管理权限码处理
【8月更文挑战第19天】vue后台管理权限码处理
8 0
|
1天前
|
JavaScript
Vue学习之--------深入理解Vuex之getters、mapState、mapGetters(2022/9/3)
这篇文章深入探讨了Vuex中的getters概念和用法,以及如何通过mapState、mapGetters、mapActions和mapMutations四个辅助函数简化组件中的Vuex状态访问和操作,通过实际项目案例展示了这些概念的应用和效果。
|
4天前
|
JavaScript
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
这篇文章介绍了在Vue项目中如何实现执行删除等危险操作时的二次确认机制,使用Element UI的`el-popconfirm`组件来弹出确认框,确保用户在二次确认后才会执行删除操作。
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)