vite — 超快且方便的编译工具
我们编写的代码,比如 ES6
、 TypeScript
、react
等是不能被浏览器直接识别的,需要通过 webpack
、rollup
这样的构建工具来对代码进行转换、编译。
但随着项目越来越大,需要处理的资源越来越多,构建工具也需要很长的时间才能开启服务,因此产生了新型的前端构建工具 Vite
,可以提升编译速度和减少构建配置。
浏览器支持 esmodule
vite
基于 esmodule
来对资源进行处理,浏览器本身已支持 esmodule
,html 文件引入 js 资源时,增加一个 type 类型即可。
<script src="./src/index.jsx" type="module"></script>
某些第三方库也有模块化的版本,比如 lodash
,浏览器可直接支持 lodash-es
,在 src/index.js 从 node_modules 中引入。
import _ from '../node_modules/lodash-es/lodash.js';
console.log(_.join(','));
这个时候打开 html 页面,我们会发现 lodash.js 资源加载后,还发送了很多其它的 js 请求
直接使用浏览器支持的模块化,一方面请求资源非常多,另一方面如果不支持 esmodule
的库在浏览器运行就直接报错了。
如何处理资源
当存在浏览器所不能识别的资源时,vite
首先通过 connect
处理成 esmodule
的内容,比如 index.ts 处理成 index.js,当请求 index.ts 文件的时候,重定向到已处理好支持 esmodule
的 index.js 文件上。
ES6、TS 、React 等资源都是通过 ESBuild
来处理的,它类似 babel
工具,但是它具有更快的编译速度,因为是使用 Go
语言编写,无需经过字节码,可直接转换成机器代码。
vite 无需配置就能处理资源
使用 vite
和 webpack
一样,都需要全局或者项目安装依赖。
css
无论是 css
、less
还是处理兼容性的 postcss
,在 webpack
中都是需要借助合适的 loader
来对资源进行处理的,而 vite
中已内置处理,配置更为简单。
webpack | vite | |
---|---|---|
css | css-loader | - |
less | less-loader、less | less |
postcss | postcss-loader、plugin 如 pocss-preset-env | postcss-preset-env |
postcss
处理兼容性的配置需要在 postcss.config.js
中定义
module.exports = {
plugins: [require('postcss-preset-env')],
};
typescript
ts 代码也是不需要 loader
或者 plugin
来处理的,只需要安装 typescript
创建 ts 文件,将资源引入到入口 js 文件中
const mul = (a: number, b: number) => {
return a * b;
};
console.log(mul(6, 8));
通过 vite 开启服务,200ms 就开启,并且内置热更新
媒体资源
图片类资源在 webpack
中需要通过 url-loader
、file-loader
或者配置 asset module type
来处理,在 vite
中,无需做任何配置,直接引入即可。
import cat from './image/cat.jpg';
const img = document.createElement('img');
img.src = cat;
img.width = 300;
document.body.appendChild(img);
在浏览器页面上就可以直接看到效果
jsx
react
代码也可以被 vite
识别,但需要后缀使用 jsx,入口文件 index.js 改为 index.jsx,并修改 html 页面的引入。
<script src="./src/index.jsx" type="module"></script>
vite.config.js
虽然以上场景 vite
都已经内置处理功能,但配置文件也不是完全用不到的,默认配置文件名 vite.config.js
,比如对于 vue 的处理。
import { createVuePlugin } from 'vite-plugin-vue2';
export default {
plugins: [createVuePlugin()],
};
新增依赖被压缩会进行提示
打包指令
- npx vite 开启本地服务,内置了热更新
- npx vite build 生成编译文件
- npx vite preview 预览编译后的文件
创建 vite 项目
以上将 vite
作为工具来处理资源,还可以直接通过 vite
创建关于 react
或者 vue
的脚手架。执行 npm init vite
选择需要的项目
创建完成后,通过 npm install
安装所需要的依赖,然后在 package.json
中查看指令,就可以启动啦~
总结
- vite 基于 esmodule 来处理数据,使用到工具 ESBuild,编译速度非常快
- css、less、typescript、react 在 vite 中可以直接使用
- 默认配置文件 vite.config.js 可添加其它配置,如 plugin
- vite 提供了编译后预览的指令 npx vite preview
以上就是 vite 编译资源
的介绍, 更多有关 前端
、工程化
的内容可以参考我其它的博文,持续更新中~
vite — 超快且方便的编译工具的更多相关文章
- [转帖]推荐一款比 Find 快 10 倍的搜索工具 FD
推荐一款比 Find 快 10 倍的搜索工具 FD https://www.hi-linux.com/posts/15017.html 试了下 很好用呢. Posted by Mike on 2018 ...
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...
- PixiJS - 基于 WebGL 的超快 HTML5 2D 渲染引擎
Pixi.js 是一个开源的HTML5 2D 渲染引擎,使用 WebGL 实现,不支持的浏览器会自动降低到 Canvas 实现.PixiJS 的目标是提供一个快速且轻量级的2D库,并能兼容所有设备.此 ...
- 推荐两款好用的反编译工具(Luyten,Jadx)
使用JD-Gui打开单个.class文件,总是报错// INTERNAL ERROR 但当我用jd-gui反编译前面操作获得的jar文件的时,但有一部分类不能显示出来--constants类,仅仅显示 ...
- koala预编译工具的使用
Koala是一个开源的预处理语言图形编译工具,目前已支持Less.Sass.Compass与CoffeeScript. 安装Koala 在Koala官网根据你的系统平台下载对应的版本.Linux系统要 ...
- apk反编译工具
反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中 ...
- less及编译工具介绍
什么是LESSCSS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. LE ...
- eclipse安装反编译工具
身为一名程序员来说,日常最常做的就是编写代码和查看别人写好的源代码了,有时候打开别人写的class文件发现根本不是自己想要的,所以给大家介绍一种eclipse中反编译class文件的工具. 第一步:下 ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- .net混淆、反编译工具调查
常用的工具列表[比较常见的] 混淆器.加密 Dotfuscator VS默认带的工具,不过是个社区版 强度不大 dotNET Reactor 使用了NativeCode 和混淆的形式 Xenocode ...
随机推荐
- 自建CA和公共CA有什么不同?
据统计,全球有数百个公共CA,通常它们是按国家地区进行划分的.这类CA受大众的广泛认可和使用,也被称为公共信任的证书颁发机构.但是由于一些大型企业拥有许多站点,为了更轻松高效的管理以及考虑到维护成本, ...
- Python实现XSS扫描
利用Python代码实现XSS检测 import requests # HTML转换实体字符 def str_html(source): result = "" for c in ...
- 2014年蓝桥杯C/C++大学B组省赛真题(切面条)
题目描述: 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次,中间切一刀,会得到多少 ...
- 小程序使用wx.navigateTo无法跳转到加了tabBar的页面
随着小程序的不断更新,发现目前的小程序版本使用navigator无法跳转到加了tabBar的页面:后来使用redirectTo进行跳转也不行:在刚开始也是纠结了好久一直找不到解决办法.最后从官方文档中 ...
- es笔记七之聚合操作之桶聚合和矩阵聚合
本文首发于公众号:Hunter后端 原文链接:es笔记七之聚合操作之桶聚合和矩阵聚合 桶(bucket)聚合并不像指标(metric)聚合一样在字段上计算,而是会创建数据的桶,我们可以理解为分组,根据 ...
- 基于php的外卖订餐网站(php+mysql)
介绍 一个基于php的外卖订餐网站,包括前端和后台. 效果演示 http://101.43.124.118:8001/admin 源码地址 https://github.com/geeeeeeeek/ ...
- Hbase的JavaAPI和数据存储
导入Maven依赖 <dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> ...
- 使用EasyExcel对excel数据进行相似度判断
@Data public class ExeclDto { /** * execl表 */ private String filename; /** * 需要匹配的工作表名 */ private St ...
- 前端下拉框组件CCDropDownFilter下拉框 筛选框 仿美团下拉筛选框
快速实现下拉框 筛选框 仿美团下拉筛选框, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12421 效果图如下: # 下拉框使用方法 ...
- Python编程和数据科学中的数据处理:如何从数据中提取有用的信息和数据
目录 引言 数据分析和数据处理是数据科学和人工智能领域的核心话题之一.数据科学家和工程师需要从大量的数据中提取有用的信息和知识,以便更好地理解和预测现实世界中的事件.本文将介绍Python编程和数据科 ...