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+element实现动态加载表单
Dec 13 Vue.js
vue使用require.context实现动态注册路由
Dec 25 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
vue脚手架项目创建步骤详解
Mar 02 Vue.js
vue前端工程的搭建
Mar 31 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
vue实现移动端div拖动效果
Mar 03 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 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函数与传递参数实例分析
2014/11/15 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
axios学习教程全攻略
2017/03/26 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python网络编程之读取网站根目录实例
2014/09/30 Python
python简单实现基数排序算法
2015/05/16 Python
深入学习Python中的装饰器使用
2016/06/20 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Python基础教程之异常详解
2019/01/10 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
python装饰器代码深入讲解
2021/03/01 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
Prototype如何更新局部页面
2013/03/03 面试题
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
教师见习报告范文
2014/11/03 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
React四级菜单的实现
2022/04/08 Javascript
python区块链实现简版工作量证明
2022/05/25 Python