Laravel MIX,如何在多个文件中使用单个函数

Laravel MIX, how to use single function in multiple files

我有三个文件:

my_function.js

function myFunction() {
  console.log('my function');
}

如何在我的文件 scripts_1.jsscripts_2.js 中使用此功能?我在 users.js 中将这两个用作:

require('scripts_1');
require('scripts_2');

admins.js中我只用了一个:

require('scripts_2');

稍后在我的 webpack.mix.js 中,我将 usersadmin 文件编译为两个单独的缩小 js 文件。

如果我只是在我的 scripts_1scripts_2 文件中使用 require('my_function'),这将不起作用(可能 myFunction() 不在同一范围内)。

但是,如果我将我的函数附加到 window 变量,那么 my_function 现在看起来像这样:

window.myFunction = function() { ... }

此时我什至不需要在任何 scripts_1scripts_2 文件中要求它(但我在我的 users.jsadmin.js文件),但这感觉有点不对。

tldr;

我想知道如何使用 Laravel MIX 定义可以在多个其他 js 文件中重用的辅助 js 函数。

您要导出 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()

正在导出您告诉模块(在这种情况下为文件)具有该功能的功能。当您导入模块时,您将能够使用该功能,它是某种类型的 public/private 行为,导出 functions/objects,... public 到其他模块,非导出 functions/objects/... 是私有的。

要使用导出函数,首先需要在每个要使用的文件中导入模块 (require('themodule'))。相反,使用 window,你在全局对象 window 中附加了一个新的 属性,所以一旦你在某个文件中导入了模块,你就可以在任何文件中使用 window.myFunction .最后一个是不可取的。

Here 你拥有 javascript 拥有的不同类型的模块。