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 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
springboot+vue实现文件上传下载
Nov 17 Vue.js
在Vue中使用mockjs代码实例
Nov 25 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
Vue 组件注册全解析
Dec 17 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue中div禁止点击事件的实现
Apr 02 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采集相关教程之一 CURL函数库
2010/02/15 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
Sea.JS知识总结
2016/05/05 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
网游商务专员求职信
2013/10/15 职场文书
揠苗助长教学反思
2014/02/04 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android