vue2和vue3的按需引入的详细对比通俗易懂
以下是 Vue2 与 Vue3 按需引入的对比详解,用最简单的语言和场景说明差异:
一、按需引入的本质
- 目标:只打包项目中实际用到的代码(组件、API),减少最终文件体积。
- 类比:去餐厅点餐,只付你吃掉的菜,不用为整个菜单买单。
二、Vue2 的按需引入(手动模式)
1. 实现方式
- 依赖工具:Babel 插件(如
babel-plugin-component)。 - 核心原理:通过插件将代码“偷偷替换”为指定路径的组件文件。
2. 具体操作
以 Element UI 为例:
-
配置 Babel:
// babel.config.js plugins: [["component", { "libraryName": "element-ui", // 库名"styleLibraryName": "theme-chalk" // 样式路径}] ] -
手动引入组件:
// src/plugins/element.js import Vue from 'vue'; import { Button, Input } from 'element-ui'; Vue.use(Button); // 必须逐个注册组件 Vue.use(Input); -
全局引入配置:
// main.js import './plugins/element'; // 手动引入所有用到的组件
3. 缺点
- 手动维护列表:每新增一个组件,就要修改配置文件。
- 样式需单独处理:要么手动引入 CSS,要么依赖插件自动添加。
- 配置繁琐:对新手不友好,容易出错。
三、Vue3 的按需引入(自动模式)
1. 实现方式
- 依赖工具:自动导入插件(如
unplugin-auto-import)。 - 核心原理:工具自动扫描代码,动态生成组件导入语句。
2. 具体操作
以 Element Plus 为例:
-
配置 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()] }), // 自动导入组件], }; -
直接使用组件:
<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>
五、对比表格
| 特性 | Vue2 | Vue3 |
|---|---|---|
| 配置方式 | 手动配置 Babel 插件 | 一键配置自动导入插件 |
| 组件注册 | 需手动调用 Vue.use() | 全自动 |
| 样式处理 | 需手动引入或依赖插件 | 自动关联 |
| 维护成本 | 高(需手动更新组件列表) | 低(完全自动化) |
| 适用场景 | 中小型项目 | 大型项目、追求极致的性能优化 |
六、总结
- Vue2 按需引入:像手动拼装乐高,每个零件要自己找。
- Vue3 按需引入:像全自动流水线,你要什么机器直接打包好。
Vue3 的改进让开发者更专注于业务逻辑,而非配置细节,同时大幅提升了项目的性能和可维护性。
相关文章:
vue2和vue3的按需引入的详细对比通俗易懂
以下是 Vue2 与 Vue3 按需引入的对比详解,用最简单的语言和场景说明差异: 一、按需引入的本质 目标:只打包项目中实际用到的代码(组件、API),减少最终文件体积。类比:去餐厅点餐,只…...
JAVA:Gson:序列化和反序列化
Gson 是 Google 提供的一个用于在 Java 中方便地进行 JSON 与对象互相转换的库。 Gson 并不是 Android Studio(AS)专用的库,它是一个 通用的 Java JSON 解析库,可以在 任何 Java 项目 中使用。基本用法如下: 1. 把 Ja…...
如何在 VS Code 中快速使用 Copilot 来辅助开发
在日常开发中,编写代码往往是最耗时的环节之一。而 GitHub Copilot,作为一款 AI 编码助手,可以帮助开发者 自动补全代码、生成代码片段,甚至直接编写完整的函数,大幅提升编码效率。那么,如何在 VS Code 中快…...
PyCharm 中的 %reset -f 功能:一键重置控制台变量
在 PyCharm 的日常使用中,我们经常需要在控制台中测试和运行各种代码片段。随着时间的推移,控制台中会积累大量的变量和输出,这可能会使得环境变得混乱,影响我们的开发效率。为了解决这个问题,IPython 提供了一个非常有…...
DeepSeek-R1论文阅读及本地调用
前言 DeepSeek已经火了一段时间了,对于这项“国运级”的技术成果,即便研究的不是这个方向,也不免好奇前来看看。本文将先解析一下DeepSeek-R1这篇论文,再对DeepSeek的本地部署使用进行研究配置。 论文标题:DeepSeek-…...
自然语言处理:第九十二章 chatBI 经验(转载)
本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor 原文连接: 一文分享 ChatBI 实践经验 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易,希望走过路过点个关注和赞&#x…...
体验用ai做了个python小游戏
体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…...
sql server 从库创建的用户名登录后访问提示数据库无权限
在主副本库创建登录名并且用户映射赋权指定的数据库权限,副副本库也创建登录名,主副本有权限访问数据库的权限,但是副副本没有权限访问数据库。 解决方案: 检查数据库用户是否映射到登录名 如果数据库用户已存在,但…...
懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)
1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制):https://www.bilibili.com/video/BV1M6rdYEEog/ 备注: 1.本地离线卡密采用最安全的非对称加解密技术,设备id采用最安全多重混合加密不可逆技术生成&…...
Git LFS介绍(Large File Storage)大文件扩展,将大文件存储在外部存储,仓库中只记录文件的元数据(大文件的指针,类似一个小的占位符文件)
文章目录 LFS的功能?如何使用LFS?将大文件存储在外部系统是什么意思?具体是如何运作的?为什么要这样做? 对开发者的影响?1. **性能和效率**2. **协作体验**3. **版本管理差异**4. **额外的工具和配置** LFS…...
前后端项目部署服务器(传统部署和Docker部署)
内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...
python-leetcode 39.二叉树的直径
题目: 给定一棵二叉树的根节点,返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一:深度优先搜索 一条路径的长度为该路…...
Webpack的持久化缓存机制具体是如何实现的?
Webpack 的持久化缓存机制是 Webpack 5 引入的一项重要特性,旨在提高构建速度和性能。通过将构建结果缓存到磁盘上,Webpack 可以在后续构建中重用先前的结果,减少不必要的重新计算。以下是持久化缓存机制的具体实现和工作原理。 一、持久化缓…...
开题报告——基于Spring Boot的垃圾分类预约回收系统
关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...
【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进
文章目录 一. 什么是分布式事务?二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交(2PC)2. TCC(Try-Confirm-Cancel&…...
配置Api自动生成
我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...
适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究
文章目录 1. YOLOv8的性能瓶颈与改进需求1.1 YOLOv8的优势与局限性1.2 可变形卷积(DCN)的优势 2. DCN在YOLOv8中的应用2.1 DCN的演变与YOLOv8的结合2.2 将DCN嵌入YOLOv8的结构中2.2.1 DCNv1在YOLOv8中的应用2.2.2 DCNv2与DCNv3的优化 2.3 实验与性能对比…...
Redis_基础
Redis 命令启动、配置密码 Redis是绿色软件,所以直接解压就能使用 配置文件为:redis.windows.conf 启动redis 服务: redis-server.exe redis.windows.conf启动客户端: redis-cli.exe默认没有给Redis配置密码,所以在…...
linux查看程序占用的本地端口
ss是Socket Statistics的缩写,用来替代旧的netstat工具,功能更强大,执行更快。它用于查看系统的网络连接情况,包括TCP、UDP等协议的信息。 一. 命令解析: sudo ss -tulwnpss (Socket Statistics):替代 ne…...
Linux阿里云服务器安装RocketMQ教程
本文为个人云服务器上搭建RocketMQ教程,用于帮助大家降低安装学习成本,提高学习效率。本人在服务器上(我用的是阿里云服务器)安装MQ时遇到了大大小小的问题,因此在最终完成部署后,希望能总结一个教程&#…...
【JavaEE进阶】MyBatis入门
目录 🌴前言 🌲什么是MyBatis? 🌳准备工作 🚩创建工程 🚩配置数据库连接字符串 🚩数据准备 🚩编写持久层代码 🍃单元测试 🌴前言 在应⽤分层学习时,我们了解到…...
Docker 镜像加速器配置指南
Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内,由于网络环境的不稳定,直接从 Docker Hub 拉取镜像的速度可能会很慢,有时甚至会失败。即使配置了官方的阿里云镜像加速器,也可能因为…...
LeetCode-524. 通过删除字母匹配到字典里最长单词
1、题目描述: 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在&#x…...
工作-述职笔记
文章目录 述职报告量化指标比较好的想法角色的基本要求项目不好做?减少人员介入的内容知识库 wiki 博客等(公司不一定允许) 点评培训的重要性 很少写关于工作的笔记,但是接触的东西越多,发现有很多知识点以及需要学习的内容。 所以整理下吧。 述职不是小…...
前端VUE+后端uwsgi 环境搭建
1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;在nginx上加上安全性或其他的限制,可以达到保护程序的作用;uWSGI本…...
2025软件测试面试题大全(78题含答案解析)
1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容…...
微信小程序地图map全方位解析
微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具,可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点: 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…...
【Bert】自然语言(Language Model)入门之---Bert
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间:…...
实时股票行情接口与WebSocket行情接口的应用
实时股票行情接口与WebSocket行情接口的应用 实时股票行情接口是量化交易和投资决策的核心工具之一,行情接口的种类和功能也在不断扩展。介绍几种常见的行情接口,包括实时股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口,…...
.NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF
将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像,而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中,我们将探讨如何使用 Aspos…...
