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 相关文章推荐
Javascript 各浏览器的 Javascript 效率对比
Jan 23 Javascript
JavaScript 学习点滴记录
Apr 24 Javascript
javascript 数组学习资料收集
Apr 11 Javascript
按下Enter焦点移至下一个控件的实现js代码
Dec 11 Javascript
可自定义速度的js图片无缝滚动示例分享
Jan 20 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
最常见和最有用的字符串相关的方法详解
Feb 06 Javascript
JQuery中Ajax的操作完整例子
Mar 07 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 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
flash用php连接数据库的代码
2011/04/21 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
python Xpath语法的使用
2020/11/26 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
田径运动会开幕式及主持词
2014/03/28 职场文书
爱护花草树木的标语
2014/06/11 职场文书
植物生产学专业求职信
2014/08/08 职场文书
表扬通报怎么写
2015/01/16 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书