我们编写的代码,比如 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 — 超快且方便的编译工具的更多相关文章

  1. [转帖]推荐一款比 Find 快 10 倍的搜索工具 FD

    推荐一款比 Find 快 10 倍的搜索工具 FD https://www.hi-linux.com/posts/15017.html 试了下 很好用呢. Posted by Mike on 2018 ...

  2. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  3. PixiJS - 基于 WebGL 的超快 HTML5 2D 渲染引擎

    Pixi.js 是一个开源的HTML5 2D 渲染引擎,使用 WebGL 实现,不支持的浏览器会自动降低到 Canvas 实现.PixiJS 的目标是提供一个快速且轻量级的2D库,并能兼容所有设备.此 ...

  4. 推荐两款好用的反编译工具(Luyten,Jadx)

    使用JD-Gui打开单个.class文件,总是报错// INTERNAL ERROR 但当我用jd-gui反编译前面操作获得的jar文件的时,但有一部分类不能显示出来--constants类,仅仅显示 ...

  5. koala预编译工具的使用

    Koala是一个开源的预处理语言图形编译工具,目前已支持Less.Sass.Compass与CoffeeScript. 安装Koala 在Koala官网根据你的系统平台下载对应的版本.Linux系统要 ...

  6. apk反编译工具

    反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中 ...

  7. less及编译工具介绍

    什么是LESSCSS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. LE ...

  8. eclipse安装反编译工具

    身为一名程序员来说,日常最常做的就是编写代码和查看别人写好的源代码了,有时候打开别人写的class文件发现根本不是自己想要的,所以给大家介绍一种eclipse中反编译class文件的工具. 第一步:下 ...

  9. Koala – 开源的前端预处理器语言图形编译工具

    koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...

  10. .net混淆、反编译工具调查

    常用的工具列表[比较常见的] 混淆器.加密 Dotfuscator VS默认带的工具,不过是个社区版 强度不大 dotNET Reactor 使用了NativeCode 和混淆的形式 Xenocode ...

随机推荐

  1. 音视频八股文(10)-- mp4结构

    介绍 mp4⽂件格式⼜被称为MPEG-4 Part 14,出⾃MPEG-4标准第14部分 .它是⼀种多媒体格式容器,⼴泛⽤于包装视频和⾳频数据流.海报.字幕和元数据等.(顺便⼀提,⽬前流⾏的视频编码格 ...

  2. 数据结构与算法大作业:走迷宫程序(C语言,DFS)(代码以及思路)

    好家伙,写大作业,本篇为代码的思路讲解   1.大作业要求 走迷宫程序 问题描述: 以一个 m * n 的长方阵表示迷宫, 0和1分别表示迷宫的通路和障碍. 设计一个程序, 对任意设定的迷宫, 求出一 ...

  3. 2020-08-22:I/O多路复用中select/poll/epoll的区别?

    福哥答案2020-08-22: select,poll,epoll 都是 操作系统实现 IO 多路复用的机制. 我们知道,I/O 多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是 ...

  4. 2022-10-01:给定一个字符串 s,计算 s 的 不同非空子序列 的个数 因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 。 字符串的 子序列 是经由原字符串删除一些(也可能不删除

    2022-10-01:给定一个字符串 s,计算 s 的 不同非空子序列 的个数 因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 . 字符串的 子序列 是经由原字符串删除一些(也可能不删除 ...

  5. 2022-03-05:不相交的线。 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直

    2022-03-05:不相交的线. 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数. 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直 ...

  6. 2022-01-31:迷宫 III。 由空地和墙组成的迷宫中有一个球。球可以向上(u)下(d)左(l)右(r)四个方向滚动,但在遇到墙壁前不会停止滚动。当球停下时,可以选择下一个方向。迷宫中还有一个洞

    2022-01-31:迷宫 III. 由空地和墙组成的迷宫中有一个球.球可以向上(u)下(d)左(l)右(r)四个方向滚动,但在遇到墙壁前不会停止滚动.当球停下时,可以选择下一个方向.迷宫中还有一个洞 ...

  7. 2021-07-01:最长连续序列。一个未排序的arr,找出数字连续的最长序列的长度。输入:[100,4,1,20,3,2,50],输出:4。解释:最长数字连续序列是[1,2,3,4],所以长度是4。

    2021-07-01:最长连续序列.一个未排序的arr,找出数字连续的最长序列的长度.输入:[100,4,1,20,3,2,50],输出:4.解释:最长数字连续序列是[1,2,3,4],所以长度是4. ...

  8. PHP编程与系统开发

    PHP开发环境配置 一.开发环境 1.XAMPP或LNMP.WNMP,先安装widows版本的XMAPP-5.6版本(PHP 5.6) 2.VSCode:微软开发的集成开发环境(IDE) 二.安装教程 ...

  9. iOS中容易用错的常用知识点

    坐标系转换 ios中的坐标系有三种 视图坐标系:原点(0,0)视图的左上角 窗口坐标系:原点(0,0)窗口的左上角 世界坐标系:原点(0,0)游戏中世界的原点 平时开发中经常会遇到转UIWindow坐 ...

  10. 让优惠再续一年!SHPC 老客专享

    最近云筏君经常收到自家小伙伴发来的关于产品活动的关心慰问,掐指一算,哦,原来是一年一度大家喜闻乐见的剁手节(学名"双十一")马上要来了! 大家都知道,云筏家的产品向来主打高性价比, ...