使用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 相关文章推荐
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 Javascript
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
js 连接数据库如何操作数据库中的数据
Nov 23 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
JQuery实现样式设置、追加、移除与切换的方法
Jun 11 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
Vue实现boradcast和dispatch的示例
Nov 13 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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
如何开始收听短波广播
2021/03/01 无线电
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
jQuery中children()方法用法实例
2015/01/07 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
建筑工程管理专业自荐信范文
2013/12/28 职场文书
函授本科自我鉴定
2014/02/04 职场文书
会计岗位职责模板
2014/03/12 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
2014年商场工作总结
2014/11/22 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
小浪底导游词
2015/02/12 职场文书
现役军人家属慰问信
2015/03/24 职场文书
遗嘱格式范本
2015/08/07 职场文书