位置: IT常识 - 正文

Vue实战【常用的Vue小魔法】(vue使用技巧)

编辑:rootadmin
Vue实战【常用的Vue小魔法】 目录🌟前言🌟能让你首次加载更快的路由懒加载,怎么能忘?🌟你是否还记得有一个叫Object.freeze的方法?🌟异步组件那么强,你是不是没用过?🌟你是不是还在computed中使用this?🌟如何避免 v-if 和 v-for 一起使用?🌟那么强的.sync修饰符你为什么不用?🌟v-model还有这么好的修饰符!🌟其他的修饰符🌟你是否知道v-model还能自定义属性?🌟你还在用浏览器的scrollTop滚动你的页面吗?🌟你在子组件上定义的原生事件不生效?🌟Vuex 页面刷新数据丢失怎么解决🌟写在最后🌟JSON包里写函数,关注博主不迷路🌟前言

推荐整理分享Vue实战【常用的Vue小魔法】(vue使用技巧),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue实战技巧,vue的使用方法,vue常用功能,vue常用ui,vue常用ui,vue基本使用,vue使用技巧,vue的常用方法,内容如对您有帮助,希望把文章链接给更多的朋友!

大家好,上一期给大家总结了一些常见的Vue报错并如何解决的一些方法,私下也收到了好多小伙伴的补充;小伙伴们实在是太强啦,和大家一起共同学习进步真的很开心。今天博主就为大家总结一些实战中的经常用到的Vue小魔法,可以使你的开发也包括项目性能得到很大的提升,接下来让我们一起来看看吧。

🌟能让你首次加载更快的路由懒加载,怎么能忘?

路由懒加载可以让我们的包不需要一次把所有的页面的加载进来,只加载当前页面的路由组件就行。

举个🌰,如果这样写,加载的时候会全部都加载进来。

const router = new VueRouter({ routes:[ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: About } ]})

所以,应该避免上面的写法,尽量使用懒加载 懒加载写法,结合webpack的import使用

const router = new VueRouter({ routes:[ { path: '/', name: 'Home', component: () => import(/* webpackChunkName: "home" */ '../views/Home.vue') }, { path: '/about', name: 'About', component: () => import(/* webpackChunkName: "about" */ '../views/About.vue') } ]})🌟你是否还记得有一个叫Object.freeze的方法?

应该所有同学都知道,vue初始化的时候会将data里面的数据都搞成响应式数据吧。但是,我们在写业务逻辑的时候会有些数据一初始化就永远不会改变,它根本就不需要被vue做成响应式数据,因此我们应该将这些不用改变的数据通过Object.freeze方法冻结它,避免vue初始化的时候,做一些无用的操作。

举个🌰

export default { data:()=>({ list:Object.freeze([{title:'我永远不需要改变,我不需要响应式'}]) })}🌟异步组件那么强,你是不是没用过?

异步组件可以让我们在需要一些组件时才将它加载进来,而不是一初始化就加载进来,这跟路由懒加载时一个概念。

举个🌰

export default { components:{ AsyncComponent:()=>import(/* webpackChunkName: "AsyncComponent" */ './Async') }}

异步组件还有一种比较完善的写法

举个🌰

