作为一名主要从事原生vanilla JS web组件工作的开发者,我想以一个有近30年经验的资深Web开发者的身份,加入我的观点。
就像所有开发工具一样,这些工具都存在一个共同的问题。它们要么不断演进 - 强制你陷入不想要的更新循环中,让你忙于处理早已完成的任务以保持工具的新鲜和安全,要么它们就会“死亡” - 比如
SkateJS。该仓库上次提交是3年前,2019年的未解决问题甚至还没有得到评论。最新发布版本是2017年!
这不仅适用于像你提到的三个建议一样的
开发工具,也适用于整个
构建堆栈工具。
去年,我尝试了一下现代构建工具,以便更好地编写Web组件库。在研究中,我偶然发现了
Snowpack和
Vite.js。我们最初使用的是Snowpack,但当时它似乎仍存在许多稳定性问题,因此我们决定切换到Vite.js。上周,我决定再次尝试Snowpack,只发现它已被
弃用,推荐使用Vite.js:
![enter image description here](https://istack.dev59.com/enObk.webp)
类似这样的事情发生得太频繁了,虽然工具应该帮助您更快、更好地完成工作,但往往您会发现自己正在处理工具的缺陷、更新主库时插件的不兼容性、安全问题……而不是专注于编写业务代码。即使对于像 Storybook 这样的流行工具也是如此。
一旦您开始仅依赖 ECMAScript 本身和浏览器 API,您将会发现大多数事情(例如单页应用程序的路由)都很容易自己开发。
您可能很快就不再需要构建堆栈了。 我们已经广泛支持 HTTP/2,使打包变得不可取,因此只需使用
native ES modules即可。不使用构建工具和不打包还有一个巨大的好处,那就是不再需要生成和依赖映射;更不用说它通过将复杂项目的回转时间保持在毫秒级别,极大地改善了开发体验。
您编写的代码就是运行的代码 - 这是多么惊人的事情啊!当您的调试引导您进入需要花费数年才能理解的代码时,没有第三方黑盒子。
不要使用CSS预处理器,而是使用本地CSS和自定义属性——本地CSS嵌套也将在浏览器中出现。
要完全摆脱构建过程,还有一些缺失的部分需要解决,但这些正在进行中。最重要的是:
一些库已经开始采用这种方式,例如ficus.js。