前端模块化

【背景】在微前端框架中,子应用使用vite打包后在基座中运行时,发生了如下的报错:
1710653321321.png

网上搜了一番,报错解释可能是:当前运行环境不支持使用import导入方式,可能是commonJS和esModule混用吧。但是为什么混用了依然没有头绪。所以又去找了一些模块化的资料来看,记录一下。至于这个问题的解决,先要留一个坑了。

模块化的发展过程

1.浏览器中运行不同的js件,需要进行环境隔离,因此需要进行文件的模块化。
2.requireJS诞生提供模块化方案。
3.node.js诞生,且本身也支持模块化:commonJS。nodejs是使用JavaScript语法的,因此符合ES规范。
4.node的运行环境不是浏览器,随后诞生了针对浏览器环境的模块化:esModule
5.如何在node环境(commonJS环境)中使用esModule?
(1)利用webpack等打包工具:将import语法转为ES5的语法,这样可以被node环境所运行
(2)将所有使用了import和export的文件后缀改为.mjs,在代码中可直接使用import语法。注意esModule和commonJS不可混用
(3)也可以在项目的package.json文件中加上下面的。设置之后目录里面的 JS 脚本,就被解释为ES6 模块。

            {
               "type": "module"
            }

6.浏览器中使用esModule有2种方法:
(1)<script type='module' src='...'/>
(2) 使用打包工具转为ES5的语法
7.浏览器中使用commonJS语法: 使用打包工具

1710656705991.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容