Vite 学习笔记(一):构建工具基本概念

在学习 vite 之前,对构建工具再进行一个比较全面的复习,会更轻松的学习

什么是构建工具

企业级项目里都可能会具备哪些功能

  1. typescript: 如果遇到 ts 文件我们需要使用 tsc 将 typescript 代码转换为 js 代码
  2. React/Vue: 安装 react-compiler / vue-complier, 将我们写的 jsx 文件或者.vue文件转换为 render 函数
  3. less/sass/postcss/component-style: 我们又需要安装 less-loader, sass-loader 等一系列编译工具
  4. 语法降级: babel ---> 将 es 的新语法转换旧版浏览器可以接受的语法
  5. 体积优化: uglifyjs ---> 将我们的代码进行压缩变成体积更小性能更高的文件
  6. .....

这个东西就叫做构建工具

打包: 将我们写的浏览器不认识的代码 交给构建工具进行编译处理的过程就叫做打包, 打包完成以后会给我们一个浏览器可以认识的文件

构建工具承担了哪些脏活累活

模块化开发:

支持直接从 node_modules 里引入代码 + 多种模块化支持

比如:

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>Document</title>
</head>

<body>

  <script type="module">
    // es module 
    import _ from "lodash";
    console.log('__', _)
  </script>



</body>

</html>

此时我直接在浏览器里面运行,他会分别报错:

错误信息说的是:引入 lodash 只能通过 / ./ ../ 这三个(相对路径、绝对路径)路径去引入,通过上面我们写的 es module 的方式引入不生效。这是为什么?因为浏览器不知道 node_modules 这个目录。所以,构建工具帮助我们支持直接从 node_modules 里面引入代码

那既然我们现在的最佳实践就是 node_modules, 那为什么 es 官方在我们导入非绝对路径非相对路径的资源的时候不默认帮我们搜寻node_modules呢?

因为如果浏览器默认帮助我们去加载 node_modules 里的模块,对浏览器来说,每一个模块都会发送一个网络请求。而模块可能又依赖其他模块,然后又会发送更多的网络请求,这对性能是极大的消耗。这就是为什么浏览器不帮助我们默认搜索 node_modules 的根本原因

同样的道理,如果我是想通过 commonJs 引入代码(也就是支持多种模块化)

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>Document</title>
</head>

<body>

  <script type="module">
    // 多种模块化支持,比如 commonjs
    const lodash = require("lodash");
    console.log('lodash', lodash)
  </script>

</body>

</html>

直接运行在浏览器,同样报错:

所以,构建工具可以帮助我们从 node_modules 引入代码 + 多种模块化支持

处理代码兼容性

比如 babel 对 JS 进行降级处理,将最近的语法(比如箭头函数)转换成浏览器能够识别的代码。当然还有 lessts 编译(不是构建工具做的, 构建工具将这些语法对应的处理工具集成进来自动化处理

提高项目性能

比如:压缩文件代码分割等等

优化开发体验

比如当我们修改了某个页面的代码后,如果没有构建工具的帮忙,你需要手动的重新调用运行命令。

比如你重新编写了一个 ts 文件,那你需要自己手动调用 tsc xx.ts 才能运行最新的。

而构建工具会帮你自动监听文件的变化, 当文件变化以后自动帮你调用对应的集成工具进行重新打包, 然后再浏览器重新运行(整个过程叫做热更新, hot replacement)

当然还有解决跨域,用react-cli create-react-element vue-cli 等解决跨域的问题

市场上主流的构建工具

市面上主流的构建工具有哪些:

  • webpack
  • vite
  • parcel
  • esbuild
  • rollup
  • grunt
  • gulp

而我们,将会开启 vite 的学习之旅

相关推荐
MINO吖14 小时前
基于 qiankun + vite + vue3 构建微前端应用实践
vue·vite·微前端·qiankun·single-spa
依旧002 天前
react native webview加载本地HTML,解决iOS无法加载成功问题
react native·ios·html·vite·webview
果粒chenl2 天前
vite构建工具
前端·vite
萌萌哒草头将军4 天前
🚀🚀🚀 rolldown-vite 实践结果记录,它是真的快!⚡️⚡️⚡️
vue.js·react.js·vite
晓得迷路了4 天前
栗子前端技术周刊第 83 期 - Rolldown-Vite、Angular v20、Docusaurus 3.8...
前端·javascript·vite
霸王蟹4 天前
从前端工程化角度解析 Vite 打包策略:为何选择 Rollup 而非 esbuild。
前端·笔记·学习·react.js·vue·rollup·vite
霸王蟹5 天前
React 项目中封装 Excel 导入导出组件:技术分享与实践
前端·笔记·学习·react.js·typescript·excel·vite
萌萌哒草头将军5 天前
🚀🚀🚀这几个为 vue 设计的 vite 插件,你一定要知道!
前端·vue.js·vite
麦当_6 天前
Vite 项目 Icon 解决方案
前端·javascript·vite
萌萌哒草头将军7 天前
🚀🚀🚀 尤雨溪宣布 Vite 发布 Rolldown-Vite 预览版,性能超级快!⚡️⚡️⚡️
前端·vue.js·vite