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

brn*_*nd0 3 javascript npm laravel laravel-mix

我有三个文件:

  • my_function.js
  • 脚本_1.js
  • 脚本_2.js

my_function.js

function myFunction() {
  console.log('my function');
}
Run Code Online (Sandbox Code Playgroud)

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

require('scripts_1');
require('scripts_2');
Run Code Online (Sandbox Code Playgroud)

admins.js只使用一个:

require('scripts_2');
Run Code Online (Sandbox Code Playgroud)

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

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

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

window.myFunction = function() { ... }
Run Code Online (Sandbox Code Playgroud)

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

太棒了;

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

gro*_*boy 6

你在出口吗myFunction

在节点中,你可以这样做

module.exports = {
   myFunction: function () {
     console.log('my function');
   }
}
Run Code Online (Sandbox Code Playgroud)

有了 webpack 和朋友,你可以简单地

export function myFunction() {
  console.log('my function');
}
Run Code Online (Sandbox Code Playgroud)

然后就可以导入并使用该函数了

const someName = require('my_function.js')

someName.myFunction()
Run Code Online (Sandbox Code Playgroud)

导出函数就是告诉模块(在这种情况下是文件)具有该函数。当您导入模块时,您将能够使用该函数,它是某种类型的公共/私有行为,导出的函数/对象...对其他模块是公共的,非导出的函数/对象/...是私有的。

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

这里有 javascript 所具有的不同类型的模块。