vue2和vue3的按需引入的详细对比通俗易懂

以下是 Vue2 与 Vue3 按需引入的对比详解,用最简单的语言和场景说明差异:


一、按需引入的本质

  • 目标:只打包项目中实际用到的代码(组件、API),减少最终文件体积。
  • 类比:去餐厅点餐,只付你吃掉的菜,不用为整个菜单买单。

二、Vue2 的按需引入(手动模式)

1. 实现方式
  • 依赖工具:Babel 插件(如 babel-plugin-component)。
  • 核心原理:通过插件将代码“偷偷替换”为指定路径的组件文件。
2. 具体操作

以 Element UI 为例:

  1. 配置 Babel

    // babel.config.js
    plugins: [["component", { "libraryName": "element-ui",  // 库名"styleLibraryName": "theme-chalk"  // 样式路径}]
    ]
    
  2. 手动引入组件

    // src/plugins/element.js
    import Vue from 'vue';
    import { Button, Input } from 'element-ui';  
    Vue.use(Button);  // 必须逐个注册组件
    Vue.use(Input);
    
  3. 全局引入配置

    // main.js
    import './plugins/element';  // 手动引入所有用到的组件
    
3. 缺点
  • 手动维护列表:每新增一个组件,就要修改配置文件。
  • 样式需单独处理:要么手动引入 CSS,要么依赖插件自动添加。
  • 配置繁琐:对新手不友好,容易出错。

三、Vue3 的按需引入(自动模式)

1. 实现方式
  • 依赖工具:自动导入插件(如 unplugin-auto-import)。
  • 核心原理:工具自动扫描代码,动态生成组件导入语句。
2. 具体操作

以 Element Plus 为例:

  1. 配置 Vite

    // vite.config.js
    import AutoImport from 'unplugin-auto-import/vite';
    import Components from 'unplugin-vue-components/vite';
    import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';export default {plugins: [AutoImport({ resolvers: [ElementPlusResolver()] }), // 自动导入 APIComponents({ resolvers: [ElementPlusResolver()] }), // 自动导入组件],
    };
    
  2. 直接使用组件

    <template><el-button>按钮</el-button>  <!-- 无需手动引入 -->
    </template>
    
3. 优点
  • 零配置:无需手动维护组件列表。
  • 自动处理样式:组件对应的 CSS 自动引入。
  • 开发体验好:写代码时无需关心导入语句。

四、为什么 Vue3 更高效?

1. 模块化设计
  • Vue3:每个 API 和组件都是独立模块(如 import { ref } from 'vue')。
  • Vue2:所有功能挂载在全局 Vue 对象(如 Vue.use()),难以拆分。
2. 原生 Tree-shaking 支持
  • Vue3:基于 ES Module,构建工具(如 Vite)可自动删除未使用代码。
  • Vue2:依赖 Babel 插件转换代码,无法彻底优化。
3. 现代工具链
  • 自动导入插件:动态分析代码,按需生成导入语句。
  • 示例
    <!-- 使用 <el-button> -->
    <!-- 插件自动生成: -->
    <script setup>
    import { ElButton } from 'element-plus';
    </script>
    

五、对比表格

特性Vue2Vue3
配置方式手动配置 Babel 插件一键配置自动导入插件
组件注册需手动调用 Vue.use()全自动
样式处理需手动引入或依赖插件自动关联
维护成本高(需手动更新组件列表)低(完全自动化)
适用场景中小型项目大型项目、追求极致的性能优化

六、总结

  • Vue2 按需引入:像手动拼装乐高,每个零件要自己找。
  • Vue3 按需引入:像全自动流水线,你要什么机器直接打包好。

Vue3 的改进让开发者更专注于业务逻辑,而非配置细节,同时大幅提升了项目的性能和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22222.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内容中台重构企业内容管理的价值维度与实施路径

内容概要 在数字化转型进程中&#xff0c;企业内容管理&#xff08;ECM&#xff09;与内容中台的差异性体现在价值维度的重构与能力边界的突破。传统ECM系统通常聚焦于文档存储、权限控制等基础功能&#xff0c;而内容中台通过标准化流程引擎与智能工具链&#xff0c;构建起覆…

挖矿病毒实战分析

场景说明 运维人员再设备巡检过程中发现CPU莫名到达百分百&#xff0c;出现异常&#xff0c;请开始你的应急响应排查 cpu百分百&#xff0c;基本就可以确定是中了挖矿病毒了 我们使用命令ps -aux查看进程&#xff0c;或者使用top -c查看进程&#xff0c;排查挖矿程序 使用t…

蓝桥杯好数

样例输入&#xff1a; 24 输出&#xff1a;7 输入&#xff1a;2024 输出&#xff1a; 150 思路&#xff1a;本题朴素方法的时间复杂度是O(n * log10(n)) &#xff0c;不超时。主要考察能否逐位取数&#xff0c;注意细节pi&#xff0c;这样不会改变i,否则会导致循环错误。 #in…

cs*n 网页内容转为html 加入 onenote

csdn上有好用的内容&#xff0c;我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…

【后端基础】布隆过滤器原理

文章目录 一、Bloom Filter&#xff08;布隆过滤器&#xff09;概述1. Bloom Filter 的特点2. Bloom Filter 的工作原理 二、示例1. 添加与查询2. 假阳性 三、Bloom Filter 的操作1、假阳性概率2、空间效率3、哈希函数的选择 四、应用 Bloom Filter 是一种非常高效的概率型数据…

【SPIE出版,见刊快速,EI检索稳定,浙江水利水电学院主办】2025年物理学与量子计算国际学术会议(ICPQC 2025)

2025年物理学与量子计算国际学术会议&#xff08;ICPQC 2025&#xff09;将于2025年4月18-20日在中国杭州举行。本次会议旨在汇聚全球的研究人员、学者和业界专家&#xff0c;共同探讨物理学与量子计算领域的最新进展与前沿挑战。随着量子技术的快速发展&#xff0c;其在信息处…

数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)

