vite详解

2023-11-06

vite详解_卖菜的小白的博客-CSDN博客_vite

一、认识vite
webpack是目前整个前端使用最多的构建工具,但是除了webpack之后也存在其他一些构建工具。比如说rollup,parcel,gulp,vite等等。vite的官方定位是下一代前端开发和构建工具。
如何定义下一代开发和构建工具呢?
我们知道在实际开发中,我们在编写的代码往往是不能被浏览器直接识别的,比如ES6,TypeScript,Vue文件等。所以此时我们必须通过构建工具来对代码进行转换,编译,类似的工具有webpack,rollup,parcel.但是随着项目越来越大,需要处理的javascript呈指数级增长,模块越来越多。构建工具需要很长时间才能开启服务器,HMR也需要几秒钟才能在浏览器反应过来。所以出现了vite。


上面是没有使用任何打包工具,直接使用ESmodule。但是此时我们如果使用lodash包,此时es module默认不会在node modules中进行查找,所以此时我们应该在引入文件时,使用完整路径。

此时将路径更改为import _ from "../node_modules/lodash-es/lodash.default.js"错误就解决了。
首先我们会发现使用lodash时,会加载了上百个模块的js文件,对于浏览器是一个巨大的消耗。
其次,我们的代码中如果存在TypeScript,less,vue等代码时,浏览器并不能直接识别。
事实上,vite就帮助我们解决了上面的所有问题。
二、vite的安装和使用

npm install vite -g   //全局安装
npm install vite -D   //局部安装
1
2
通过vite来启动项目

npx vite
1
此时在浏览器中加载文件的数目大幅减少。

此时加载第三方模块可以直接写。
import _ from "lodash-es"
三、vite对css的支持
直接在主文件中导入css即可,不需要任何其他的配置信息。
四、vite对less文件的支持
直接导入less文件,并且安装less。

如果不安装less的话,则会显示报错。
使用命令为:npm install less -D
五、vite对postcss的支持
只需要安装postcss,并且在postcss.config.js中配置相应的插件即可。
1、安装postcss

npm install postcss -D
1
并且安装相关的插件

npm install postcss-preset-env -D
1
新建一个postcss.config.js文件,并且在该文件中配置信息。

module.exports = {
  plugins:[
    require("postcss-preset-env")
  ]
}
1
2
3
4
5

六、vite对Typescript的支持
vite完全可以支持Typescript,不需要任何配置,只需要直接引入ts即可。
七、vite对vue的支持
如果直接引入vue文件,不进行任何其他操作的话,则会直接报错。

这里的报错信息显示@vitejs/plugin-vue,执行的操作为npm install @vitejs/plugin-vue -D,然后再新增一个vite.config.js中进行配置。在文件中进行配置信息。

import vue from "@vitejs/plugin-vue"
module.exports = {
  plugins:[
    vue()
  ]
}
1
2
3
4
5
6
八、vite打包
vite打包执行的代码是:npx vite build,最终打包后的文件为:

当我们执行npx vite build进行打包的时候,此时会在node_modules中创建一个.vite文件夹,在其中存放一些打包的文件,当下次打包时,就可以直接使用.vite文件夹中的文件。
九、vite预览
打包后的文件可以不开启live serve,此时我们可以执行npx vite preview来进行开启服务进行预览。
十、ESbuild解析
ESbuild的特点:
超快的构建速度,并且不需要缓存。
支持es6和commonjs的模块化
支持es6的tree shaking
支持go,javascript的api
支持typescript,jsx等语法编译
支持sourcemap
支持代码压缩
支持扩展其他插件
ESbuild的构建速度和其他构建工具相比
十一、为什么ESbuild那么快

1、ESbuild采用go语言编写,go语言可以直接转换成机器码,而无需经过字节码。
2、ESbuild可以充分利用多核CPU,尽可能让他们饱和运行(比如说:esbuild可以使得浏览器新增一个进程,进程中增加多个线程)
3、ESbuild的所有的内容都是从零开始编写的,而不是使用第三方,所以从一开始就可以考虑各种性能问题。
1
2
3
十二、vite脚手架工具
在开发中我们不可能一个项目所有的内容都使用vite从头开始搭建。此时我们应该考虑使用vite脚手架工具(@vitejs/create-app)。
vite就是一个构件工具,类似于webpack,rollup.
@vitejs/create-app:类似于vue-cli,create-react-app就是一个脚手架工具。
如何使用脚手架工具:
npm install @vitejs/create-app -g
create-app 项目名称
十三、vite执行流程

如上图所示首先vite会先创建一个本地服务器(connent开启的服务),浏览器向服务器请求资源,服务器查找该资源并返回,在返回之前应该将文件进行相关的转换,然后任然以该文件返回。

如上图所示,第一个是ts代码,在浏览器请求回来的是js代码,因为浏览器不能识别ts代码,所以会经过转化之后返回。
————————————————
版权声明:本文为CSDN博主「卖菜的小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_47450807/article/details/122798468

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vite详解 的相关文章

