axure9 html文件使用ie打开图片无法显示_57. Vue webpack4中babel基本使用

webpack 中 babel 的配置

在日常开发中,如果在项目中使用ES6、ES7等高级语法进行开发,那么浏览器是无法识别的。这时候就需要使用 babel 进行语法的转化,将其转化为 ES5 的语法,提供浏览器识别。

babel的官网地址:https://www.babeljs.cn/

安装babel的说明

参考文献:https://www.cnblogs.com/guolao/archive/2019/07/25/11244758.html

官网安装说明:https://www.babeljs.cn/setup#installation

171d55f1632ff52e82c37fd6993088d7.png
image-20200310074442456

Babel 提供了各种组件的安装方式,在这里我们选择 webpack 的安装方式。

5f7e99ca782ba900cbf6a4e4b8330570.png
image-20200310074542715

选择 webpack 之后,则会显示对应组件的安装方式,下面我们按照官网提供的方式来安装一下。

不过在此之前,先来初始化一个webpack的构建文件结构。

构建webpack的文件结构

d4bddb6922cebfb6c607df1265c477e5.png
image-20200310101611653

初始化 package.json 文件

package.json 使用存储记录 npm 安装相关包版本即可的。执行以下命令进行初始化:

npm init -y

执行如下:

676f7df9a213011a0b16fc201a98c6f0.png
image-20200310102714952

安装webpack

安装webpack工具至本地项目中:

npm i -D webpack webpack-cli

执行如下:

a0d7bb50c33fc6cac6db92b959fadca6.png
image-20200310103131058

采用webpack的配置文件设置输出打包文件

本次的构建目的只是为了验证高级js语法在安装babel之后能否正常编译执行,所以我就不在 index.html 中写内容了。

在项目根目录创建、编写配置文件 webpack.config.js

74bc512c742ffaece8c27c8eb9df207c.png
image-20200310104308841
const path = require('path');

// 这个配置文件,起始就是一个 JS 文件,通过 Node 中的模块操作,向外暴露了一个 配置对象
module.exports = {
// 在配置文件中,需要手动指定 入口 和 出口
entry: path.join(__dirname, './src/main.js'),// 入口,表示,要使用 webpack 打包哪个文件
output: { // 输出文件相关的配置
path: path.join(__dirname, './dist'), // 指定 打包好的文件,输出到哪个目录中去
filename: 'bundle.js' // 这是指定 输出的文件的名称
},
};

一般来说,现在就可以执行 webpack 命令进行打包了,但是我在上面将 webpack 安装到本地项目中,所以还需要编写 npm 执行内部命令的脚本,才能够执行。

在 package.json 配置执行本地 webpack 执行命令

bbfbda55eeee32b126d038608b74dd1c.png
image-20200310104736935
  "scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack"
},

好了,配置了这个之后,就可以使用 npm run 脚本名称 来执行了,执行如下:

npm run dev
54ab1fa6a4ac436f5954fb5d7aeec1f4.png
image-20200310105202746

可以看到已经可以成功编辑打包出 bundle.js 压缩文件了。

编写main.js打印信息,设置 index.html 引用 bundle.js 脚本

首先在main.js 写一个打印信息,如下:

095c8fd2b55f55949b789a088d205dbc.png
image-20200310105815422
console.log("hello world");

然后在index.html引入bundle.js,如下:

f04cead00ed04959407481aa6a250f7d.png
image-20200310110002635
span style="line-height: 26px;">html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>

<script src="../dist/bundle.js">script>

body>
html>

此时,执行npm run dev打包一个新的 bundle.js ,然后打开 index.html,查看能否正常打印信息,如下:

37b0b6e133b8eba1df815df7d043c23f.png
image-20200310110124629

那么下面就要开始安装babel,然后使用高级一些的语法来看看能否编译成功。

在main.js中写入ES6语法,查看打印信息

在安装babe将ES6\ES7转化低于语法ES5之前,我先经过测试,发现使用ES6的语法在chrome浏览器是能够支持运行的,而在IE则会报语法错误,如下:

main.js 代码如下:

08e6270310014c85dff4d1c8f943d938.png
image-20200310112004939
// ES5
console.log("hello world es5");

// ES6
class Bar {
doStuff() {
console.log('stuff bar');
}
}

var b = new Bar();
b.doStuff(); // "stuff"

// ES6
class Foo {
static classMethod() {
return 'hello static foo';
}
}

console.log(Foo.classMethod()); // 'hello'

下面再来运行npm run dev打包编译 bundle.js。

首先在chrome浏览器查看index.html,查看打印信息如下:

1b3c70d47ee5717891638b1810573687.png
image-20200310112156806

说明 chrome 浏览器默认是支持 es6 语法的。

然后在ie浏览器查看index.html,查看打印信息如下:

bc56dd95dd56256ef7de7ce087c64232.png
image-20200310112320530

说明 ie 默认是不支持 es6 语法的。

那么下面,我们开始来安装配置babel,看看后续 ie 浏览器能否支持。

安装babel

安装babel至本地项目中:

cnpm i -D babel-loader @babel/core

执行如下:

075a08efaabea84fb515cce226349b80.png
image-20200310103402994

为了转化 es6 代码,要安装 babel 插件:

cnpm i -D @babel/preset-env @babel/polyfill

执行如下:

a19dbf5a2c354e9ad00f040fa2ba707d.png
image-20200310112813862

在根目录下创建 babel 配置文件 .babelrc:

{
"presets": ["@babel/preset-env"]
}
cead3a052d8e2ffafa47b0c7a6dd11bf.png
image-20200310123025391

配置webpack.config.js设置使用babel的规则

module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
]
}
817cb4a6f14e72f7b50db4d9b3149ffb.png
image-20200310123057846

再次在ie浏览器确认高级语法能否识别

好了,下面来在执行npm run dev打包编译一下,看看 ie浏览器能否识别打印高级语法的信息,如下:

0c16f639ccdcabb6e19e0e50a6917eb9.png
image-20200310123508502

防止全局污染

值得注意的是babel打包编译的时候,如果是写第三方库或者框架,使用 polyfill 可能会造成全局污染,所以可以使用 @babel/plugin-transform-runtime 防止全局污染。

安装:

npm i -D @babel/plugin-transform-runtime
npm i -S @babel/runtime @babel/runtime-corejs2

注意:使用 -D 也就是 --save-dev,将其安装好测试开发环境, 而 -S 也就是 --save ,将其安装到生产环境的依赖中。

运行如下:

512f28c7eae629c88d13bc7527a01868.png
image-20200310124527252

增加 babel 配置:

d38f4e24ec192901b444924850d20309.png
image-20200311225602855
{
"presets": ["@babel/preset-env"],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": 2,
"helpers": true,
"regenerator": true,
"useESModules": false
}
]
]
}

注意:"corejs": 2, // 这里设置2是因为上面安装的版本是

「更多精彩原创Devops文章,快来关注我的公众号:【Devops社群】 吧:」

50376cce8d77984be6c70ad86e897123.gif
image

点击下面,查看更多Vue系列文章

61dd1222d56845485ed144e8f5e6c70f.png2a30883949e739dd5b3d8b4589cf4600.gif

6655928734d23fa49a629f6ac0ec892f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值