首页 > 其他分享 >Vue 2 和 Vue 3 区别(解析组合式与选项式)

Vue 2 和 Vue 3 区别(解析组合式与选项式)

时间:2024-10-23 12:19:33浏览次数:3  
标签:组合式 选项 Vue const API message 解析

Vue 2 和 Vue 3 在组件的组织方式上有一些重要的区别,主要体现在选项式 API(Options API)和组合式 API(Composition API)上。下面我将详细介绍这两种 API 的区别,并提供相应的代码示例。

选项式 API (Options API)

选项式 API 是 Vue 2 中最常用的 API 风格,它通过选项来组织组件的逻辑。每个选项(如 datamethodscomputed 等)都有特定的作用域和生命周期。

Vue 2 选项式 API 示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue 2 Options API Example</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <p>{{ message }}</p>
        <button @click="increment">Increment</button>
    </div>

    <script>
        new Vue({
            el: '#app',
            data() {
                return {
                    message: 'Hello, Vue 2!'
                };
            },
            methods: {
                increment() {
                    this.message += '!';
                }
            }
        });
    </script>
</body>
</html>

组合式 API (Composition API)

组合式 API 是 Vue 3 引入的一种新的 API 风格,它允许你更灵活地组织和重用逻辑。通过 setup 函数,你可以更直观地管理组件的状态和逻辑。

Vue 3 组合式 API 示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue 3 Composition API Example</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.js"></script>
</head>
<body>
    <div id="app">
        <p>{{ message }}</p>
        <button @click="increment">Increment</button>
    </div>

    <script>
        const { createApp, ref } = Vue;

        createApp({
            setup() {
                const message = ref('Hello, Vue 3!');

                const increment = () => {
                    message.value += '!';
                };

                return {
                    message,
                    increment
                };
            }
        }).mount('#app');
    </script>
</body>
</html>

区别总结

  1. 组织方式

    • 选项式 API:通过不同的选项(如 datamethodscomputed 等)来组织组件的逻辑。
    • 组合式 API:通过 setup 函数来组织组件的逻辑,更加灵活和模块化。
  2. 状态管理

    • 选项式 API:状态管理分散在不同的选项中,例如 data 用于管理数据,methods 用于定义方法。
    • 组合式 API:状态管理集中在 setup 函数中,使用 ref 或 reactive 来管理响应式数据。
  3. 逻辑复用

    • 选项式 API:逻辑复用较为困难,通常需要借助混入(mixins)或其他方式。
    • 组合式 API:逻辑复用非常方便,可以通过自定义组合函数(composables)来实现。
  4. 学习曲线

    • 选项式 API:对于初学者来说,学习曲线较为平缓,因为它的结构清晰且直观。
    • 组合式 API:对于有经验的开发者来说,学习曲线较陡峭,但提供了更多的灵活性和可维护性。

代码框架对比

Vue 2 选项式 API 框架

javascript

new Vue({
    el: '#app',
    data() {
        return {
            // 响应式数据
            message: 'Hello, Vue 2!'
        };
    },
    methods: {
        // 方法
        increment() {
            this.message += '!';
        }
    },
    computed: {
        // 计算属性
        reversedMessage() {
            return this.message.split('').reverse().join('');
        }
    },
    watch: {
        // 监听器
        message(newVal, oldVal) {
            console.log(`message changed from ${oldVal} to ${newVal}`);
        }
    },
    created() {
        // 生命周期钩子
        console.log('Component created');
    },
    mounted() {
        // 生命周期钩子
        console.log('Component mounted');
    }
});
Vue 3 组合式 API 框架
const { createApp, ref, computed, watch, onCreated, onMounted } = Vue;

createApp({
    setup() {
        // 响应式数据
        const message = ref('Hello, Vue 3!');

        // 方法
        const increment = () => {
            message.value += '!';
        };

        // 计算属性
        const reversedMessage = computed(() => {
            return message.value.split('').reverse().join('');
        });

        // 监听器
        watch(message, (newVal, oldVal) => {
            console.log(`message changed from ${oldVal} to ${newVal}`);
        });

        // 生命周期钩子
        onCreated(() => {
            console.log('Component created');
        });

        onMounted(() => {
            console.log('Component mounted');
        });

        return {
            message,
            increment,
            reversedMessage
        };
    }
}).mount('#app');

