解决IE识别ES6语法

使用jq做项目时,混用了部分es6的语法,导致在IE下项目无法正常运行,于是乎,便在网上找到了下面两种方法,并尝试了一下:

一、直接在浏览器中引入browser.min.js,并且将script的type设置成text/babel

尝试了在网上下载browser.min.js,结果使用时会报错,所以使用下面的方式生成browser.min.js:
1、安装Node
2、node安装成功后,使用npm安装babel
打开命令提示符窗口输入命令:npm install babel-core@5,然后回车,安装成功后在电脑盘中找到目录:C:\Users\Administrator\node_modules\babel-core,在这个目录里面我们找到babel的浏览器版本browser.js(未压缩版)和browser.min.js(压缩版)
3、使用browser.min.js

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <link rel="stylesheet" type="text/css" href="css/style.css" />
        <!-- 引入browser.min.js -->
        <script src="js/browser.min.js"></script>
    </head>
    <body>
        <input type="button" value="测试按钮" onclick="aa()">
    </body>
</html>
<!-- script标签的 type 设置为 text/babel -->
<script type="text/babel">
	// 点击 测试按钮 时,控制台报:aa未定义
    function aa () {
        alert('测试')
    }

    console.log('=====')
    const arr1=[1,2,3]
    const arr2=[...arr1]
    console.log(arr2);              // [1,2,3]
    let arr3=arr2.map((x)=>x*2)
    console.log(arr3);              // [2,4,6]
    const [x,y,z]=[[...arr3]]
    console.log(x);                 // [2,4,6]

    class Point {
        constructor(x, y) {
            this.x = x;
            this.y = y;
        }

        toString() {
            return '(' + this.x + ', ' + this.y + ')';
        }
    }
    console.log(new Point(1, 2).toString());

</script>

注: 这种方法虽然让ie识别了es6的语法,但是text/babel中的代码不被浏览器当做javascript进行解析,所以当点击input时,浏览器会报 aa未定义的 错误

二、通过babel进行es6转es5

1、新建工程初始化项目
新建项目文件夹并起名为es6,然后在里面创建src、dist两个文件夹(其中src目录中为项目源码,即待转换的代码;dist目录中为转换完成的代码),结构如下图:
在这里插入图片描述
2、初始化项目
打开命令提示符窗口,并进入我的项目文件夹中,输入命令:npm init进行初始化项目,按照提示输如相应内容,初始化成功后,项目文件夹中会生成package.json文件
3、安装babel工具
全局安装命令: npm install -g babel-cli
或者
将babel安装在项目中,需要在项目根目录下执行命令:npm install babel-cli --save-dev;同时它会自动在package.json文件中的devDependencies中加入babel-cli

建议使用将babel安装在项目中,防止不同环境下的babel版本不同而报错

4、babel安装成功后,需要安装转换包才能进行转换
输入命令:
npm install --save-dev babel-preset-es2015( ES2015转码规则 )

完成第3、4步后,package.json中会自动添加如下配置信息:
在这里插入图片描述
5、新建 .babelrc
在项目根目录创建.babelrc文件,该文件为babel的配置文件,用来设置转码规则和插件,然后将上面安装的转码规则加入到presets中,内容如下:
在这里插入图片描述
6、进行转换
在命令行窗口输入命令: babel src --out-dir dist或者babel src -d dist可以从src目录转换到dist
或者
通过在package.json文件中设置别名,然后在命令串口输入命令:npm run build来进行编译,如下图:
在这里插入图片描述

babel的基本用法:

  1. 单文件转码:
    将转码结果写入一个文件,通过--out-file-o参数指定输出文件,命令为:
    babel example.js --out-file compiled.js
    或者
    babel example.js -o compiled.js
  2. 整个目录转码:
    通过--out-dir-d参数指定输出目录,命令为:
    babel src --out-dir lib
    或者
    babel src -d lib
  3. 生成source map文件:
    babel src -d lib -s

注: 这种方法只能转换单独的js文件,对于写在html中的js无法转换

总结:对于需要ie兼容的,尽量使用es5的语法,或者对于上面两种方法所碰到的问题,有更好的解决方法的还望告知一下,谢谢…

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值