Vue CLI和Vite区别

news2024/10/2 16:24:52

1.Vue CLI脚手架

什么是Vue脚手架?

  • 在真实开发中我们不可能每一个项目从头来完成所有的webpack配置,这样显示开发的效率会大大的降低;
  • 所以在真实开发中,我们通常会使用脚手架来创建一个项目,Vue的项目我们使用的就是Vue的脚手架;
  • 脚手架其实是建筑工程中的一个概念,在我们软件工程中也会将一些帮助我们搭建项目的工具称之为脚手架;

Vue的脚手架就是Vue CLI:

  • CLI是Command-Line Interface, 翻译为命令行界面;
  • 我们可以通过CLI选择项目的配置和创建出我们的项目;
  • Vue CLI已经内置了webpack相关的配置,我们不需要从零来配置

1.1Vue CLI 安装和使用

安装Vue CLI:

  • 我们是进行全局安装,这样在任何时候都可以通过vue的命令来创建项目: npm install @vue/cli -g

升级Vue CLI:

  • 如果是比较旧的版本,可以通过下面的命令来升级:npm update @vue/cli -g

通过Vue的命令来创建项目:vue create 项目的名称

1.2vue create 项目的过程

image.png

1.3项目的目录结构

image.png

1.4Vue CLI的运行原理

image.png

2.认识Vite

  • Webpack是目前整个前端使用最多的构建工具,但是除了webpack之后也有其他的一些构建工具:比如rollup、parcel、gulp、vite等等
  • 什么是vite呢? 官方的定位:下一代前端开发与构建工具

如何定义下一代开发和构建工具呢?

  • 我们知道在实际开发中,我们编写的代码往往是不能被浏览器直接识别的,比如ES6、TypeScript、Vue文件等
  • 所以我们必须通过构建工具来对代码进行转换、编译,类似的工具有webpack、rollup、parcel
  • 但是随着项目越来越大,需要处理的JavaScript呈指数级增长,模块越来越多
  • 构建工具需要很长的时间才能开启服务器,HMR也需要几秒钟才能在浏览器反应出来
  • 所以也有这样的说法:天下苦webpack久矣

Vite (法语意为 "快速的",发音 /vit/) 是一种新型前端构建工具,能够显著提升前端开发体验。

2.1Vite的构造

它主要由两部分组成:

  • 一个开发服务器,它基于原生ES模块提供了丰富的内建功能,HMR的速度非常快速;
  • 一套构建指令,它使用rollup打开我们的代码,并且它是预配置的,可以输出生成环境的优化过的静态资源

目前是否要大力学习vite?vite的未来是怎么样的?

  • 我个人非常看好vite的未来,也希望它可以有更好的发展;
  • 但是,目前vite虽然已经更新到2.0,依然并不算非常的稳定,并且比较少大型项目(或框架)使用vite来进行构建
  • vite的整个社区插件等支持也还不够完善;
  • 包括vue脚手架本身,目前也还没有打算迁移到vite,而依然使用webpack(虽然后期一定是有这个打算的)
  • 所以vite看起来非常的火热,在面试也可能会问到,但是实际项目中应用的还比较少;

2.2浏览器原生支持模块化

image.png

但是如果我们不借助于其他工具,直接使用ES Module来开发有什么问题呢?

  • 首先,我们会发现在使用loadash时,加载了上百个模块的js代码,对于浏览器发送请求是巨大的消耗
  • 其次,我们的代码中如果有TypeScript、less、vue等代码时,浏览器并不能直接识别

事实上,vite就帮助我们解决了上面的所有问题。

2.3Vite的安装和使用

注意:Vite本身也是依赖Node的,所以也需要安装好Node环境,并且Vite要求Node版本是大于12版本的;

首先,我们安装一下vite工具:

image.png

通过vite来启动项目:npx vite

2.4Vite对css的支持

vite可以直接支持css的处理:直接导入css即可;

vite可以直接支持css预处理器,比如less:

  • 直接导入less;
  • 之后安装less编译器;npm install less -D

vite直接支持postcss的转换:

  • 只需要安装postcss,并且配置 postcss.config.js 的配置文件即可:npm install postcss postcss-preset-env -D

image.png

2.5Vite对TypeScript的支持

vite对TypeScript是原生支持的,它会直接使用ESBuild来完成编译:只需要直接导入即可;

