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 + el-form 实现的多层循环表单验证
Nov 25 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 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
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
PHP chr()函数讲解
2019/02/11 PHP
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
JS验证字符串功能
2017/02/22 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
详解Node中导入模块require和import的区别
2017/08/11 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python中super关键字用法实例分析
2015/05/28 Python
python生成圆形图片的方法
2020/03/25 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python interpolate插值实例
2020/07/06 Python
适用于所有创业者的创业计划书
2014/02/05 职场文书
上课打牌的检讨书
2014/02/15 职场文书
岗位聘任书范文
2014/03/29 职场文书
借款担保书范文
2014/05/13 职场文书
服务宗旨标语
2014/07/01 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
索赔员岗位职责
2015/02/15 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
深入理解Pytorch微调torchvision模型
2021/11/11 Python
MySQL学习之基础命令实操总结
2022/03/19 MySQL