Vue学习笔记(一)

简介: Vue学习笔记

数据绑定

v-model是实现数据双向绑定,页面发生变化,name也会发生变化;name发生变化,页面也会发生变化

<input type='text' v-model="name">

:value是实现单向绑定,name发生变化,页面就会发生变化;但是页面发生变化,name并不会发生变化

<input type='text' :value="name">

脚手架Vue CLI

在想要创建工程的目录里面输入下面内容,创建hello工程

vue create hello

选择第三个,手动选择。因为eslint暂时用不到

下一步,安空格取消掉Linter,然后按回车下一步

然后选择vue3

依赖存哪里去,一般选择package.json

是否要生成一个快照,用于后续快速创建项目

接下来就生成了vue工程

通过npm run serve运行

组件

组件化开发

需要安装的插件

装了插件才有高亮

自定义组件

定义自己的组件

在compoents目录下新建一个MyHello.vue

然后添加基本内容,定义组件名为MyHello

使用自定义的组件

接着执行npm run serve, 便可以发现组件生效了

普通组件–局部注册

局部注册,只写组件名也可以,是一种简写方法

创建一个新的vue,输入

生成后的效果

使用流程:创建组件–导入–注册–使用

普通组件–全局注册

在多个界面都要使用的通用组件可以进行全局注册,这样全局都能使用了

全局组件在main.js中进行注册

在完成组件创建后,在main.js中导入,然后全局注册即可.

全局注册完成之后,在所有的组件范围内都可以使用

普通组件的局部注册和全局注册的区别

第三方组件Element-ui

computed 计算属性

比如下面篮球数量进行更新了,礼物总数也会自动重新计算

一般属性是放data里面,而计算属性要放computed里面,并写成函数的样子

computed与methods区别

特点是computed的缓存机制,只有依赖数据变化才会重新计算,数据不变情况下,即使网页刷新也不会重复计算的。性能比较高

修改计算属性

一般情况下,计算属性是不可修改的

如果想要修改计算属性,应该将computed中的函数写法,改写成类的写法,并要有get和set两个方法

如果要实现修改,需要在set里面对依赖数值进行修改,应该将’吕‘给this.firstName,把’小布’给this.lastName。

set的本质是修改了依赖数值,然后触发了get

watch 侦听器

注意:

在js中,方法名不能直接出现 点.这种特殊字符的,需要加上引号

’对象.属性名‘

延时器防抖

如果数据频繁变化,后台计算会比较频繁,因此可以设置延迟器。但这种情况下只会延迟执行,但是仍然都会执行;因此再次变化的时候可以删除延迟器,添加新的延迟器,进行重新计时。

这样就可以在变化停止时,进行更新。实现防抖的功能。

(与页面无关的数据,直接绑定在this对象里面,无需额外在data里面声明timer)

watch 的完整写法

比如除了监听obj中words还要监听语言,那么就要声明deep:true,监听对象obj里面的每个属性。

(如果直接监听两个,就太麻烦了,特别是数量是3个、4个…的时候)

但是handler只会在数据修改的时候才会触发,为了使得一进页面就修改一次,可以使用immediate:true

例子:

scoped样式冲突

如下图所示,这是组件的vue,只是想给BaseOne加上样式,但是所有的div都加上了样式

为了使得样式只作用于当前组件,就需要加上scoped

组件还是推荐加scoped的,因为组件应该有自己的样式,而不应该作用于全局

scoped原理(了解)

加上scoped,会给当前组件内所有元素,都添加一个哈希值,div组件名改成了 div-哈希值,因此不同组件内的div不会发生样式冲突了

组件通信

子组件给父组件通信$emit

父组件给子组件通信prop

prop

限制使用组件的人,防止他们乱传参数。

类型校验(比如下方的进度条应该传入一个数值,如果传入一个布尔值,那就应该出错)

可以通过写成对象的方式,进行更加详细的校验

如果想要修改prop值,需要子组件通知父组件去修改。直接修改prop会报错。

v-model原理

两条"

v-model还要仔细看

.sync

子组件要通知父组件修改的时候,需要 通过emit实现,并补上update:字段

简单得说,加上.sync,相当于不用额外再去写触发事件了,子组件可以直接通过emit实现,是一种语法糖。

vue调试工具

参考链接

ref和refs

异步更新和$nextTick

在vue中,是要等这一段程序操作完才更新dom,这时候直接去获取焦点,是还没更新的,因此要异步去操作。

输入框获取焦点:就是光标闪烁在输入框

正确写法,$nextTick会等dom更新完后,再去获取焦点。

路由

单页应用和多页应用的区别

路由的基本使用

注意安装得时候Vue2 安装vueRouter3.x vuex3.x

Vue3安装vueRouter4.x vuex4.x

注入完成后,就能在url中看到/#/的字符了

把用于显示的文件放在views目录里面

组件存放目录问题

路由模块封装

这样在main.js中只要import,以及在new Vue中加入router即可

把路由相关内容写在router/index.js里面。注意封装后,路径改变,要进行修改,否则找不到views。

但是每次移动文件位置都要改路径很麻烦,因此可以将相对路径改为绝对路径,其中@表示src目录(但不能直接写成src)


Vue学习笔记(二)https://developer.aliyun.com/article/1418880

相关文章
|
4天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
4天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
4天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
4天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
3天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
5天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
3天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
5天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
10天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发
|
10天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex