做了一夜动画,就为让大家更好的理解Vue3的Composition Api

这是是一个独立维护的mixin,可能在N个地方用到,他根本不知道会不会有人和他冲突,然后用一下

import Counter from ‘./counter’

import Mouse from ‘./mouse’

export default {

mixins:[Counter,Mouse],

}

两个mixin里都有double这个数,尴尬,看效果 ,lsp的count被覆盖了 很尴尬,而且在App.vue这里,你完全不知道这个double到底是哪个,调试很痛苦

Composition


composition就是为了解决这个问题存在的,通过组合的方式,把零散在各个data,methods的代码,重新组合,一个功能的代码都放在一起维护,并且这些代码可以单独拆分成函数 ,也就是大帅的这两个gif

我们用vue3演示一下功能,具体api就不解释了 直接vue3文档搞起就可以

<input type=“text” v-model=“val” @keyup.enter=“addTodo”>

    • {{todo.title}}
    • 利用函数我们可以吧功能完整独立的拆分成模块或者函数,方便组织代码,并且解决了mixin混乱的问题

      比如我们的累加器 ,抽离一个counter.js

      import {ref, computed} from ‘vue’

      export default function useCounter(){

      let count = ref(1)

      function add(){

      count.value++

      }

      let double = computed(()=>count.value*2)

      return {count, double, add}

      }

      直接使用

      import {reactive, ref, toRefs} from ‘vue’

      + import useCounter from ‘./counter’

      export default {

      setup(){

      let val = ref(‘’)

      +     let {count,double,add} = useCounter()

      return {

      val, todos, addTodo,

      +     count,double,add

      }

      }

      }

      再来一个鼠标位置也不在话下,而且可以很好地利用解构赋值的别名,解决mixin的命名冲突问题 mouse.js

      import {ref, onMounted, onUnmounted, computed} from ‘vue’

      export default function useMouse(){

      let x = ref(0)

      function update(e){

      x.value = e.pageX

      }

      let double = computed(()=>x.value*2)

      onMounted(()=>{

      window.addEventListener(‘mousemove’, update)

      })

      onUnmounted(()=>{

      window.removeEventListener(‘mousemove’, update)

      })

      return {x, double}

      }

      模板里直接用doubelX

      let {count,double,add} = useCounter()

      let {x, double:doubleX} = useMouse()

      return {

      val, todos, addTodo,

      count,double,add,

      x,doubleX

      }

      script setup


      到这里应该就把大帅的文章缺的代码补了一下,不过有的同学可能,还有一个小小的吐槽,那就是setup函数最后的return也是集中的,如果行数太多,一样会横条一下下,这个好解决,因为本身我们可以吧todos也抽离成函数,这样setup就全部是数据的来源,非常精简丝滑

      import useCounter from ‘./counter’

      import useMouse from ‘./mouse’

      import useTodo from ‘./todos’

      export default {

      setup(){

      let { val, todos, addTodo } = useTodo()

      let {count,double,add} = useCounter()

      let {x, double:doubleX} = useMouse()

      return {

      val, todos, addTodo,

      count,double,add,

      x,doubleX

      }

      }

      }

      是不是贼爽呢,如果有些同学就是不想啥都抽离,还是觉得统一return很麻烦, 我们可以使用vue3的setup script功能,把setup这个配置也优化掉 一个功能export一次

      具体看这里:

      https://github.com/vuejs/rfcs/blob/sfc-improvements/active-rfcs/0000-sfc-script-setup.md

      相关文章


      1. 分享8个非常实用的Vue自定义指令

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
      img
      img
      img
      img
      img
      img

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

      如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
      img

      总结一下

      面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

      还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

      万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

      为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

      前端面试题汇总

      一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
      img

      前端工程师面试手册》电子稿文件。

      前端面试题汇总

      一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
      [外链图片转存中…(img-YgcdL72q-1712810351922)]

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值