使用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 相关文章推荐
jquery nth-child()选择器的简单应用
Jul 10 Javascript
QUnit jQuery的TDD框架
Nov 04 Javascript
JQuery1.6 使用方法三
Nov 23 Javascript
FF IE浏览器修改标签透明度的方法
Jan 27 Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
May 29 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
用原生js做单页应用
2017/01/17 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
python计算时间差的方法
2015/05/20 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
如何在python中使用selenium的示例
2017/12/26 Python
python的socket编程入门
2018/01/29 Python
python实现排序算法解析
2018/09/08 Python
python看某个模块的版本方法
2018/10/16 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
公务员检讨书
2014/11/01 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python