webpack4与babel配合使es6代码可运行于低版本浏览器
2023-12-05 17:47:01
使用es6+新语法编写代码,可是不能运行于低版本浏览器,需要将语法转换成es5的。那就借助babel7转换,再加上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 babel-loader
并新建.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
npm i webpack webpack-cli -D
然后创建一个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
最后的目录结构:
可以git查看源码https://github.com/weiqinl/demo/tree/master/webpack-bable-es6
[完]
最新文章
- webform简单、复合控件
- 为Office365增加密码过期自动提醒功能
- 简介 jCanvas:当 jQuery遇上HTML5 Canvas
- Spring MVC上传文件
- Mediator(中介者)-对象行为型模式
- Cuckoo for Hashing_双哈希表
- linux创建git远程仓库
- POJ-3580-SuperMemo(splay的各种操作)
- 使用2to3转换python代码
- hdu 1111 Secret Code
- 去确认CP210x UART Bridge的USB的VID和PID
- IOS中的数据存储 简单总结
- IOS引导页的编写
- 解读 IoC 框架 InversifyJS
- java 11 标准Java异步HTTP客户端
- 快速干掉Windows Defender
- int,int32_t,int64_t
- DataGridView中进行增删改查
- bzoj 2202 [HNOI2010] Bounce 弹飞绵羊(分块)
- 基金 、 社保和QFII等机构的重仓股排名评测
热门文章
- 洛谷P5155 [USACO18DEC]Balance Beam(期望,凸包)
- django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
- php中的md5()的安全问题
- 【CH2401】送礼物
- 退役之战- SDOI
- Windows7系统基础操作
- MySql分页查询慢|这里告诉你答案
- DirectX11 With Windows SDK--24 Render-To-Texture(RTT)技术的应用
- python之路(5)文件操作(open)
- H5_0003:JS禁用调试,禁用右键,监听F12事件的方法