我是否可以在javascript模块中混合使用";正规的;javascript?

我是否可以在javascript模块中混合使用";正规的;javascript?,javascript,es6-modules,Javascript,Es6 Modules,我有一个页面设置,它引用了几个javascript文件,页面中有一些javascript内联,这是在加载页面时生成的 其中一个javascript文件包含来自第三方库的类 另一个javascript文件包含与页面相关的各种变量、事件处理程序和函数,它们使用来自第三方库的类(var v=new thirdPartyClass(parameters);) 第三方最近更新了他们的库并切换到使用模块,因此现在他们没有可用的类,而是有可用的类导出。这是我第一次接触js模块 因此,现在,我必须从模块中导入类

我有一个页面设置,它引用了几个javascript文件,页面中有一些javascript内联,这是在加载页面时生成的

其中一个javascript文件包含来自第三方库的类

另一个javascript文件包含与页面相关的各种变量、事件处理程序和函数,它们使用来自第三方库的类(
var v=new thirdPartyClass(parameters);

第三方最近更新了他们的库并切换到使用模块,因此现在他们没有可用的类,而是有可用的类导出。这是我第一次接触js模块

因此,现在,我必须从模块中导入类,而不是像我理解的那样包含js文件。当我尝试这样做时,我得到一个控制台错误,只有模块可以导入。我将
type=“module”
添加到我的js文件的
标记中(它已经添加到第三方js脚本标记中),然后我可以导入它们的类,但是现在无法从页面访问我的函数(
函数未捕获引用错误:未定义myFunction
)。我不知道事件是否有效,因为它已经没有那么远了


有什么方法可以使用他们新导出的类,而不必将我的js文件完全重组为一个模块并更改页面以使用它吗?

您不能使用
var
在模块中创建全局变量。要访问该函数,可以将其从文件中导出:

导出myFunction;
并将其导入到所需的文件中:

从“/relativeFilePath”导入{myFunction};
或者,如果要从模块中创建全局变量,可以将变量直接放入
窗口
对象:

window.myFunction=function(){
//代码
};

您不能使用
var
在模块中创建全局变量。要访问该函数,可以将其从文件中导出:

导出myFunction;
并将其导入到所需的文件中:

从“/relativeFilePath”导入{myFunction};
或者,如果要从模块中创建全局变量,可以将变量直接放入
窗口
对象:

window.myFunction=function(){
//代码
};

使用
窗口。了解myFunction
很有用,但这仍然意味着我必须将所有变量放在其他地方,并对其他地方引用的所有函数执行此操作,然后重新测试所有内容。我希望有一种方法可以更简单地替换
var v=new thirdPartyClass(parameters)
,而不必到处进行更改。如果希望
v
是全局的,只需将其更改为
window.v=new thirdPartyClass(parameters)
问题不是
v
本身,问题是我的js文件中有很多函数和变量,我希望尽可能避免将其转换为模块。问题是,如果它不是一个模块,我不知道如何在js文件中使用
thirdPartyClass
。你可以使用一个模块文件来创建
v
,并使其全局化,然后包含常规脚本。并非所有脚本都必须是模块。使用
window.myFunction
很有用,但这仍然意味着我必须将所有变量放在其他地方,并对其他地方引用的所有函数执行此操作,然后重新测试所有内容。我希望有一种方法可以更简单地替换
var v=new thirdPartyClass(parameters)
,而不必到处进行更改。如果希望
v
是全局的,只需将其更改为
window.v=new thirdPartyClass(parameters)
问题不是
v
本身,问题是我的js文件中有很多函数和变量,我希望尽可能避免将其转换为模块。问题是,如果它不是一个模块,我不知道如何在js文件中使用
thirdPartyClass
。你可以使用一个模块文件来创建
v
,并使其全局化,然后包含常规脚本。并非所有脚本都必须是模块。似乎最简单的解决方案是将它们的模块转换为正则脚本,将导出置于全局变量中,例如UMD格式。那就用它吧,你不必再做任何改变了。@Bergi-你对如何做这件事的教程有什么建议吗?这对我来说是全新的,我主要是一个后端开发人员。似乎最简单的解决方案是将他们的模块转换成一个正则脚本,将导出放入一个全局变量,例如UMD格式。那就用它吧,你不必再做任何改变了。@Bergi-你对如何做这件事的教程有什么建议吗?这对我来说是全新的,我主要是一个后端开发人员。