使用webpack将ES6转化ES5的实现方法


Posted in Javascript onOctober 13, 2019

babel使用

打开babel官网,按教程安装babel

安装

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

配置rules

module: {
 rules: [
  { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
 ]
}

生成 .babelrc文件

{
 "presets": ["@babel/preset-env"]
}

此时webpack已经能正确的将高版本的js语法转为低版本的语法,但是对于新增的api并不会转化,如promise。这时我们就需要其他的插件

使用polyfill插件,对于babel=>7.4.0该方法弃用

安装

npm install --save @babel/polyfill

修改 .babelrc

{
 "presets": [
  [
   "@babel/preset-env",
   {
     "useBuiltIns":"usage" // 只转化使用了的API
   }
  ]
 ]
}

使用 在需要转换的文件里引入polyfill

import "@babel/polyfill";

@babel/polyfill 和 @babel/preset-env 的关系

@babel/preset-env 中与 @babel/polyfill 的相关参数有 targets 和 useBuiltIns 两个

targets: 支持的目标浏览器的列表

useBuiltIns: 参数有 “entry”、”usage”、false 三个值。默认值是false,此参数决定了babel打包时如何处理@babel/polyfilll 语句。

“entry”: 会将文件中 import‘@babel/polyfilll'语句 结合 targets ,转换为一系列引入语句,去掉目标浏览器已支持的polyfilll 模块,不管代码里有没有用到,只要目标浏览器不支持都会引入对应的polyfilll 模块。

“usage”: 不需要手动在代码里写import‘@babel/polyfilll',打包时会自动根据实际代码的使用情况,结合 targets 引入代码里实际用到 部分 polyfilll 模块

false: 对 import‘@babel/polyfilll'不作任何处理,也不会自动引入 polyfilll 模块

使用plugin-transform-runtime

安装

npm install --save-dev @babel/plugin-transform-runtime

修改 .babelrc

{
"presets": [
  [
   "@babel/preset-env"
  ]
 ],
 "plugins": [
  [
   "@babel/plugin-transform-runtime",
   {
    "absoluteRuntime": false,
    "corejs": 3,
    "helpers": true,
    "regenerator": true,
    "useESModules": false
   }
  ]
 ]
}

注意上面corejs设置项,不同的值需要不同的依赖包

corejs的值 需要安装的依赖包
false npm install --save @babel/runtim
2 npm install --save @babel/runtime-corejs2
3 npm install --save @babel/runtime-corejs3

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
Feb 28 Javascript
JQuery中serialize() 序列化
Mar 13 Javascript
JavaScript把数组作为堆栈使用的方法
Mar 20 Javascript
JavaScript基本的输出和嵌入式写法教程
Oct 20 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
JavaScript基础知识点归纳(推荐)
Jul 09 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
基于jQuery实现无缝轮播与左右点击效果
May 13 jQuery
JavaScript常用数学函数用法示例
May 14 Javascript
了解ESlint和其相关操作小结
May 21 Javascript
vue中uni-app 实现小程序登录注册功能
Oct 12 #Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 #jQuery
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 #Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 #Javascript
vue中添加与删除关键字搜索功能
Oct 12 #Javascript
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 #jQuery
jquery 时间戳转日期过程详解
Oct 12 #jQuery
You might like
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
德劲1103二次变频版的打磨
2021/03/02 无线电
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
解放web程序员的输入验证
2006/10/06 Javascript
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
pycharm执行python时,填写参数的方法
2018/10/29 Python
Python装饰器用法实例分析
2019/01/14 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
Python实现动态循环输出文字功能
2020/05/07 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
DTD的含义以及作用
2014/01/26 面试题
管事部库房保管员岗位职责
2014/02/21 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
重阳节主题班会
2015/08/17 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL