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 相关文章推荐
了解jQuery技巧来提高你的代码
Jan 08 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 Javascript
JavaScript_object基础入门(必看篇)
Jun 13 Javascript
js获取当前页的URL与window.location.href简单方法
Feb 13 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
图文介绍Vue父组件向子组件传值
Feb 17 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
Mar 06 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 Javascript
vue el-upload上传文件的示例代码
Dec 21 Vue.js
在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高手需要要掌握的知识点
2014/08/21 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
jQuery each()方法的使用方法
2010/03/18 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
轮播的简单实现方法
2016/07/28 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
Python的词法分析与语法分析
2013/05/18 Python
Python help()函数用法详解
2014/03/11 Python
python开发简易版在线音乐播放器
2017/03/03 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
Shell脚本如何向终端输出信息
2014/04/25 面试题
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
人力资源主管职责范本
2014/03/05 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
优秀护士先进事迹
2014/05/08 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
Python如何使用循环结构和分支结构
2022/04/13 Python