我正在阅读ES2015
个模块,并试图确保我理解这个新功能。
由于没有类似"use strict"
的内容,浏览器如何确定.js文件是ES2015
模块v。一个带有一堆全局变量的ES5
文件?只是至少出现了一个“export
”声明吗?
// This file is interpreted as ES5 with globals
function fun1() {...}
function fun1() {...}
// This file is interpreted as ES2015 module
function fun1() {...}
function fun1() {...}
export default function(){...}
答案 0 :(得分:2)
由于没有类似“use strict”的内容,浏览器如何确定.js文件是ES2015模块vs.s.带有一堆全局变量的ES5文件?
浏览器如何确定这不是,据我所知,尚未确定。有人提到module
元素与script
元素不同,但没有module
元素defined (yet?)。目前尚不清楚是否需要module
元素; script
元素可以使用import
,并且可以从另一个文件加载模块而无需新的元素类型。但这是观看这个空间的问题; MDN says目前还没有浏览器支持import
。但它可能是因为它在非浏览器世界中的使用方式,并允许捆绑。
在非浏览器世界中,它取决于它的使用方式:如果它是import
的目标,则在导入时将其视为模块。如果您像其他任何脚本一样加载和运行它,它就像任何其他脚本一样对待。
答案 1 :(得分:0)
根据this page,模块无法进入script
标记内,它们必须位于module
个标记内。因此,script
标记加载的代码不能被视为模块,module
标记加载的代码必须是模块。