export default { components:{ AsyncComponent:()=>({ component:import(/* webpackChunkName: "AsyncComponent" */ './Async'), delay:200, // 延迟几毫秒,默认200 timeout:3000, // 加载几毫米之后就超时,触发error组件 loading:LoadingComponent, // 组件未加载回来前显示 error:ErrorComponent // 组件超时时显示 }) }}🌟你是不是还在computed中使用this?

我猜还有很多同学,在computed属性中通过this.xxx去拿data里面的数据,和methods里面的方法吧,或许还会通过this.route去获取路由里面的数据吧。其实,我们可以避免这些丑陋的this,它甚至会给我们带来看不见的性能问题。实现上,我们通过this能访问到的数据,在computed的第一个参数上都能解构出来。

举个🌰

export default { haha({$attrs,$route,$store,$listeners,$ref}){ // 还能结构很多属性,可自行打印康康 return }}🌟如何避免 v-if 和 v-for 一起使用?

为什么要避免v-if和v-for在同一个元素上同时使用呢?因为在vue的源码中有一段代码时对指令的优先级的处理,这段代码是先处理v-for再处理v-if的。所以如果我们在同一层中一起使用两个指令,会出现一些不必要的性能问题,比如这个列表有一百条数据,再某种情况下,它们都不需要显示,当vue还是会循环这个100条数据显示,再去判断v-if,因此,我们应该避免这种情况的出现。

不好的🌰

<h3 v-if="status" v-for="item in 100" :key="item">{{item}}</h3>

好的🌰

<template v-if="status" > <h3 v-for="item in 100" :key="item">{{item}}</h3></template>

v-if 与 v-for 为什么不建议一起使用

Vue实战【常用的Vue小魔法】(vue使用技巧)

v-for 和 v-if 不要在同一个标签中使用,因为解析时先解析 v-for 再解析 v-if。如果遇到需要同时使用时可以考虑上诉写法或者写成计算属性的方式。

🌟那么强的.sync修饰符你为什么不用?

如果你想要在父组件控制一个子组件的显示隐藏,是不是还在传一个prop和一个自定义方法,这样会很麻烦,不妨试一试sync修饰符。

举个🌰

// 父组件 template> <div> <Toggle :show.sync = 'show'></Toggle> </div></template>//Toggle 组件<template> <div> <div v-if="show"> 展示和隐藏组件 </div> <button @click="test">隐藏组件</button> </div></template><script>export default { props:['show'], methods: { test(){ this.$emit('update:show',false) } }}</script>🌟v-model还有这么好的修饰符!

v-model上有3个比较好用的修饰符不知到大家有没有用过,一个是lazy,一个是number,一个是trim。

lazy:可以将@input事件变成@blur事件;number:只能输入数字值 ;trim:清空两边的空格

举个🌰

//lazy <input v-model.lazy="msg" /> //number <input v-model.number="msg" /> //trim <input v-model.trim="msg" />🌟其他的修饰符

事件修饰符

.stop 阻止事件继续传播;.prevent 阻止浏览器或标签默认行为;.capture 使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理;.self 只当在 event.target 是当前元素自身时触发处理函数;.once 事件将只会触发一次;.passive 告诉浏览器你不想阻止事件的默认行为。

键盘事件的修饰符

.enter(捕获“回车”键).tab(捕获“缩进”键).delete (捕获“删除”和“退格”键).esc(捕获“退出”键).space(捕获“空格”键).up(捕获“上”键).down(捕获“下”键).left(捕获“左”键).right(捕获“右”键)

鼠标按钮修饰符

.left.right.middle🌟你是否知道v-model还能自定义属性?

如果想在一个自定义的Input组件上使用v-model,那么就要在子组件,介绍一个value,和触发input事件,v-model的默认语法糖就是这两个东西的组合。

举个🌰

// 父组件<template> <div> <CustomInput v-model='msg' /> </div></template>//CustomInput<template> <div> <input type="text" :value="value" @input="test"> </div></template><script>export default { props:['value'], methods: { test(e){ this.$emit('input',e.target.value) } },}</script>

但是,如果组件里面不是input,而是一个checkbox或者一个radio呢?我不想接受一个value和input事件,我想接收一个更加语义化的checked和change事件,那该怎么办?

举个🌰

// 父组件不需改变...//CustomInput<template> <div> <input type="checkbox" :checked="checked" @change="test"> </div></template><script> props:['checked'], model:{ props:'checked', event:'change' }, methods: { test(e){ this.$emit('change',e.target.checked) } }}</script>🌟你还在用浏览器的scrollTop滚动你的页面吗?

有些时候我们在操作一下页面的滚动行为,那么我们第一时间就会想到scrollTop。其实我们还有第二个选择就是VueRouter给我们提供的scrollBehavior钩子。

举个🌰

const router = new VueRouter({ routes:[...] , scrollBehavior(to,from,position){ // position参数可自行打印康康,点击浏览器左右箭头会触发 return{ // 这里可以返回很多参数,下面简单列就几个,详情自己康康官网 x:100, y:100, selector:#app, offset:200, //等等 } }})🌟你在子组件上定义的原生事件不生效?

有时候我们想在子组件上面监听一些事件,比如click,但是不论你怎么点,它都没反应,为什么呢?

举个🌰

<template> <div> <Child @click="test"></Child> </div></template><script> methods:{ test(){} }</script>

因为这样写vue会认为,你自定义了一个click事件,要在子组件通过$emit(‘click’)触发才行。如果我就是要在父组件触发呢?那就要用到native修饰符了。

举个🌰

<template> <div> <Child @click.native="test"></Child> </div></template><script> methods:{ test(){} }</script>🌟Vuex 页面刷新数据丢失怎么解决

需要做 vuex 数据持久化 一般使用本地存储的方案来保存数据 可以自己设计存储方案 也可以使用第三方插件 ; 推荐使用 vuex-persist 插件,它就是为 Vuex 持久化存储而生的一个插件。不需要你手动存取 storage ,而是直接将状态保存至 cookie 或者 localStorage 中

🌟写在最后

这篇文章分析那个了一些vue开发比较常见的报错,你是否也经历过呢?后续会为小伙伴们持续更新Vue的一些实战小魔法!各位小伙伴让我们 let’s be prepared at all times!

🌟JSON包里写函数,关注博主不迷路

✨原创不易,还希望各位大佬支持一下! 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富!

本文链接地址:https://www.jiuchutong.com/zhishi/300132.html 转载请保留说明!

上一篇:WebSocket的使用方法(JS前端)(websocket怎么用)

下一篇:使用 Wall 搭建个人照片墙和视频墙(wallengine)

  • word线条粗细怎么设置(word线条粗细怎么调)

    word线条粗细怎么设置(word线条粗细怎么调)

  • 爱奇艺手机端怎么一起看(爱奇艺手机端怎么取消自动续费)

    爱奇艺手机端怎么一起看(爱奇艺手机端怎么取消自动续费)

  • 怎样更新微信

    怎样更新微信

  • 信任企业级怎么设置(信任企业在哪里设置)

    信任企业级怎么设置(信任企业在哪里设置)

  • i78550u是低端处理器吗(i78550u属于什么水平)

    i78550u是低端处理器吗(i78550u属于什么水平)

  • 手机彻底删除的视频怎么恢复(手机彻底删除的照片怎么才能找回来)

    手机彻底删除的视频怎么恢复(手机彻底删除的照片怎么才能找回来)

  • 蓝牙耳机两个怎么分开(蓝牙耳机两个怎么分开连接)

    蓝牙耳机两个怎么分开(蓝牙耳机两个怎么分开连接)

  • POS机是什么(0.38pos机是什么)

    POS机是什么(0.38pos机是什么)

  • 手机保修范围包括什么(手机保修范围包括碎屏吗)

    手机保修范围包括什么(手机保修范围包括碎屏吗)

  • 电池接触异常怎么办(电池接触异常怎么回事)

    电池接触异常怎么办(电池接触异常怎么回事)

  • 微信的语音多久会过期(微信的语音多久就不能听了)

    微信的语音多久会过期(微信的语音多久就不能听了)

  • 微信滴滴怎么提前约车(微信滴滴怎么提前预约打车)

    微信滴滴怎么提前约车(微信滴滴怎么提前预约打车)

  • iphone已激活是什么意思(已激活苹果是什么意思)

    iphone已激活是什么意思(已激活苹果是什么意思)

  • 小度1c4g版与普通版的区别(小度4g版和小度1c的区别)

    小度1c4g版与普通版的区别(小度4g版和小度1c的区别)

  • 微信播报器在哪里买(微信播报器哪款好)

    微信播报器在哪里买(微信播报器哪款好)

  • 天猫购物津贴怎么领(天猫购物津贴是什么意思,怎么使用)

    天猫购物津贴怎么领(天猫购物津贴是什么意思,怎么使用)

  • 淘宝洋淘秀在哪看(淘宝洋淘秀在哪里发布)

    淘宝洋淘秀在哪看(淘宝洋淘秀在哪里发布)

  • 淘宝直播如何小窗口播放(淘宝直播怎么开启小窗)

    淘宝直播如何小窗口播放(淘宝直播怎么开启小窗)

  • 荣耀8怎么设置反向充电(荣耀8volte怎么设置)

    荣耀8怎么设置反向充电(荣耀8volte怎么设置)

  • applexr应用与数据在哪(应用与数据苹果)

    applexr应用与数据在哪(应用与数据苹果)

  • 为什么华为在外国首发(为什么华为外包时间不长)

    为什么华为在外国首发(为什么华为外包时间不长)

  • iphone11是什么接口(苹果11是什么接口类型)

    iphone11是什么接口(苹果11是什么接口类型)

  • psp的cpu频率(psp2000调cpu频率)

    psp的cpu频率(psp2000调cpu频率)

  • 微信满屏表情怎么发(微信满屏表情怎么弄)

    微信满屏表情怎么发(微信满屏表情怎么弄)

  • 小米9有nfc吗(小米9有没有nfc功能设置)

    小米9有nfc吗(小米9有没有nfc功能设置)

  • 蚂蚁森林无纸化阅读能量怎么计算(蚂蚁森林无纸化阅读攻略)

    蚂蚁森林无纸化阅读能量怎么计算(蚂蚁森林无纸化阅读攻略)

  • 如何在Excel中进行减法(如何在Excel中进行数据筛选)

    如何在Excel中进行减法(如何在Excel中进行数据筛选)

  • 系统更新到OS X Yosemite之后无法登陆的解决方法(系统更新到win11后还可以调回win10吗)

    系统更新到OS X Yosemite之后无法登陆的解决方法(系统更新到win11后还可以调回win10吗)

  • 营业外收入要交企业所得税吗
  • 借贷利息怎么算
  • 个人所得税申报是公司申报还是个人申报
  • 行政事业单位购买固定资产的流程
  • 收到失业保险稳岗补贴会计分录
  • 增值税发票抵扣勾选平台
  • 质量扣款能按折扣计算吗
  • 在建工程转固定资产后如何计提折旧
  • 过路费认证用去哪里认证
  • 待报解预算收入付款怎么做账
  • 某公司是一家刚成立的大型化妆品生产企业
  • 银行变更印鉴多久生效
  • 记账汇率是什么意思
  • 增值税零税率发票开具条件
  • 免税发票备注栏
  • 利息收入要不要交增值税?
  • 抵税必须要有发票
  • 本月报销能用下月报销吗
  • 减免增值税可以税前扣除吗
  • 公司招待用烟酒的管理
  • 广告公司固定资产有哪些?
  • 增值税申报错误怎么处理
  • 残疾人保障金工资总额包括社保吗
  • 收到工程结算单,没有发票,能入成本吗
  • 如何设定电脑开机密码锁
  • php foo
  • yolov5使用教程
  • elementui中的el-tab-pane为什么内容会为0
  • 短期借款产生的利息进入总账吗
  • php培训得花多少钱
  • 蓝桥杯b组2020
  • 卷积神经网络课程
  • 对方开具红字发票,我方怎么查询
  • python 字典的字典
  • 非货币型资产交换CPA
  • 租赁的房屋再转租出去交几次印花税呢
  • 税票电子发票怎么开
  • 预算凭证可以单张打印吗
  • 坏账准备检查情况表怎么填
  • 帝国cms会员发布信息数量
  • 代收的运输费用怎么入账
  • 酒店营业税率是多少
  • 金税盘维护费抵扣
  • 预收款销售商品如何与业务员对账
  • 租赁合同印花税率多少
  • 定额发票验旧日期怎么算
  • 去银行取对账单需要带什么
  • 其他应收款增加现金流量表怎么填
  • 税率与征收率是怎么回事
  • 车间机器设备修理费用计入什么科目
  • 一般纳税人发生应税销售行为向购买方收取
  • 固定资产核算的内容主要包括
  • 企业合并会计处理案例
  • 购建固定资产属于投资活动吗
  • 小规模纳税人增值税计算公式
  • 红字发票抵扣时增值税纳税申报表如何处理
  • 哪几种情况涉及到进项税额的转出
  • 单位车辆保险费
  • 企业注销未分配是从注册开始吗
  • winxp cmd
  • mysql建唯一索引
  • sqlserver msdb
  • vista windows
  • windows xp和windows 2000
  • linux系统中可用于添加用户账号
  • WNxp下让所有用户桌面显示系统默认图标的方法
  • 怎么通过mac连接wifi
  • unity着色器在哪
  • Android与OpenCV2.4.4(2013最新)搭建图像处理框架
  • 安卓手机root后更流畅吗
  • android加载gif图片
  • javascript Keycode对照表
  • js基本代码
  • jquery实现倒计时效果
  • jquery动态设置css
  • 怎么查票据真伪
  • 党员逝世可否盖党旗
  • 江苏税务缴费小程序
  • 四川国税发票查验真伪
  • 增值税留抵退税政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设