当Vue2遇到Composition API,它们之间到底能擦出怎样的火花?

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

前言


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



相关文章
|
1月前
|
缓存 JavaScript 算法
活用 Composition API 核心函数,打造卓越应用(下)
活用 Composition API 核心函数,打造卓越应用(下)
|
1月前
|
存储 JavaScript API
活用 Composition API 核心函数,打造卓越应用(上)
活用 Composition API 核心函数,打造卓越应用(上)
|
1月前
|
JavaScript 前端开发 API
深入浅出:Vue 3 Composition API 的魅力与实践
【2月更文挑战第13天】 本文将探索 Vue 3 的核心特性之一——Composition API。通过对比 Options API,本文旨在揭示 Composition API 如何提高代码的组织性和可复用性,并通过实际案例展示其在现代前端开发中的应用。不同于传统的技术文章摘要,我们将通过一个具体的开发场景,引领读者步入 Composition API 的世界,展现它如何优雅地解决复杂组件逻辑的管理问题,从而激发读者探索和运用 Vue 3 新特性的热情。
19 1
|
1月前
|
JavaScript 前端开发 API
深入浅出:Vue 3 Composition API 的魅力
【2月更文挑战第13天】 在前端开发的世界里,Vue.js 一直占据着重要的地位。随着 Vue 3 的推出,Composition API 成为了开发者热议的焦点。本文将从一个独特的视角探讨 Composition API 的核心优势,通过对比 Options API,解析其如何优化代码组织和提升项目的可维护性。我们将通过实际案例,深入理解 Composition API 的使用方法和最佳实践,帮助开发者更好地把握这一新工具,激发前端开发的无限可能。
|
1月前
|
JavaScript API
vue 3.0 所采用的 Composition Api 和 vue 2.0 使用的 Option Api 区别
vue 3.0 所采用的 Composition Api 和 vue 2.0 使用的 Option Api 区别
29 0
|
16天前
|
JavaScript API
Composition Api 与 Options Api 有什么区别?
Composition Api 与 Options Api 有什么区别?
12 0
|
1月前
|
JavaScript 前端开发 API
深入浅出Vue 3 Composition API:重塑前端开发范式
【2月更文挑战第12天】 本文旨在深入探讨Vue 3中的Composition API,一种全新的组件和逻辑复用方式。相较于传统的Options API,Composition API提供了更为灵活和高效的代码组织机制。通过实例和对比分析,我们将揭示其如何优化代码结构,提升项目的可维护性和扩展性。文章不仅为初学者铺平进入Vue 3世界的道路,也为有经验的开发者提供了深度思考的视角,探索前端开发的新范式。
28 2
|
9天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
16天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
28天前
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。

热门文章

最新文章