webpack4与babel配合使es6代码可运行于低版本浏览器的方法


Posted in Javascript onOctober 12, 2018

使用es6+新语法编写代码,可是不能运行于低版本浏览器,需要将语法转换成es5的。那就借助babel转换,再加上webpack打包,实现代码的转换。

转换包括两部分:语法和API

let、const这些是新语法。

new promise()等这些是新API。

简单代码

类库 utils.js

const name = 'weiqinl'

let year = new Date().getFullYear()

export { name, year }

index.js

import _ from 'lodash'

import { name, year } from './utils'



Promise.resolve(year).then(value => {

 console.log(`${name} - ${value} - ${_.add(1, 2)}`)

})

babel转换

安装babel编译器和对应的运行时环境

npm install -D @babel/core @babel/preset-env @babel/plugin-transform-runtime @babel/polyfill

并新建 .babelrc 文件,里面可以配置很多东西,内容为:

{

 "presets": [

  ["@babel/preset-env", {

   "useBuiltIns": "usage",

   "modules": false

  }]

 ],

 "plugins": [

  [

   "@babel/plugin-transform-runtime", {

    "corejs": false,

    "helpers": false,

    "regenerator": false,

    "useESModules": false

   }

  ]

 ],

 "comments": false

}

webpack构建

webpack4,可以零配置构建项目,那是因为它的很多配置值都默认了。在这里,我们需要自己配置。

创建一个 webpack.config.js 文件

const path = require('path');

module.exports = {

 mode: "production",

 entry: ['@babel/polyfill', './src/index.js'],

 output: {

  path: path.resolve(__dirname, 'dist'),

  filename: '[name].bundle.js'

 },

 module: {

  rules: [{

   test: /\.js$/,

   include: [

    path.resolve(__dirname, 'src')

   ],

   exclude: /(node_modules|bower_components)/,

   loader: "babel-loader",

  }]

 }

}

使用

webpack构建打包好的js文件,我们将其引入到html文件。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>webpack-babel-es6</title>
</head>
<body>
 webpack构建由babel转码的es6语法,支持es6语法和API<br />
 请查看浏览器控制台
 <script src="./dist/main.bundle.js"></script>
</body>
</html>

运行该html,可以看到控制台有内容输出 weiqinl - 2018 - 3

最后的目录结构:

webpack4与babel配合使es6代码可运行于低版本浏览器的方法

可以git查看源码https://github.com/weiqinl/demo/tree/master/webpack-bable-es6

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
简介JavaScript中的setHours()方法的使用
Jun 11 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 Javascript
flag和jq on 的绑定多个对象和方法(必看)
Feb 27 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
jQuery UI实现动画效果代码分享
Aug 19 jQuery
浅析JS中什么是自定义react数据验证组件
Oct 19 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 Javascript
JavaScript oncopy事件用法实例解析
May 13 Javascript
在JS循环中使用async/await的方法
Oct 12 #Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 #Javascript
vue项目环境变量配置的实现方法
Oct 12 #Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 #Javascript
原生JS实现轮播图效果
Oct 12 #Javascript
详解KOA2如何手写中间件(装饰器模式)
Oct 11 #Javascript
Element Input组件分析小结
Oct 11 #Javascript
You might like
php根据生日计算年龄的方法
2015/07/13 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
js命名空间写法示例
2015/12/18 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
什么是python类属性
2020/06/10 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
公司董事长职责
2013/12/12 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
音乐教师求职信范文
2015/03/20 职场文书
停发工资证明范本
2015/06/12 职场文书
2016国培研修心得体会
2016/01/08 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL