Vue看了就会的8个小技巧


Posted in Vue.js onJanuary 21, 2021

1. 始终在 `v-for` 中使用 `:key`

在需要操纵数据时,将key属性与v-for指令一起使用可以让程序保持恒定且可预测是很有必要的。这样Vue就可以跟踪组件状态,并对不同的元素有一个常量引用。在使用动画或Vue转换时,如果没有key ,Vue只会尝试使DOM尽可能高效。这或许会导致v-for中的元素出现乱序,或行为难以预测。如果我们对每个元素都有唯一的键引用,就能更好地预测Vue应用程序将如何精确地处理DOM操作。

2. 使用驼峰式声明 props,并在模板中使用短横线命名来访问 props

最佳做法只是遵循每种语言的约定。在 JS 中,驼峰式声明是标准,在HTML中,是短横线命名。Vue 已经提供了驼峰式声明和短横线命名之间转换,所以除了实际声明它们之外,我们不用担心任何事情。

3. 在事件中使用短横线命名

在发出定制事件时,最好使用短横线命名,这是因为在父组件中,我们使用相同的语法来侦听该事件。所以为了确保我们各组件之间的一致性,让你的代码更具可读性,请在两个地方都坚持使用短横线命名。

4. 函数式组件

函数式组件是无状态,它无法实例化,没有任何的生命周期和方法。创建函数式组件也很简单,只需要在模板添加 functional 声明即可。一般适合只依赖于外部数据的变化而变化的组件,因其轻量,渲染性能也会有所提高。组件需要的一切都是通过 context 参数传递。它是一个上下文对象,具体属性查看文档。这里 props 是一个包含所有绑定属性的对象。

5. 重用相同路由的组件

开发小伙伴们常常会遇到多个路由解析为同一个Vue组件的情况。问题是,Vue出于性能原因,默认情况下共享组件将不会重新渲染,如果你尝试在使用相同组件的路由之间进行切换,则不会发生任何变化。如果你依然希望重新渲染这些组件,就可以通过在 router-view 组件中提供 :key 属性来实现。

6. $createElement

一般情况下,每个Vue实例都可以访问 $createElement 方法来创建和返回虚拟节点。例如,可以利用它在可以通过v-html指令传递的方法中使用标记。在函数组件中,可以将此方法作为渲染函数中的第一个参数进行访问。

7. 使用JSX

由于Vue CLI 3默认支持使用JSX,因此现在你可以使用JSX编写代码。如果尚未使用Vue CLI 3,则可以使用 babel-plugin-transform-vue-jsx 获得JSX支持。

8. 作用域插槽实现 UI 和业务逻辑的分离

我们常常会想复用一个组件的业务逻辑,但是不想使用该组件的 UI时,可以使用作用域插槽实现 UI 和业务逻辑的分离。作用域插槽大致的思路是将 DOM 结构交给调用方去决定,组件内部只关注业务逻辑,最后将数据和事件等通过 :item ="item" 的方式传递给父组件去处理和调用,实现 UI 和业务逻辑的分离。再结合渲染函数,就可以实现无渲染组件的效果。

以上就是Vue看了就会的8个小技巧的详细内容,更多关于vue 技巧的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
Vue 的 v-model用法实例
Nov 23 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
如何在 Vue 中使用 JSX
Feb 14 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue判断按钮是否可以点击
Apr 09 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 #Vue.js
详解实现vue的数据响应式原理
Jan 20 #Vue.js
vue实现简易计算器功能
Jan 20 #Vue.js
vue使用过滤器格式化日期
Jan 20 #Vue.js
Vue实现简单计算器
Jan 20 #Vue.js
vue实现验证用户名是否可用
Jan 20 #Vue.js
vue实现按钮切换图片
Jan 20 #Vue.js
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python3.5的包存放的具体路径
2020/08/16 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
学生请假条
2014/04/11 职场文书
公司股权转让协议书
2014/04/12 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
公司新员工欢迎词
2015/09/30 职场文书
《迟到》教学反思
2016/02/24 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript