在Vue2项目上怎么使用CompositionAPI ?它们之间到底能擦出怎样的火花?


prtyaa
prtyaa 2023-12-26 17:17:26 63708
分类专栏: 资讯

前言

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

官网有这样一段解释:

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

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

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

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

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

npm install @vue/composition-api
# or
yarn add @vue/composition-api

SFC

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

import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'

Vue.use(VueCompositionAPI)

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

import {reactive, toRefs} from '@vue/composition-api'
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  setup(props){
    const obj = reactive({
      name:'maomin',
      age:18
    });
    console.log(props.msg);

    return {
      ...toRefs(obj)
    }
  }
}

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

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

import { defineComponent } from '@vue/composition-api'

export default defineComponent({
  // type inference enabled
})

CDN

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

<script src="https://cdn.jsdelivr.net/npm/vue@2.6"></script>
<script src="https://cdn.jsdelivr.net/npm/@vue/composition-api@1.0.0-rc.13"></script>

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

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <p>{{num}}</p>
        <div>{{obj.page}}</div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6"></script>
    <script src="https://cdn.jsdelivr.net/npm/@vue/composition-api@1.0.0-rc.13"></script>
    <script>
        const { ref, reactive } = VueCompositionAPI

        new Vue({
            el: '#app',
            setup() {
                const num = ref(0);
                const obj = reactive({
                    page: 1,
                    pageSize: 10
                })
                return {
                    num,
                    obj
                }
            }
        })
    </script>
</body>

</html>

结语

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

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

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

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

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

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30909
赞同 0
评论 0 条
prtyaaL0
粉丝 1 发表 2554 + 关注 私信
上周热门
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1323
银河麒麟打印带有图像的文档时出错  1236
银河麒麟添加打印机时,出现“server-error-internal-error”  1022
统信桌面专业版【如何查询系统安装时间】  951
统信操作系统各版本介绍  944
统信桌面专业版【全盘安装UOS系统】介绍  902
麒麟系统也能完整体验微信啦!  889
统信【启动盘制作工具】使用介绍  499
统信桌面专业版【一个U盘做多个系统启动盘】的方法  440
信刻全自动档案蓝光光盘检测一体机  386
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!