如何创建一个不会在旧版浏览器上引起错误的ES6模块?

时间:2018-10-05 18:16:59

标签: javascript ecmascript-6 module

在我的js文件中,我有以下语句,允许支持ES6的浏览器从包含它的文件中导入函数“ cisf”:

export function cisf ()
{ return 123;
}

但是,我认为以上内容会在某些旧版浏览器上导致错误。不会吗

有没有一种方法可以使ES6导出语句成为条件,以便它不会在较旧的浏览器上引起错误,但仍允许较新的浏览器将代码作为ES6模块加载?

我只想确保我不会在(相对较新的)不兼容ES6的浏览器上引起错误,而不是在较旧的浏览器将如何访问相同代码方面引起错误,因为它们可以在-ES6方式。

我特别想避免产生和维护要加载的文件的两个版本。如果还可以在Node.js上加载这样的模块,而不必创建文件的不同版本,那将是一个不错的选择。

编辑:我特别想知道是否可以在不使用Babel和/或WebPack或类似语言的情况下使用纯Javascript来完成。

2 个答案:

答案 0 :(得分:2)

如果不将其转换为可在较旧的浏览器中运行的ES5,则绝对无法在ES6 / ES7中创建模块(或编写代码)。 您必须使用babel来编译代码。甚至不要浪费您的时间来寻找解决方案。

原因是,较旧的浏览器无法理解新的ES6 / ES7语法。

您应将最终捆绑的代码作为最佳行业惯例发布为ES5(至少直到所有旧版浏览器都没有用户使用为止)

答案 1 :(得分:2)

  

我假设以上情况会在某些旧版浏览器上导致错误。不是吗?

不,不会。较旧的浏览器无法理解<script type="module">,因此不会尝试执行它。就像任何类型未知的脚本一样,它被忽略。不会有错误,它什么也不会做。