如果我们查看浏览器中的请求,会发现请求的依然是ts的代码:

  • 这是因为vite中的服务器Connect会对我们的请求进行转发;
  • 获取ts编译后的代码,给浏览器返回,浏览器可以直接进行解析;

注意:在vite2中,已经不再使用Koa了,而是使用Connect来搭建的服务器

image.png

2.6Vite对vue的支持

vite对vue提供第一优先级支持:

  • Vue 3 单文件组件支持:@vitejs/plugin-vue
  • Vue 3 JSX 支持:@vitejs/plugin-vue-jsx
  • Vue 2 支持:underfin/vite-plugin-vue2

安装支持vue的插件:npm install @vitejs/plugin-vue -D

在vite.config.js中配置插件:

image.png

2.7Vite打包项目

我们可以直接通过vite build来完成对当前项目的打包工具:npx vite build

image.png

我们可以通过preview的方式,开启一个本地服务来预览打包后的效果:npx vite preview

3.ESBuild解析

ESBuild的特点:

  • 超快的构建速度,并且不需要缓存;
  • 支持ES6和CommonJS的模块化;
  • 支持ES6的Tree Shaking;
  • 支持Go、JavaScript的API;
  • 支持TypeScript、JSX等语法编译;
  • 支持SourceMap;
  • 支持代码压缩;
  • 支持扩展其他插件;

3.1ESBuild的构建速度

ESBuild的构建速度和其他构建工具速度对比:

image.png

ESBuild为什么这么快呢?

  • 使用Go语言编写的,可以直接转换成机器代码,而无需经过字节码;
  • ESBuild可以充分利用CPU的多内核,尽可能让它们饱和运行;
  • ESBuild的所有内容都是从零开始编写的,而不是使用第三方,所以从一开始就可以考虑各种性能问题

4.Vite脚手架工具

在开发中,我们不可能所有的项目都使用vite从零去搭建,比如一个react项目、Vue项目;这个时候vite还给我们提供了对应的脚手架工具;

所以Vite实际上是有两个工具的:

  • vite:相当于是一个构件工具,类似于webpack、rollup;
  • @vitejs/create-app:类似vue-cli、create-react-app;

如果使用脚手架工具呢?npm init @vitejs/app

上面的做法相当于省略了安装脚手架的过程:

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在线世界各国语言翻译器

最近失业,无聊之极,想着搞点啥东西,一上午撸了一个世界各国语言跟汉语的互相翻译的功能,提供的语言列表无所不包含,这里列一下给大家看看,算了语言列表实在太长了,我还是把界面先放前面吧, 对的…

vue-5

一、文章内容概括 1.自定义指令 基本语法(全局、局部注册)指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 3.综合案例:商品列表 MyTag组件封装MyTable组件封装 4.路由入门 单页应用程序路由VueRouter的基本使用 二…

常用求解器安装

1 建模语言pyomo Pyomo是一个Python建模语言,用于数学优化建模。它可以与不同的求解器(如Gurobi,CPLEX,GLPK,SCIP等)集成使用,以求解各种数学优化问题。可以使用Pyomo建立数学优化模型&#xf…

笔试强训选择题

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻Day7 👉&#x…

抖音seo源码开发部署市场分析及注意事项分享---SaaS开源

抖音seo源码开发部署市场背景分析 对于抖音SEO源码开发部署的背景分析,可以从以下几个方面来展开: 抖音平台的发展和趋势:随着移动互联网的快速发展,抖音作为短视频领域的领军企业,其用户规模和市场规模也在不断扩大。…

2023年中国电容炭受益于超级电容器需求及进口替代双重驱动,行业呈快速增长态势[图]

电容炭是目前在超级电容器领域实现商业化应用的最为主要的电极材料。电容炭具有“三高三低”的优势,即高比表面积、高孔容、高电导率、低灰分、低金属离子、低粒径,是超级电容电极的核心材料。 电容炭是超级电容器的电极材料。电容炭指标关系着超级电容器…

Vue 识别移动设备还是PC设备跳转相应的路由

1. 先在router/index.js文件中配置好不同端口跳转的路由 import Vue from vue import VueRouter from vue-router// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题 const originalPush VueRouter.prototype.push VueRouter.prototype.push function pu…

GitHub要求开启2FA,否则不让用了。

