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 相关文章推荐
使用ExtJS技术实现的拖动树结点
Aug 05 Javascript
javascript实现的DES加密示例
Oct 30 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
May 17 Javascript
BootStrap入门教程(三)之响应式原理
Sep 19 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
vue的Virtual Dom实现snabbdom解密
May 03 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
Apr 04 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
Vue实现计算器计算效果
Aug 17 Javascript
vscode中使用npm安装babel的方法
Aug 02 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添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python基础教程之while循环
2019/08/14 Python
python 求定积分和不定积分示例
2019/11/20 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
三分钟自我介绍演讲稿
2014/08/21 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers