这2天做了一个实验。在非module传统的网页,要实现改名和避免缓存。原本这个事情早在几年前就做过借助gulp的方式或者fis3 的工具来完成。然而随着nodejs 来到了24版本后,似乎nodejs的版本这事情就变动复杂多变了。
为什么那么麻烦?实际上开发一些静态的网页不需要引入到模块化的开发如import /export的写法,完全是可以省力气。然而有时候喜欢折腾,这个情况就遇到一个任务,如何打包?如何完成这样一个任务。目前能根据工具选择有vite/rollup rolldown ,webpackgulp,parcel,rspack 这些工具。
先说说早期工具,gulp的版本开发已经是落伍了,朋友推荐使用零配置的parcel。这个工具正如传说一样,没有什么配置。虽然官网提供api,我并没有很细看。但是也遇到一些版本变化的问题。由于ai的喂给的数据过于陈旧。很多时候,在和大模型对话过程,就会遇到各种折腾。一方面确实版本差异化,加上不熟悉。这些就导致打包的时候 parcel 1.x和2.x不同。 经过改成2.x 后才完成这样一个小小任务。
然后对于vite 也是可以完成这样一个情况。这个地方有小小改动。如加入module支持,这样日常当中,写css 和js 的方式,改成import 导入。这样打包也会比较快。
这个只是很小的实验样本。利用了import 特性。打包后会出现的方式。这种需要部署到服务器去才能看到。不能直接查看。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>My Vite Site</title><!-- Vite 会自动注入 CSS 和 JS -->
</head>
<body><div id="app"></div><script type="module" src="./src/main.js"></script>
</body>
</html>
这个方式的实验实际上并不会太难。让我觉得意外的,如果不用module 那样写法。配置起来,哪怕AI 理解起来复杂是有点多余。事情会变得复杂,不是变动轻松。
相反各种webpack 的配置直接 劝退人。在完成非module 网页,parcel 可以更加便利。宣传0配置的情况,若果遇到一些改名或者文件夹导出的文件结构,有时候也会不知道如何入手。文档和官网是有提供。我并不是想去研究这个工具深入去。
在这里大大打了一个疑问?为什么把前端搞得那么复杂,让人无奈是,打包和构建的工具那么多,一个个又面对nodejs 的折腾。直接打开网页就能到。这难道不香吗?
其实有时候,面对复杂多变的模块化设计诉求。这些构建工具,parcel 还是vite,rolldown,rspack 也是有很多好处存在。
虽然AI的到来,这些复杂版本和工具化,包括各种工具的衰落期是不是到了一个边缘?统一构建和打包也是一种趋势了。
不得不得提一下nvm 和fnm的工具上,在管理和切换nodejs使用的时候,官方或者社区都有处理这样的事情。多版本已经不是什么秘密。使用过程和安装过程。fnm 虽然是rust编写。使用安装体验直接劝退不少人。
nvm 老牌管理工具,虽然nodejs 的版本,早期一些12 版本,早就不维护了。目前面对每年的版本号都会迭代。前端工具似乎变动越加激烈,稍微不慎,版本号就会让人产生很大老火。package.json 对于每一个库所依赖的情况。nodejs 并不是越新就越好。社区一旦跟不上。很多工具没有生态加持下,一个态度就足以让很多社会化的产品倒下。
rolldown 有更多想法吧。看下一代的打包和构建工具似乎会带来更多惊喜。个人喜欢在rspack 和rolldown 两者来回看了。
不知道你喜欢那些了?
但是我选,就简单傻瓜打包就足够了。那么多配置很多时候都不愿意去研究。天下对webpack 早已吐槽不止。