使用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对数组的操作技巧整理
Mar 25 Javascript
Node.js安装教程和NPM包管理器使用详解
Aug 16 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
浅谈javascript的Array.prototype.slice.call
Aug 31 Javascript
JS产生随机数的用法小结
Dec 10 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 Javascript
Bootstrap多级菜单的实现代码
May 23 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
浅谈Vue组件及组件的注册方法
Aug 24 Javascript
vue移动端模态框(可传参)的实现
Nov 20 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 ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
Python定时器实例代码
2017/11/01 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
python dlib人脸识别代码实例
2019/04/04 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
竞聘演讲稿开场白
2014/08/25 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
面试感谢信范文
2015/01/22 职场文书
学习党章心得体会2016
2016/01/15 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技