在 WebPack 中使用 Babel 优化前端项目

阅读时长 5 分钟读完

在 WebPack 中使用 Babel 优化前端项目

随着前端技术的不断更新,我们不得不面对的问题就是浏览器兼容性,即使是基础的 ES6 语法在不同版本的浏览器中表现也不尽相同。而 Babel 工具则是解决这个问题的有效途径,它可以将高级语法转化为低级语法从而兼容运行在各种浏览器中。

那么在 Webpack 中如何使用 Babel 呢?让我们逐步进行讲解。

第一步:安装与配置

安装 babel-loader,babel-core 和 babel-preset-xxx(xxx 取决于你使用的是什么语法),这些都是必需品。

npm install babel-loader babel-core babel-preset-env --save-dev

Webpack 2+ 中支持了几种模块语法,需要使用到 Babel 插件,具体如下:

npm install babel-plugin-syntax-dynamic-import babel-plugin-transform-runtime --save-dev

接着,在 webpack 配置文件 webpack.config.js 中进行相应的配置:

module.exports = { entry: {}, output: {}, resolve: {}, module: { rules: [ { test: /.(js|jsx)$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['env', 'react'], plugins: [ 'syntax-dynamic-import', 'transform-runtime' ] } } } ] } }

第二步:配置 .babelrc 文件

.babelrc 是 Babel 的配置文件,可以在其中的 presets 和 plugins 中配置 Babel。

{ "presets": [ ["env", { "modules": false, "targets": { "browsers": [">1%", "last 2 versions", "not ie <= 8"] } }], "react" ], "plugins": [ "syntax-dynamic-import", "transform-runtime" ] }

这里的 env 前缀代表了环境,这里我们用它来表达 babel-preset-env,也就是 Babel 常用的套餐,它可以根据配置的 targets 来自动选择需要转译的语法。

第三步:就是一些细节问题了

我们可能还需要加一些 options,比如在开发环境下不自动生成文件,但在正式环境下需要生成文件:

{ test: /.(js|jsx)$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['env', 'react'], plugins: [ 'syntax-dynamic-import', 'transform-runtime' ], // 如果是开发环境,则不自动生成文件 cacheDirectory: process.env.NODE_ENV === 'development' } } }

关于 babel-preset-env 的 targets

  • chrome:58
  • edge:14
  • firefox:54
  • safari:10
  • ie:11
  • ios:10
  • node:6.11.5

另外一些语言配置

  • babel-preset-es2015:某种程度上被 env 取代,广泛使用。
  • babel-preset-react:JSX 转化为 JS 的插件。
  • babel-preset-stage-0:当前尚不被 ECMAScript 规范包含在内的新特性。

这里只是一些常用的 Babel 套餐,具体还需根据需求进行配置。

示例代码

在 main.js 文件中写下 ES6 的语法:

const arr = [1, 2, 3]; const [a, b, c] = arr; console.log(a, b, c);

在 babel-loader 编译之前的代码:

const arr = [1, 2, 3]; const [a, b, c] = arr; console.log(a, b, c);

在进行 Babel 编译后的代码:

'use strict';

var arr = [1, 2, 3]; var a = arr[0], b = arr[1], c = arr[2];

console.log(a, b, c);

以上就是在 WebPack 中使用 Babel 优化前端项目的详细步骤,希望可以提高大家的技术水平并为实际开发带来指导意义。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d65090a941bf7134c05631

纠错
反馈

纠错反馈