在我的js文件中,我有以下语句,允许支持ES6的浏览器从包含它的文件中导入函数“ cisf”:
export function cisf ()
{ return 123;
}
但是,我认为以上内容会在某些旧版浏览器上导致错误。不会吗
有没有一种方法可以使ES6导出语句成为条件,以便它不会在较旧的浏览器上引起错误,但仍允许较新的浏览器将代码作为ES6模块加载?
我只想确保我不会在(相对较新的)不兼容ES6的浏览器上引起错误,而不是在较旧的浏览器将如何访问相同代码方面引起错误,因为它们可以在-ES6方式。
我特别想避免产生和维护要加载的文件的两个版本。如果还可以在Node.js上加载这样的模块,而不必创建文件的不同版本,那将是一个不错的选择。
编辑:我特别想知道是否可以在不使用Babel和/或WebPack或类似语言的情况下使用纯Javascript来完成。
答案 0 :(得分:2)
如果不将其转换为可在较旧的浏览器中运行的ES5,则绝对无法在ES6 / ES7中创建模块(或编写代码)。 您必须使用babel来编译代码。甚至不要浪费您的时间来寻找解决方案。
原因是,较旧的浏览器无法理解新的ES6 / ES7语法。
您应将最终捆绑的代码作为最佳行业惯例发布为ES5(至少直到所有旧版浏览器都没有用户使用为止)
答案 1 :(得分:2)
我假设以上情况会在某些旧版浏览器上导致错误。不是吗?
不,不会。较旧的浏览器无法理解<script type="module">
,因此不会尝试执行它。就像任何类型未知的脚本一样,它被忽略。不会有错误,它什么也不会做。