使用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 相关文章推荐
js 获取后台的字段 改变 checkbox的被选中的状态 代码
Jun 05 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JavaScript实现多种排序算法
Feb 24 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
angularJS开发注意事项
May 26 Javascript
详解基于webpack&gettext的前端多语言方案
Jan 29 Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 31 Javascript
ES11新增的这9个新特性,你都掌握了吗
Oct 15 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
日本十大惊悚动漫
2020/03/04 日漫
php读取数据库信息的几种方法
2008/05/24 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
javascript的内存管理详解
2013/08/07 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
利用node.js开发cli的完整步骤
2020/12/29 Javascript
Python中__new__与__init__方法的区别详解
2015/05/04 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
python中p-value的实现方式
2019/12/16 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
优秀班集体先进事迹材料
2014/05/28 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
庆元旦演讲稿
2014/09/15 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
学生会副主席竞选稿
2015/11/19 职场文书