【蜻蜓点水】了解一下 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







目录
相关文章
|
1月前
|
缓存 前端开发 JavaScript
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
|
1月前
|
前端开发 数据可视化 JavaScript
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
223 0
|
1月前
|
前端开发 数据可视化 JavaScript
前端图形学实战: 100行代码实现几何画板的撤销重做等功能(vue3 + vite版)
前端图形学实战: 100行代码实现几何画板的撤销重做等功能(vue3 + vite版)
50 0
|
1月前
|
XML 前端开发 JavaScript
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
55 0
|
3天前
|
存储 JavaScript 前端开发
vue 快速入门+vite前端构建工具
vue 快速入门+vite前端构建工具
9 0
|
1月前
|
资源调度 JavaScript 前端开发
Vite:下一代前端构建工具的快速上手
Vite 是由 Vue.js 的作者尤雨溪开发的下一代前端构建工具,它以其快速的冷启动、按需编译和热更新能力而受到广泛关注。Vite 通过利用浏览器原生的 ES 模块导入功能,提供了几乎即时的开发环境启动速度和高度优化的开发体验。
47 2
|
1月前
|
前端开发 JavaScript 开发者
【专栏】前端工程化的重要性,强调构建工具在其中的角色,如Webpack和Rollup
【4月更文挑战第27天】本文探讨了前端工程化的重要性,强调构建工具在其中的角色,如Webpack和Rollup。Webpack以其灵活性和插件系统适用于复杂SPA项目,建议开发者理解其核心概念并优化性能。Rollup则专注于JavaScript模块打包,生成更小、更快的代码,适合小型至中型项目和库创建,以其Tree-shaking技术减小代码体积。开发者应根据项目需求、团队技术和生态选择合适工具,掌握核心原理以提升开发效率和质量。
|
1月前
|
前端开发 JavaScript Java
npm与Maven:前端与后端构建工具深度对比学习
npm与Maven:前端与后端构建工具深度对比学习
|
1月前
|
缓存 前端开发 JavaScript
前端vue3分享——项目封装axios、vite使用env环境变量
前端vue3分享——项目封装axios、vite使用env环境变量
80 0
|
1月前
|
前端开发 JavaScript 安全
Vite:极速的现代化前端构建工具
Vite:极速的现代化前端构建工具