标签:组合式,选项,Vue,const,API,message,解析
From: https://blog.csdn.net/2301_76541209/article/details/142994604

相关文章

  • Vue拍照上传组件(重拍、切换已有摄像头)
    背景由于业务需求,需要进行拍照上传,百度了一遍组件都不太合适。自己结合已有案例封装了一下,可以把这个组件嵌套到el-dialog里面就可以使用。实现功能实时加载预览画面点击拍照截取照片不满意可以重拍,不会中断之前的视频流加载当前设备的所有摄像头,可以进行选择切换依赖E......
  • 隨筆 Kafka 异步发送机制解析
    Kafka异步发送机制解析与比喻        Kafka是一个高效的分布式消息系统,异步发送是其实现高吞吐量和低延迟的关键机制之一。为了更好地理解Kafka生产者的异步发送过程,我们将其比作一个旅客乘飞机前往目的地的故事。在这个故事中,生产者就像一个机场,负责将旅客(数据)送......
  • HCI_LE_Read_Local_Supported_Features(0x0003)命令全面解析
    目录一、命令概述 二、命令格式2.1.HCI_LE_Read_Local_Supported_Features命令格式2.1.HCICommandComplete响应命令格式三、返回命令 HCICommandComplete参数说明3.1. Status3.2.LE_Features3.3.示例3.4.LE_Features字段中的特性位四、命令执行流程4.1.......
  • 鸿蒙Next之数据同步艺术之三:标准化数据类型解析-UTD详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。本文将深入探讨华为鸿蒙HarmonyOSNext......
  • HCI_LE_Set_Random_Address(0x0005)命令全面解析
    目录一、命令概述二、命令格式2.1.HCI_LE_Set_Random_Address命令格式2.2.HCICommandComplete返回命令格式2.3.格式示例2.4.示例二进制表示三、命令参数详细说明3.1.命令代码(Opcode)3.2.参数长度(ParameterLength)3.3.随机地址(RandomAddress)四、命令返回参......
  • Vue3 学习笔记(三)Vue3 项目打包及目录结构说明
    一、Vue3项目打包我们来回顾一下前面的调试运行命令:npmrundev执行后输出:VITEv5.4.9readyin483ms➜Local:http://localhost:5173/➜Network:use--hosttoexpose➜VueDevTools:Openhttp://localhost:5173/__devtools__/asasepa......
  • CogVideo---CogVideoX-微调代码源码解析-四-
    CogVideo&CogVideoX微调代码源码解析(四)ContributionGuideTheremaystillbemanyincompleteaspectsinthisproject.Welookforwardtoyourcontributionstotherepositoryinthefollowingareas.Ifyoucompletetheworkmentionedaboveandarewillingto......
  • CogVideo---CogVideoX-微调代码源码解析-十一-
    CogVideo&CogVideoX微调代码源码解析(十一).\cogvideo-finetune\sat\sgm\modules\encoders\__init__.py请提供需要注释的代码,我将为您添加注释。.\cogvideo-finetune\sat\sgm\modules\video_attention.py#导入PyTorch库importtorch#从上级模块导入必要的组件from.......
  • CogVideo---CogVideoX-微调代码源码解析-十三-
    CogVideo&CogVideoX微调代码源码解析(十三)VideoCaptionTypically,mostvideodatadoesnotcomewithcorrespondingdescriptivetext,soitisnecessarytoconvertthevideodataintotextualdescriptionstoprovidetheessentialtrainingdatafortext-to-vid......
  • CogVideo---CogVideoX-微调代码源码解析-十二-
    CogVideo&CogVideoX微调代码源码解析(十二).\cogvideo-finetune\sat\vae_modules\autoencoder.py#导入所需的标准库和第三方库importlogging#日志库,用于记录信息importmath#数学库,提供数学函数importre#正则表达式库,用于字符串匹配importrandom#随机数库,......