随机推荐

  • C语言指针学习

    开始好好学习C语言啦 指针是C语言比较难的地方 但是非常重要 所以单独在此记录一下 有执念的人最可怕 一定要好好学习哇 C语言指针学习 1 指针是什么 2 null指针 3 指针的运算 4 数组指针 一维数组指针 二维数组指针 5 指针数组
  • 2023年网络安全比赛--网络安全应急响应中职组(超详细)

    一 竞赛时间 180分钟 共计3小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1 找出被黑客修改的系统别名 并将倒数第二个别名作为Flag值提交 2 找出系统中被植入的后门用户删除掉 并将后门用户的账号作为Flag值提交
  • 对1bit的脉冲信号进行展宽,转为32bit位宽,并产生有效信号

    如题 Verilog实现 奉上拙见 对1bit的脉冲信号进行展宽 转为32bit位宽 并产生有效信号 module zhankuan input clk input rst n input pulse in output reg pulse
  • Detected problems with API compatibility(visit g.co/dev/appcompat for more info)

    最近手机升级了Android 9 在写应用程序的时候进场会弹出一个弹框 如下在这里插入图片描述 吓得我一身冷汗 在对应的网站上看了下信息 原来是在android限制调用hide注解的api 注意这种现在并非原来的在sdk中简单去掉hide注
  • 使用LSTM进行文本分类

    说明 之前写过用lstm模型做的文本分类 但是代码结构非常混乱 读过Bert源码后 决定模仿Bert的结构 自己重新写一遍使用lstm模型的代码 只作为熟悉tensorflow各个api与一个比较清楚的NLP模型结构的练手用 不求更高的准确
  • L1-046 整除光棍

    这里所谓的 光棍 并不是指单身汪啦 说的是全部由1组成的数字 比如1 11 111 1111等 传说任何一个光棍都能被一个不以5结尾的奇数整除 比如 111111就可以被13整除 现在 你的程序要读入一个整数x 这个整数一定是奇数并且不以5
  • 关于int *a; int &a; int & *a; int * &a

    上述的四条语句 前面两个很好理解 而后面两个 大部分C 初学者都会比较困惑 今天我也是查阅了一些资料以后才恍然大悟 下面具体来说明一下 int i int a i 这里a是一个指针 它指向变量i int b i 这里b是一个引用 它是变量i
  • linux搭建 PXE 远程安装服务器及无人值守

    注意 新建虚拟机 cpu 2个 内存不能低于4g 内存不低于20g 否则会失败 步骤 root localhost systemctl stop firewalld service 关闭防火墙 root localhost setenfor
  • 修改mysql的时间/时区

    应用背景 有时候会发现数据库存储的时间与当前所在地区的时间不同 尤其是涉及到全球业务的时候 如果有些程序是根据时间判断来进行后面的逻辑 往db中insert数据发现时间不对 尤其是新DB 可能是mysql设置不对 这时由于时区问题影响存入的
  • 【热门框架】Maven怎样进行版本管理?有哪些需要注意事项?

    Maven的版本管理是指对项目的依赖库和发布版本进行管理 可以通过配置pom xml文件来实现 下面是Maven进行版本管理的一些要点和注意事项 依赖库版本管理 在pom xml文件中 可以通过dependencyManagement元素来
  • java 内存分配策略

    1 对象优先在新生代Eden区中进行分配 当Eden区没有足够空间进行分配时 虚拟机进行一次Minor GC 2 大对象直接进入老年代 所谓大对象就是需要大量连续内存空间的java对象 最典型的大对象就是很长的字符串以及数组 3 长期存活的
  • 汇编指令:左移RL和RLC区别

    转载 https www cnblogs com zhangfan2014 p 4583947 html 汇编指令RL和RLC区别 RL是左移指令 参加左移的是8个位 RLC是带进位位的左移 参加左移的共有9个位 设A 0100 0001
  • 跳点搜索算法 (JPS算法) && 效率优化(摘录)

    摘自 腾讯游戏开发精粹 摘录一次加深记忆方便查找 并未盈利 如有侵权 联系作者删除 如感兴趣 请购买原书支持 谢谢配合 JPS主体思路 表现上 JSP算法比A 快很多 实际上快到哪里了 我们大概了解一下 A 会遍历每一个附近的点 然后把符合
  • 【RTT驱动框架分析07】- adc驱动框架分析+adc中断唤醒adc驱动

    ADC adc应用开发 访问 ADC 设备 应用程序通过 RT Thread 提供的 ADC 设备管理接口来访问 ADC 硬件 相关接口如下所示 函数 描述 rt device find 根据 ADC 设备名称查找设备获取设备句柄 rt a
  • xshell5激活

    xshell5产品秘钥 150105 116578 999990 xftp5产品秘钥 150105 116578 999990 xshell5产品秘钥 101210 450789 147200 xftp5产品秘钥 101210 450789
  • 突发奇想-基于重力感应的人体姿态控制型无人机

    基于重力感应的人体姿态控制型无人机 初级阶段目标 短距离重力感应控制 遥控器重力模块直接连接控制 手持遥控器不平稳问题 最终目标 控制系统迁移至人体 进行直接姿态操作 重力感应 压电效应 当晶体受到固定方向外力作用时 内部产生电极化现象 同
  • [YOLO专题-28]:YOLO V5 代码管理 - 如何与官网协同开发自己的项目代码

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122519479 目录 前言
  • C++数组练习题(一)

    在刚开始学习c 的时候刷了很多基础题 这些基础题比较适合初学C 的码友 所以在学完就立即进行了整理 一是为了让初学C 的码友有所参考 二也是为了复习一下所学过知识 但因为当时在整理时 时间有点紧促 可能会出现一些小错误 于是利用五一假期对之
  • Tensorflow:数据特征值的自变量为离散值

    import pandas as pd from sklearn utils import shuffle dataSet pd read csv input mushrooms csv mapPto1Eto0 p 1 e 0 dataSe
  • vite详解

    vite详解 卖菜的小白的博客 CSDN博客 vite 一 认识vite webpack是目前整个前端使用最多的构建工具 但是除了webpack之后也存在其他一些构建工具 比如说rollup parcel gulp vite等等 vite的