背景 其实大概在一个多月前,在 GitHub 网页端以及邮箱里都被提示:要求开启 2FA ,即双因子认证;但是当时由于拖延症和侥幸心理作祟,直接忽略了相关信息,毕竟“又不是不能用”。。 只到今天发现 GitHub 直接…

超越日历的智慧:探索节日节气、宜忌和星座生肖等信息的万年历API

引言 当今社会,人们对时间的需求不仅仅是简单地知道日期,更多地是追求个性化、文化化和精确化的时间信息。在这个背景下,万年历API变得越来越重要,因为它可以提供超越传统日历的智慧,为我们带来了丰富的日期信息&…

JVM篇---第十篇

系列文章目录 文章目录 系列文章目录一、对象头具体都包含哪些内容?二、你知道哪些JVM调优参数?三、说一下 JVM 有哪些垃圾回收器?一、对象头具体都包含哪些内容? 在我们常用的Hotspot虚拟机中,对象在内存中布局实际包含3个部分: 对象头实例数据对齐填充 而对象头包含两…

ESD门禁闸机的使用说明

ESD门禁闸机是一种用于控制静电敏感区域人员出入的门禁设备,具有防静电和防电磁干扰的功能。以下是ESD门禁闸机的使用方法: 门禁卡或密码的获取:员工需要在公司或部门领取门禁卡或设置个人密码,方可进入静电敏感区域。 门禁卡或…

2023年中国CEM-3型覆铜板市场供需现状、销售收入及行业趋势分析[图]

CEM-3指覆铜板的一种,以玻纤布半固化片与玻纤粘半固化片层压铜箔达到固化形成的板材,属于复合型基材,CEM-3由于其良好的加工性能主要用于FR-4中厚板的替代,有着良好的发展前景。 随着CEM-3覆铜板品质的不断改进和提高,…

如何领取京东优惠券用微信支付还是用支付宝支付购买商品?

京东用微信支付还是用支付宝支付? 京东商城购物不支持支付宝支付,现京东商城支持的支付方式包括:京东支付、银行卡、信用卡、微信支付、云闪付等; 京东如何领取优惠券用微信支付购物? 1、打开京东APP,挑选…

程序员副业大揭秘:如何利用技术优势实现财富自由?

文章目录 为什么考虑副业?1. 多样化的收入来源2. 财务自由3. 技能提升4. 创业机会 如何选择适合的副业?1. 利用技术优势2. 兴趣和激情3. 市场需求4. 时间管理 实际操作:从副业想法到实际项目1. 制定计划2. 学习和发展技能3. 建立在线存在4. 寻…

Spring在业务中常见的使用方式

目录 通过IOC实现策略模式 通过AOP实现拦截 通过Event异步解耦 通过Spring管理事务 通过IOC实现策略模式 很多时候,我们需要对不同的场景进行不同的业务逻辑处理举个例子,譬如不同的场景需要不同支付方式,普通的逻辑是使用if-else&#x…

获取西华大学新闻网站信息(爬虫样例)

利用python的爬虫功能进行信息爬取,关键在于源码分析,代码相对简单。 1 源代码分析 访问网站,按下F12,进行元素查找分析。 2 代码实现 from requests import get from bs4 import BeautifulSoupdef getXhuNews(pageNum1):&qu…

一个好用的k8s代理工具——KtConnect

介绍 KtConnect实现了开发者本地运行的服务与Kubernetes集群中的服务之间的双向互通。 核心功能 本地直接访问Kubernetes集群内网 通过KtConnect可以直接连接Kubernetes集群内部网络,在不修改代码的情况下完成本地联调测试 本地解析Kubernetes服务内网域名 直…

【postgresql】ERROR: integer out of range

查询文章都类似,只是类型没有对应上,根据实际情况处理。 前情 使用postgresql数据库数据库ID类型int4实体类代码private Long id; 异常 ### Cause: org.postgresql.util.PSQLException: ERROR: integer out of range ; ERROR: integer out of range;…

【Acwing187】导弹防御系统(LIS+剪枝+贪心+dfs+迭代加深)

题目描述 看本文需要准备的知识 1.最长上升子序列(lis)的算法思想和算法模板 2.acwing1010拦截导弹(lis贪心)题解 本题题解,需要知道这种贪心算法 3.简单了解dfs暴力搜索、剪枝、搜索树等概念 思路讲解 dfs求最…

VuePress实现自动获取文章侧边栏目录功能

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…