Laravel MIX,如何在多个文件中使用单个功能

时间:2018-11-06 15:44:52

标签: javascript laravel npm laravel-mix

我有三个文件:

  • my_function.js
  • scripts_1.js
  • scripts_2.js

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文件。

如果我仅在require('my_function')scripts_1文件中使用scripts_2,则此操作将无效(可能myFunction()不在同一范围内)。

但是,如果我将函数附加到window变量上,使my_function现在看起来像这样,我可以使这项工作有效:

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

在这一点上,我什至不必在任何scripts_1scripts_2文件中都需要它(但我在users.jsadmin.js文件中都需要它)但这有点不对劲。

tldr;

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

1 个答案:

答案 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具有的不同类型的模块。