我有三个文件:
my_function.js
function myFunction() {
console.log('my function');
}
如何在我的文件scripts_1.js
和scripts_2.js
中使用此功能?我在users.js
中将这两个用作:
require('scripts_1');
require('scripts_2');
在admins.js
中我只使用一个:
require('scripts_2');
稍后,我在webpack.mix.js
中将users
和admin
文件编译为两个单独的缩小的js文件。
如果我仅在require('my_function')
和scripts_1
文件中使用scripts_2
,则此操作将无效(可能myFunction()
不在同一范围内)。
但是,如果我将函数附加到window
变量上,使my_function
现在看起来像这样,我可以使这项工作有效:
window.myFunction = function() { ... }
在这一点上,我什至不必在任何scripts_1
和scripts_2
文件中都需要它(但我在users.js
和admin.js
文件中都需要它)但这有点不对劲。
tldr;
我想知道如何定义一个辅助js函数,该函数可以通过使用Laravel MIX在多个其他js文件中重用。
答案 0 :(得分:2)
您要导出myFunction
吗?
在节点中,您可以
module.exports = {
myFunction: function () {
console.log('my function');
}
}
有了webpack和朋友,您可以简单地
export function myFunction() {
console.log('my function');
}
然后您可以导入和使用该功能
const someName = require('my_function.js')
someName.myFunction()
导出要告诉您的功能模块(在这种情况下为文件)具有该功能。当您导入模块时,您将能够使用该功能,这是某种类型的公共/私有行为,导出的函数/对象,...对于其他模块是公共的,非导出的函数/对象/ ...是私有的。
要使用导出的功能,首先需要将模块导入每个要使用的文件中(require('themodule'))。而是使用window
,是在全局对象window
中附加一个新属性,因此,一旦在模块中导入了某个文件,便可以在任何文件中使用window.myFunction
。最后是不可取的。
Here,您具有javascript具有的不同类型的模块。