webpack+babel常见问题

本文详细介绍Webpack中Babel配置的两种方法,并介绍如何通过Babel polyfill来兼容旧版浏览器,同时提供排除node_modules文件夹的方法以提高编译速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习webpack打包的时候,在babel上踩了几个坑,领导又要兼容IE,所以在这里写一下吧
1. 首先是在使用babel-loader的时候,需要配置,如果没有配置的情况下,IE会报 语法错误的报错,所以需要配置一下

第一种配置方法是直接在webpack.config.js中写出来

        {
            test:/\.js$/,
            use: {
                loader: 'babel-loader',
                options: {
                  presets: ['env']
                }
              },
            include: path.resolve(__dirname,'src')    
        },

第二种配置方法是在项目根目录下新建一个配置文件.babelrc

这里写图片描述

配置如下

         {
            "presets": [
              "latest",
              "react",
              "stage-2"
            ],
            "plugins": []
          }
2.babel-polyfill

Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API ,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign)都不会转码。Babel 默认不转码的 API 非常多,详细清单可以查看 definitions.js 文件

所以需要安装polyfill

$ npm install -save-dev babel-polyfill

接下来有三种引入方式
1. 在webpack配置文件中引入

module.exports = { entry: ['babel-polyfill', './app/js'] }

2. 在入口js文件中引用

import "babel-polyfill"

3. 同是js文件中引用

require("babel-polyfill");
3.babel会编译会包含node_modules

node_module中有大量的js文件,编译的时候会很慢,所以应该排除这个文件夹,有两种解决方法

  1. 只包含要编译的文件夹

      include: path.resolve(__dirname,'src')
    
  2. 排除node_modules

      exclude:/node_modules/
    
### Vue 3 和 Babel 的集成与配置 在 Vue 3 中使用 Babel 是为了支持现代 JavaScript 特性和语法转换,从而兼容不同的浏览器环境。以下是关于如何在 Vue 3 项目中正确配置 Babel 的说明。 #### 安装必要的依赖项 要实现 Vue 3 和 Babel 的集成,首先需要安装一些核心依赖项。这些依赖项包括 `@babel/core`、`@babel/cli` 和特定于 Vue 3 的插件 `@vue/babel-plugin-jsx`[^1]: ```bash npm install --save-dev @babel/core @babel/cli @vue/babel-plugin-jsx ``` #### 创建 `.babelrc` 文件 `.babelrc` 文件用于定义 Babel 的配置选项。对于 Vue 3 项目,可以按照如下方式设置该文件的内容: ```json { "presets": [ ["@babel/preset-env", { "targets": "> 0.25%, not dead" }] ], "plugins": [ "@vue/babel-plugin-jsx" ] } ``` 上述配置中的 `"@babel/preset-env"` 是一个预设集合,它允许开发者指定目标浏览器范围并自动加载所需的 polyfill 或转译规则[^2]。而 `"@vue/babel-plugin-jsx"` 则专门针对 Vue 3 提供 JSX 支持。 #### Webpack 配置调整 如果项目基于 Webpack 构建,则还需要确保其能够识别和处理通过 Babel 转换后的代码。通常情况下,在 Webpack 配置中加入 `babel-loader` 即可完成此操作[^3]: ```javascript module.exports = { module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'], plugins: ['@vue/babel-plugin-jsx'] } } }, { test: /\.vue$/, loader: 'vue-loader' } ] }, resolve: { extensions: ['.js', '.vue'] } }; ``` 以上配置片段展示了如何利用 `babel-loader` 对 `.js` 文件应用 Babel 处理逻辑,并同时保留对单文件组件 (SFC) 的解析能力。 #### 使用参数 `transformOn` 当启用 `@vue/babel-plugin-jsx` 插件时,可以通过传递额外的选项来定制行为。例如,开启 `transformOn` 可以让插件更灵活地处理自定义事件绑定等问题: ```json { "plugins": [["@vue/babel-plugin-jsx", { "transformOn": true }]] } ``` 这一步并非强制性需求,但在某些复杂场景下可能会带来便利。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值