快速上手Vite 配置指南

news2024/11/19 13:28:33

💂 个人网站:【紫陌】【笔记分享网】
💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】
文章最后有作者l联系方式(备注进群)

1.认识vite

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

2.Vite的构造

  • 它主要由两部分组成:

    • 一个开发服务器,它基于原生ES模块提供了丰富的内建功能,HMR的速度非常快速;
    • 一套构建指令,它使用rollup打开我们的代码,并且它是预配置的,可以输出生成环境的优化过的静态资源;
  • 在浏览器支持 ES 模块之前,JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。

  • 这也正是我们对 “打包” 这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。

  • 时过境迁,我们见证了诸如 webpack、Rollup 和 Parcel 等工具的变迁,它们极大地改善了前端开发者的开发体验。

  • 然而,当我们开始构建越来越大型的应用时,需要处理的 JavaScript 代码量也呈指数级增长。包含数千个模块的大型项目相 当普遍。

  • 基于 JavaScript 开发的工具就会开始遇到性能瓶颈:通常需要很长时间(甚至是几分钟!)才能启动开发服务器,即使使用 模块热替换(HMR),文件修改后的效果也需要几秒钟才能在浏览器中反映出来。

  • Vite 旨在利用生态系统中的新进展解决上述问题:

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

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

3. Vite的安装

  • 安装一下vite工具:

    npm install vite –g

    npm install vite -d

  • 通过vite来启动项目:

    npx vite

4.Vite对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

在这里插入图片描述

5.Vite对TypeScript的支持

  • vite对TypeScript是原生支持的,它会直接使用ESBuild来完成编译:
    • 只需要直接导入即可
  • 如果我们查看浏览器中的请求,会发现请求的依然是ts的代码:
    • 这是因为vite中的服务器Connect会对我们的请求进行转发;
    • 获取ts编译后的代码,给浏览器返回,浏览器可以直接进行解析;
  • 注意:在vite2中,已经不再使用Koa了,而是使用Connect来搭建的服务器

6.Vite对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中配置插件:

在这里插入图片描述

7.Vite对react的支持

  • .jsx 和 .tsx 文件同样开箱即用,它们也是通过 ESBuild来完成的编译:

  • 所以我们只需要直接编写react的代码即可;

  • 注意:在index.html加载main.js时,我们需要将main.js的后缀,修改为 main.jsx 作为后缀名;

    在这里插入图片描述

8.Vite打包项目

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

    npx vite build

    在这里插入图片描述

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

    npx vite preview

9.Vite脚手架工具

  • 在开发中,我们不可能所有的项目都使用vite从零去搭建,比如一个react项目、Vue项目;

    • 这个时候vite还给我们提供了对应的脚手架工具;
  • 所以Vite实际上是有两个工具的:

  • vite:相当于是一个构件工具,类似于webpack、rollup;

  • @vitejs/create-app:类似vue-cli、create-react-app;

  • 如果使用脚手架工具呢?

  • npm create vite
  • yarn create vite
  • pnpm create vite

10.理解ESBuild解析

  1. ESBuild的特点:

    • 超快的构建速度,并且不需要缓存;

    • 支持ES6和CommonJS的模块化;

    • 支持ES6的Tree Shaking;

    • 支持Go、JavaScript的API;

    • 支持TypeScript、JSX等语法编译;

    • 支持SourceMap;

    • 支持代码压缩;

    • 支持扩展其他插件;

  2. ESBuild的构建速度

    • 使用Go语言编写的,可以直接转换成机器代码,而无需经过字节码;

    • ESBuild可以充分利用CPU的多内核,尽可能让它们饱和运行;

    • ESBuild的所有内容都是从零开始编写的,而不是使用第三方,所以从一开始就可以考虑各种性能问题;

的构建速度**

  • 使用Go语言编写的,可以直接转换成机器代码,而无需经过字节码;

  • ESBuild可以充分利用CPU的多内核,尽可能让它们饱和运行;

  • ESBuild的所有内容都是从零开始编写的,而不是使用第三方,所以从一开始就可以考虑各种性能问题;

  • 等等…
    在这里插入图片描述

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

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

相关文章

《水经注地图服务》数据源说明

(本文首发于“水经注GIS”公号,关注公号免费领取地图数据) 《水经注地图服务》(WeServer)是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品,该产品完全遵循OGC相关协议标准,是一个…

老板给情人转166万,妻子起诉后追回,网友:这是被白嫖三年

作为一个已婚男人,戚某在婚姻关系中背离了对妻子的忠诚,与小自己14岁的女员工小汪发展出不正当的男女关系。而小汪,在明知对方已婚的情况下,仍然选择继续纠缠,最终付出了惨痛的代价。 据了解,戚某在上海经营…

会议签到二维码制作教程

纸质签到表、人工逐一核对等传统的会议签到方式,存在着耗时耗力、容易出错、不环保等种种弊端。 可以制作一个包含签到表单的签到二维码,参会人员使用微信扫码签到,自动授权填写手机号、定位等信息,管理人员在小程序以及电脑端实…

【团购-自己实现代理 Objective-C语言】

一、我们上节课,实现了数据加载,下面是不是有个加载更多啊, 1.我们先把这个“加载更多”给大家做一下, 这个加载更多,注意看,因为这个加载更多,是显示在UITableView的最底部的, 它会随着UITableView一起滚动吧, 证明,它是在UITableView的tableFooterView里面显示的…

Linux系统中tar.gz与rpm结尾的文件在安装程序时究竟有什么不同?

tar.gz tar.gz就是一个压缩包! 使用的时候需要使用tar命令配上一些参数来进行解压。 关于tar的使用,大家可以参考这篇博客,这位大佬写的很详细。 Linux tar命令详解 在解压完后,这就是一个独立的文件,里面包含着关…