数据库驱动找起来好麻烦&#xff0c;我整理到了一起&#xff0c;需要的朋友免费下载&#xff1a;驱动下载 目前收录了Oracle、Mysql、达梦、Postgresql的数据库驱动的多个版本&#xff0c;后续可能会分享更多。

【2025最新版】Chrome谷歌浏览器如何能恢复到之前的旧版本

背景 今天程序突然出了bug&#xff0c;无法自动测试了&#xff0c;显示Chrome版本不匹配&#xff0c;一看&#xff0c;Chrome居然在我已经关闭升级的情况下&#xff0c;又给我升级了&#xff0c;然后就悲剧了&#xff0c;我的代码不能用了。 于是&#xff0c;做了以下几步&…

网络运维学习笔记 017HCIA-Datacom综合实验01

文章目录 综合实验1实验需求总部特性 分支8分支9 配置一、 基本配置&#xff08;IP二层VLAN链路聚合&#xff09;ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 单臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 综合实…

出行项目案例

spark和kafka主要通过Scala实现&#xff0c;Hadoop和HBase主要基于java实现。 通过该项目&#xff0c;主要达到以下目的&#xff1a; &#xff08;1&#xff09;通用的数据处理流程&#xff0c;入门大数据领域 &#xff08;2&#xff09;真实体验大数据开发工程师的工作 &a…

2.21力扣-回溯组合

77. 组合 - 力扣&#xff08;LeetCode&#xff09; 一&#xff1a;JAVA class Solution {List<Integer> list new LinkedList<>();List<List<Integer>> ans new LinkedList<>();public List<List<Integer>> combine(int n, int k)…

智能合约的部署

https://blog.csdn.net/qq_40261606/article/details/123249473 编译 点击图中的 “Compile 1_Storage.sol” 存和取一个数的合约&#xff0c;remix自带 pragma solidity >0.8.2 <0.9.0; /*** title Storage* dev Store & retrieve value in a variable* custom:d…

vmvare kali如何配置桥接模式进行上网

注意点:虚拟机可以PING通物理机,但是PING不通其他的网站。经过收集资料,得知由于是校园网连接,所以DHCP只能分配一个授权的IP地址给连接的主机,由于KALI是桥接物理机,物理机已经获得了这个授权的IP,所以导致桥接的虚拟机无法上网。所以不是因为配置的有问题,而是网络的…

了解Python中的SciPy库

么是 SciPy&#xff1f; SciPy&#xff08;发音为“Sigh Pie”&#xff09;是 Scientific Python 的首字母缩写词&#xff0c;它是 Python 的开源库&#xff0c;用于科学和技术计算。它是 Python 编程语言中称为 Numpy 的基本数组处理库的扩展&#xff0c;旨在支持高级科学和工…

python网络安全怎么学 python做网络安全

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 众所周知&#xff0c;python是近几年比较火的语言之一&#xff0c;它具有简单易懂、免费开源、可移植、可扩展、丰富的第三方库函数等特点&#xff0c;Java需要大…

Ubuntu下mysql主从复制搭建

本文介绍mysql 8.4主从集群的搭建&#xff0c;从单个机器安装到集群的配置&#xff0c;整体走了一遍&#xff0c;希望对大家有帮助。mysql 8.4和之前的版本命令上有些变化&#xff0c;大家用来参考。 0、环境 ubuntu&#xff1a; 22.04mysql&#xff1a;8.4 1、安装mysql 1…

MAC快速本地部署Deepseek (win也可以)

MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;本地运行框架&#xff0c;旨在简化大模型的部署和管理流程&#xff0c;使开发者、研究人员及爱好者能够高效地在本地环境中实验和…

Spring Boot框架总结(超级详细)

前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等&#xff0c;如果能耐心看完&#xff0c;想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念&#xff1a; 约定优于配置&#…

易基因: ChIP-seq+DRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性|NAR

原文&#xff1a;ChIP-seqDRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性&#xff5c;NAR 大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 在饥饿等能量胁迫条件下&#xff0c;生物体会通过调整…

uniapp h5端和app端 使用 turn.js

前提:添加页后,添加页与当前页会重叠在一起,不知道为什么,没有找到解决办法 1.h5端 <template><view class"container"><view id"flipbook"><view class"page page1">Page 1</view><view class"page pag…