使用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 版本的文本输入框检查器Input Check
Jul 09 Javascript
一个可以随意添加多个序列的tag函数
Jul 21 Javascript
理解 JavaScript 预解析
Oct 25 Javascript
js 操作符汇总
Nov 08 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
ES6新特征数字、数组、字符串
Oct 01 Javascript
BootStrap tab选项卡使用小结
Aug 09 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
Mar 28 Javascript
JavaScript使用Math.random()生成简单的验证码
Jan 21 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 Javascript
Vue Render函数创建DOM节点代码实例
Jul 08 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
php标签云的实现代码
2012/10/10 PHP
Yii配置文件用法详解
2014/12/04 PHP
php简单分页类实现方法
2015/02/26 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
python中self原理实例分析
2015/04/30 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
用python实现刷点击率的示例代码
2019/02/21 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
医学院校毕业生自荐信范文
2014/01/01 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技