使用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 无符号右移运算符
Apr 17 Javascript
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
Apr 02 Javascript
jquery购物车实时结算特效实现思路
Sep 23 Javascript
Google (Local) Search API的简单使用介绍
Nov 28 Javascript
JavaScript实现横向滑出的多级菜单效果
Oct 09 Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
vue实现输入框自动跳转功能
May 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中数组定义的几种方法
2013/09/01 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
python删除服务器文件代码示例
2018/02/09 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
大学本科毕业生求职信范文
2013/12/18 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
PHP命令行与定时任务
2021/04/01 PHP
MySQL约束超详解
2021/09/04 MySQL
利用Redis实现点赞功能的示例代码
2022/06/28 Redis