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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
Javascript读取cookie函数代码
Oct 16 Javascript
javascript面向对象编程代码
Dec 19 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
Javascript中Promise的四种常用方法总结
Jul 14 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
Vue Router去掉url中默认的锚点#
Aug 01 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 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下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
js 操作css实现代码
2009/06/11 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
python中as用法实例分析
2015/04/30 Python
python 内置函数filter
2017/06/01 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
python实现Zabbix-API监控
2018/09/17 Python
python生成九宫格图片
2018/11/19 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
python实现视频压缩功能
2020/12/18 Python
社区矫正工作方案
2014/06/04 职场文书
励志演讲稿500字
2014/08/21 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
计划生育责任书
2015/05/09 职场文书
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android