babel-loader用的最多的两个功能其实就是一个是解析es6+到es5,另一个就是解析jsx
这一次我打算亲自试试:创建一个只有webpack基础配置的文件夹,首先我尝试,是不是没有babel-loader的配置,是不能解析es6的,于是我写了这么一段代码,
let a=1;
document.write(a)
于是我使用webpack进行压缩,的到的结果竟然是document.write(1)! 为什么,不是不能解析es6吗,那么他为什么能够理解,于是我开始寻找答案,找到了,下面是解释:
这是因为生产环境的压缩原因,所以我们这里使用开发环境,会更加准确,终于,在开发环境下,不使用es6解析配置就和理想里面一样
eval("{let a = 1;\ndocument.write(a);\n\n//# sourceURL=webpack://my-webpack/./src/word.js?\n}");
而配置了@babel/preset-env
eval("{var a = 1;\ndocument.write(a);\n\n//# sourceURL=webpack://my-webpack/./src/word.js?\n}");
显而易见
下面就是测试对于jsx语法的支持,要配置,如果没有配置直接写在js里面的话就是这样:
如果加了@babel/preset-react配置就可以,就可以,但是要注意,对于不同版本,比如说17的渲染就是ReactDOM.render但是如果是18就是 createRoot,还有就是如果使用的是函数组件,即使没有使用React也要引入