【蜻蜓点水】了解一下 vite 下一代前端开发与构建工具2

简介: 【蜻蜓点水】了解一下 vite 下一代前端开发与构建工具

实列1:手动搭建原生 ES Module 开发形式


下面我们先不通过 Vite,而是手动搭建原生 ES Module 开发形式,通过引入 lodash-es 包,实现一个数组去重的小例子,来详细分析一下。


1、新建文件夹 ESM

d79d5b801f604c249d96fe1c40cd0bbe.png



2、初始化前端工程

在文件夹 ESM 里,执行下面命令初始化一个工程

npm init -y


3、安装 lodash-es

lodash 为了良好的浏览器兼容性, 它使用了旧版 es5 的模块语法;而 lodash-es 使用了 es6 的模块语法。

npm i lodash-es -s

796d5da6ea584cba840a4be0cbc8bf74.png


4、编写业务代码

先新建 index.html 文件,里面编写代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>手动搭建原生 ES Module 开发形式</title>
</head>
<body>
  <script type="module" src="./main.js"></script>
</body>
</html>


这里记得写 type="module",不然会报错 Uncaught SyntaxError: Cannot use import statement outside a module (at main.js:1:1)

95b66244d8614800a8a0c49c5370dca0.png


然后再新建 main.js 文件,里面编写代码:

import uniq from './node_modules/lodash-es/uniq.js'
const kaimo = [1, 2, 3, 3, 4]
console.log(uniq(kaimo))



5、用 vscode 的 Live Server 启动项目

没有可以安装 vscode,然后在拓展工具添加 Live Server


db118a74cac5420f9d7e6e6acc28b3f7.png



添加完之后,我们启动服务,右击 html 打开 Live Server 或者 Go Live

84abd020e95948fa9dd9bca276e22382.png


启动一个 Web 服务后,会浏览器自动打开。



6、f12 查看结果

我们发现结果正常,重复的 3 被去掉了。


67a1bf329ff84f8ea6a9d86134de310b.png


我们在检测一下网络:我们发现请求竟然有 50 多个。


7d88b5512cbc4eb0a46d666d3c58d3a2.png


那这是为什么?

我们先点开 main.js,发现有一个 import。

2713160f3ef94220a49327c9ab2c2fe8.png


再打开 uniq.js,发现又有一个 import。

7f4c058d0cd24fd8a00e4374d6b707ae.png


再打开 _baseUniq.js,发现又有 6 个 import。

b366a9722f4c414293aa34f2302d1ea9.png


而这种俄罗斯套娃的模式,会一直引用到 uniq.js 相关的所有脚本代码。


可想而知,如果我们太多的模块引入,势必浏览器顶不住。所以这时候 Vite 便引入了 「依赖预构建」 的概念。


实列2:依赖现预构建浅析

下面我们通过 Vite 构建出一个 React 项目,去实现上述逻辑,我们在去观察 Vite 是怎么处理的。


1、生成项目

通过 Vite 指令生成项目

npm init @vitejs/app ESM2 --template react


63bd68faf24e4f0ab2abea52e5fce309.png


2、安装 lodash-es

我们进入 ESM2 文件夹

npm i lodash-es -s


0c2c6c3b965842219cc02e6c4eba6a5a.png

3、修改 main.jsx 代码

import uniq from 'lodash-es/uniq.js'
const kaimo = [1, 2, 3, 3, 4]
console.log(uniq(kaimo))

cfbed73b875748939b7e4844664dfefa.png


4、启动服务查看 f12

执行下面命令

npm run dev


54bd024c370a4b76aa2eab32aa863e3c.png


访问http://localhost:3000/,我们发现结果是正确的:

92e49914040e454d8d1c663fb33b85dc.png

然后我们去看网络部分,我们发现请求资源数少了好多


55f4bbb6acbf46b891bfe4979b828717.png


lodash-es/uniq 已经被 Vite 提前预编译到了 .vite 文件夹下


1475c11598f447d0b8db3a78cb199170.png


这样代码中直接去这个文件夹拿现成的包,就不必再递归地去加载很多静态资源脚本。



参考资料


   Vite 官方中文文档

   Vite 和Webpack 的核心差异

   初识 Vite 基础知识

   Module 的语法

   Module 的加载实现



拓展阅读


   强力推荐:ES modules: A cartoon deep-dive

   [Vue官方成员:Vite生态发展的怎么样了

   MDN import

   MDN export







目录
相关文章
|
2月前
|
缓存 监控 前端开发
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第26天】前端工程化是现代Web开发的重要趋势,通过将前端代码视为工程来管理,提高了开发效率和质量。本文详细对比了Webpack和Gulp两大主流构建工具的选择与配置优化,并提供了具体示例代码。Webpack擅长模块化打包和资源管理,而Gulp则在任务编写和自动化构建方面更具灵活性。两者各有优势,需根据项目需求进行选择和优化。
94 7
|
2月前
|
缓存 前端开发 JavaScript
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第27天】在现代前端开发中,构建工具的选择对项目的效率和可维护性至关重要。本文比较了Webpack和Gulp两个流行的构建工具,介绍了它们的特点和适用场景,并提供了配置优化的最佳实践。Webpack适合大型模块化项目,Gulp则适用于快速自动化构建流程。通过合理的配置优化,可以显著提升构建效率和性能。
78 2
|
2月前
|
前端开发 JavaScript 开发工具
Vite 4.0 发布,下一代的前端工具链
【10月更文挑战第21天】Vite 4.0 的发布标志着前端开发领域的又一次重要进步。它为开发者带来了更高效、更智能、更具创新性的开发体验,正逐渐成为下一代前端工具链的引领者。
|
3月前
|
前端开发 JavaScript
Vite 多种前端框架的构建
Vite 多种前端框架的构建
|
3月前
|
资源调度 前端开发 JavaScript
Vite:新一代前端构建工具的革命性体验
【10月更文挑战第13天】Vite:新一代前端构建工具的革命性体验
|
3月前
|
前端开发 JavaScript 中间件
Vite:下一代前端构建工具的崛起
【10月更文挑战第13天】Vite:下一代前端构建工具的崛起
|
3月前
|
JSON 前端开发 JavaScript
Vite:新一代前端构建工具的崛起
【10月更文挑战第13天】Vite:新一代前端构建工具的崛起
|
5月前
|
缓存 前端开发 JavaScript
前端项目性能优化:使用vite的分包策略
【8月更文挑战第4天】Vite性能优化-分包策略
148 2
前端项目性能优化:使用vite的分包策略
|
5月前
|
前端开发 Java C++
超简单使用Vite+Vue3构建共享开发和分模块打包的前端项目
使用Vite和Vue3构建支持共享组件和分模块独立打包的前端项目的方法。
670 0
超简单使用Vite+Vue3构建共享开发和分模块打包的前端项目
|
5月前
|
JavaScript 前端开发
什么是前端构建工具?vite和vite脚手架的关系!
【8月更文挑战第1天】前端构建工具简析
102 4

热门文章

最新文章