困难是前进的动力 — ESM规范的崛起

前端发展到如今,社区生态已经非常丰富。

在无数开源大神的努力下,很多前端开发的痛点(比如「静态类型检查」、「浏览器兼容性」)早已有了事实上的标准解决方案(比如TS、babel)。

然而,在这繁荣之下,有一个日常开发不易感知的问题:

  • 模块化规范的混乱

你可曾遇到过莫名其妙的bug,在多方搜资源,反复验证,耗费数个小时终于发现:

原来是某个包导出的是CJS,而项目使用ESM导致。

比如这个例子:记一次打包压缩报错[1]

如果你觉得这是个很容易发现的问题,再考虑结合上node_modules的层层依赖呢?

这个问题,揭开了模块化规范间斗争与博弈的冰山一角。

作为现代前端工程化的基石,模块化规范有太多值得深究的内容。

我会花几篇文章来讲解模块化规范。本文是第一篇,会围绕模块化规范的演进展开。

正文

如果问十年前的前端最头疼的是什么?一定是浏览器兼容性。

随着babel等编译工具出现,兼容性逐渐被工程化方案解决(ES6+编译为ES5)。

不仅是「兼容性」问题,DSL(如JSX、VUE的模版语法)、代码压缩、代码静态检查(TS)等日常开发的刚需都能在工程化方案中找到解决办法。

如果将当今繁荣的前端工程化生态比喻为一座大厦,那大厦的地基一定是「模块化规范」。

现代JS代码都是基于「模块化规范」组织起来,让我们从下往上来看看这座大厦:

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章