请问老师关于esm模块的大包
来源:1-1 导学(不看错过1个亿)

hy_wang
2021-09-19
老师重新开一个问题哈,上一个问题你可以没有明白我的意思。
老师这个是我安装antd后的,咱们平常业务引用她就是import { Button } from antd
老师我的疑问就是,咱们平常这样引入走的是esm
的方式。而在node_modules
引入的antd
也是esm的方式进行的编写。
当我们进行项目build
的时候,其实es
的模块肯定是会被编译的。但是我们并不会编译antd
的这些esm
代码。此时我有点疑问,既然编译后antd
中的模块仍然还是export
的方法。那我们引用它不应该报错了吗。
因为按照我的理解,babel-loader
其实在新版默认已经不会处理node_modules
中的内容了。
但是老师我发现node_modules antd
的button.js
中也存在import xxx from 'xxx'
的代码。我还是不太明白
写回答
1回答
-
同学你好
我再次理解一下你的意思
当我们进行项目
build
的时候,其实es
的模块肯定是会被编译的。但是我们并不会编译antd
的这些esm
代码。你说的 build 编译,我认为可以是 webpack 以及 rollup 的 build 过程,它们是会编译 esm 代码的,它们会将整个入口文件进行分析,按照你打包的目的(普通的还是要打包成 library)生成最后的代码。一般是一个或者几个 js 文件。
babel 不是打包工具,它是 compiler,它做的是将高级(ESnext)的js 转换成兼容性的代码(ES5),所以它仅仅是打包的一个环节(babel-loader),而且并不是必须的。
012021-09-22
相似问题