当Vue2遇到CompositionAPI,它们之前到底能擦出怎样的火花?

 

 前言

Composition API是什么?也称为组合式 API。如果你第一次听到这个词,请认真读完这篇文章。

为遵义等地区用户提供了全套网页设计制作服务,及遵义网站建设行业解决方案。主营业务为成都网站建设、网站建设、遵义网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

官网有这样一段解释:

通过创建 Vue 组件,我们可以将界面中重复的部分连同其功能一起提取为可重用的代码段。仅此一项就可以使我们的应用在可维护性和灵活性方面走得相当远。然而,我们的经验已经证明,光靠这一点可能并不够,尤其是当你的应用变得非常大的时候——想想几百个组件。处理这样的大型应用时,共享和重用代码变得尤为重要。

我们之前创建组件更多地是使用OptionAPI(data、computed、methods、watch) ,但是,当我们的组件开始变得更大时,逻辑关注点的列表也会增长。尤其对于那些一开始没有编写这些组件的人来说,这会导致组件难以阅读和理解。

如果能够将同一个逻辑关注点相关代码收集在一起会更好。而这正是组合式 API 使我们能够做到的。

提到组合式API,我们可能更多地想到在Vue3中使用。但是目前国内大部分Vue项目都还是Vue2项目,如果迁移到Vue3,可能还需要花费一定的精力。你在此处可能会有一个疑问:Vue2项目可以迁移到Vue3吗?答案是可以的。如果你想知道怎么操作,可以点击下方链接:

 
 
 
 
  1. https://github.com/vuejs/vue-next/tree/master/packages/vue-compat 

但是,迁移之前需要你主要几点问题,官方这样解释:

虽然我们努力使迁移构建尽可能模仿 Vue 2 的行为,但仍有一些限制可能会阻止您的应用程序有资格升级:

  • 依赖 Vue 2 内部 API 或未记录行为的依赖项。最常见的情况是在 上使用私有属性VNodes。如果您的项目依赖于Vuetify、Quasar或ElementUI等组件库,最好等待它们的 Vue 3 兼容版本。
  • Internet Explorer 11 支持:Vue 3 已正式放弃支持 IE11 的计划。如果您仍然需要支持 IE11 或更低版本,则必须继续使用 Vue 2。
  • 服务器端渲染:迁移构建可用于 SSR,但迁移自定义 SSR 设置要复杂得多。总的想法是替换vue-server-renderer用@vue/server-renderer。Vue 3 不再提供捆绑渲染器,建议将 Vue 3 SSR 与Vite一起使用。如果您正在使用Nuxt.js,那么等待 Nuxt 3 可能会更好。

可以看到,从Vue2迁移到Vue3肯定需要一定的成本,那么有什么办法让我在Vue2也可以用到Composition API。其实,现在已经出了解决方案。你可以上网搜下这样一个库@vue/composition-api,这个库是专门为Vue使用Composition-api而生,目前是发布候选版。

安装与使用

NPM

 
 
 
 
  1. npm install @vue/composition-api 
  2. # or 
  3. yarn add @vue/composition-api 

SFC

必须通过vue.use()将@vue/composition-api作为插件安装,然后才能使用composition-api编写组件。所以,请这样。一般在你的项目文件夹中的main.js编辑如下:

 
 
 
 
  1. import Vue from 'vue' 
  2. import VueCompositionAPI from '@vue/composition-api' 
  3.  
  4. Vue.use(VueCompositionAPI) 

然后,在组件中这样使用。

 
 
 
 
  1. import {reactive, toRefs} from '@vue/composition-api' 
  2. export default { 
  3.   name: 'HelloWorld', 
  4.   props: { 
  5.     msg: String 
  6.   }, 
  7.   setup(props){ 
  8.     const obj = reactive({ 
  9.       name:'maomin', 
  10.       age:18 
  11.     }); 
  12.     console.log(props.msg); 
  13.  
  14.     return { 
  15.       ...toRefs(obj) 
  16.     } 
  17.   } 

当你迁移到Vue 3时,只要将@vue/compositionapi替换为vue,你的代码就可以正常工作了。

另外,你需要注意的是,如果你在使用TypeScript,为了正确推断Vue组件选项中的类型,需要使用defineComponent定义组件。

 
 
 
 
  1. import { defineComponent } from '@vue/composition-api' 
  2.  
  3. export default defineComponent({ 
  4.   // type inference enabled 
  5. }) 

CDN

如果你想使用CDN,同样也有办法。在vue之后包含@vue/compositionapi,它将自动安装自己。

 
 
 
 
  1.  
  2.  

这时,@vue/composition-api将暴露于全局变量window.VueCompositionAPI。

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.      
  6.      
  7.      
  8.     Document 
  9.  
  10.  
  11.  
  12.      
  13.         

    {{num}}

     
  14.         
    {{obj.page}}
     
  15.     
 
  •      
  •      
  •      
  •  
  •  
  •  
  • 结语

    @vue/composition-api支持所有现代浏览器和IE11+。你可以在Vue2项目使用它,然后在合适的时机无缝衔接到Vue3项目。

    下面是@vue/composition-apigithub网址:

     
     
     
     
    1. https://github.com/vuejs/composition-api 

    另外,关于CompositionApi的用法还有很多,可以查看下方的官方文档:

     
     
     
     
    1. https://v3.cn.vuejs.org/guide/composition-api-introduction.html 

    本文转载自微信公众号「前端历劫之路」,可以通过以下二维码关注。转载本文请联系前端历劫之路公众号。

    文章名称:当Vue2遇到CompositionAPI,它们之前到底能擦出怎样的火花?
    文章源于:http://www.shufengxianlan.com/qtweb/news37/292137.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

    猜你还喜欢下面的内容

    静态网站知识

    各行业网站