第十五章_Redis与MySQL数据双写一致性工程落地案例

复习面试题 采用双检加锁策略 多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。 其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。 后面的线程进来发现已经…

Redis内幕揭秘:探索Redis基础知识及应用场景,挖掘出高效的缓存技术

Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是 Redis 的发展史: 2009 年:Salvatore Sanfilippo 开始编写 Redis。2010 年:Redis 发布了 1.0 版本。这个版本包含了许多常用的数据结构&…

在陌生人社交场景 挖呀挖呀挖……

在陌生人社交场景 挖呀挖呀挖, 找可靠的大品牌(网易),享最优惠的价~ 😄 对于“深挖”娱乐社交领域需求的开发者来说,陌生人社交是毋庸置疑最受青睐的场景。尤其是对渴望交流、敢于表达自我的年轻人来说&…

10-HTML-表单标签

标签描述<form>定义供用户输入的 HTML 表单。<input>定义输入控件。<textarea>定义多行的文本输入控件。<button>定义按钮。<select>定义选择列表&#xff08;下拉列表&#xff09;。<optgroup>定义选择列表中相关选项的组合。<option&…

【Rust日报】2023-05-10 llm - 使用Rust在CPU上运行大模型

llm - 使用Rust在CPU上运行大模型 这是一套工具。目前支持这些模型&#xff1a; GPT-2GPT-JLLaMA: LLaMA, Alpaca, Vicuna, Koala, GPT4All v1, GPT4-X, WizardGPT-NeoX: GPT-NeoX, StableLM, Dolly v2 (partial, not the same tensor names?)BLOOM: BLOOMZ https://github.co…

多优先级(笔记)

目录 支持多优先级的方法通用方法优化方法1、修改任务控制块2、修改xTaskCerateStactic()修改 prvInitialiseNewTask() 函数prvAddTaskToReadyList()初始化任务列表prvAddTaskToReadyList()vTaskStartScheduler()vTaskDelay()vTaskSwitchContext()xTaskIncrementTick() 实验实验…

如何成就一个伟大的公司?

任何事物都不及“伟大”那样简单&#xff0c;事实上&#xff0c;能够“简单”便是伟大。最优秀的模式&#xff0c;往往是最简单的东西。 那么&#xff0c;如今作为一名创业者&#xff0c;要如何才能更好的发展自己的公司&#xff0c;把带领的团队打造成为一个伟大的公司呢&…

MySQL基础(二十八)索引优化与查询优化

都有哪些维度可以进行数据库调优?简言之: 索引失效、没有充分利用到索引——索引建立关联查询太多JOIN (设计缺陷或不得已的需求)——SQL优化服务器调优及各个参数设置(缓冲、线程数等)———调整my.cnf。数据过多――分库分表 关于数据库调优的知识点非常分散。不同的DBMS&…

基于Vue3 + ts + echarts(版本5.X)实现中国地图下钻、地图打点、地图热力图功能

写在前面&#xff1a; 实现效果图 1.比较重要的部分用红字标出 2.安装echats: npm install echarts --save 3.由于echarts5版本的已经没有自带地图数据了&#xff0c;所以地图数据需要到专门的GEO数据网站中下载。这里提供一个阿里的下载地址&#xff1a;DataV.GeoAtl…

云原生环境下的安全实践:保护应用程序和数据的关键策略

文章目录 云原生环境下的安全实践&#xff1a;保护应用程序和数据的关键策略一.安全措施和实践1. 身份和访问管理&#xff1a;2. 容器安全&#xff1a;3. 网络安全&#xff1a;4. 日志和监控&#xff1a;5. 持续集成和持续交付&#xff08;CI/CD&#xff09;安全&#xff1a;6.…

【学习笔记-myabtis】使用mybtis对接pgsql的postgis插件,获取地理字段Geometry信息

使用mybtis对接pgsql的postgis插件&#xff0c;获取地理字段geometry信息 参考资料&#xff1a; Mybatis 自定义TypeHandler - 邓维-java - 博客园 1、如何使用typehandler ​ 相信大家用Mybatis这个框架至少一年以上了吧&#xff0c;有没有思考过这样一个问题&#xff1a;数据…

xxl-job 是什么?

xxl-job 是什么&#xff1f; XXL-JOB 是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 设计思想 是将调度行为抽象形成 调度中心 平台&#xff0c;平台本身不承担业务逻辑&#xff0c;而是负责发起 调度请求 后&#xff0c;由 执…

右下角任务栏出现广告持续闪烁解决方法

&#x1f466;&#x1f466;一个帅气的boy&#xff0c;你可以叫我Love And Program &#x1f5b1; ⌨个人主页&#xff1a;Love And Program的个人主页 &#x1f496;&#x1f496;如果对你有帮助的话希望三连&#x1f4a8;&#x1f4a8;支持一下博主 右下角任务栏出现广告持…

【K8S】【Jenkins】【CI/CD】【一】交付CI/CD工具至k8s 【待写】

1 安装Harbor镜像仓库&#xff08;之前已部署 &#xff0c;略&#xff09; 可参考之前的《Kubernetes业务迁移.pdf》 网站-账号密码 http://gitlab.oldxu.net:30080/users/sign_in &#xff08; root/ admin12345 &#xff09; http://sonar.oldxu.net:30080/ …

Type-C显示器是什么,Type-C显示器的5大优势

在显示器领域内&#xff0c;USB Type-C接口还处于发展阶段&#xff0c;目前已经在新推出的一些高端显示器和旗舰显示器中有配置。USB Type-C接口的出现&#xff0c;将会形成以显示器为核心的桌面解决方案&#xff0c;用户可以把任何笔记本、手机、平板等等的画面转移到一台大屏…