使用babel转换为es3(符合safari)

时间:2016-10-23 17:09:52

标签: gulp babel

我是巴贝尔的新手。

我这样设置:

.babelrc:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="my-table">
    <tr>
        <th>
            X
        </th>
        <th>Row Name</th>
    </tr>
    <tr>
        <td>
            <input type="checkbox" />
        </td>
        <td>Row 1</td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" />
        </td>
        <td>Row 2</td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" />
        </td>
        <td>Row 3</td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" />
        </td>
        <td>Row 4</td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" />
        </td>
        <td>Row 5</td>
    </tr>
</table>

<div id="dvCSV">
    <button id="sort">Sort</button>
</div>

gulpfile:

{
    "presets": ["es2015", "es2017"]
}

然而,这似乎是编译为es5,这在Safari中并不完全支持。

有没有办法设定目标?那么它可以编译成ES3吗?

1 个答案:

答案 0 :(得分:6)

不,Babel不支持转发到ES3。

您的选择是:

  1. 编译为ES5,然后使用ES5 shim

  2. 使用其他转换器。 Google Closure CompilerTypeScript都支持ES6作为输入,ES3作为输出。

  3. 注意:&#34; ES5&#34; Babel生成的代码可能无法在所有浏览器中使用,因为它可能包含ES5中不存在的功能(有关详细信息,请参阅caveats)。换句话说,由于您甚至要定位旧版浏览器,因此您还需要Babel polyfill以及ES5垫片。