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

Posted

技术标签:

【中文标题】Laravel MIX,如何在多个文件中使用单个函数【英文标题】:Laravel MIX, how to use single function in multiple files 【发布时间】:2019-04-10 01:02:53 【问题描述】:

我有三个文件:

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

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

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

window.myFunction = function()  ... 

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

tldr;

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

【问题讨论】:

哇,伙计们,这是我最长的一次没有答案或评论。如果问题需要澄清,请告诉我。 【参考方案1】:

你是在导出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 所拥有的不同类型的模块。

【讨论】:

谢谢,说到js,我有点菜鸟。我将在今天晚些时候对其进行测试,并在完成后接受。你能指点我一些解释正确管理js文件的入门教程吗?另外,导出函数(这只是创建一个新的全局变量,如window,对吗?)和将其保存到window 之间的最终区别是什么? 当然,我已经编辑了答案以添加一些解释和一个解释三种不同类型的 javascript 模块的链接。

以上是关于Laravel MIX,如何在多个文件中使用单个函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 7 中使用 Webpack.mix.js 使用多个 js?

如何混合多个入口点并同时观看 laravel mix

带有 laravel-mix 的 vue-loader 15

如何使用 Laravel Mix 将 Vue 块文件放在 public/js 中?

Laravel Mix,如何在混合时传递变量?

使用 Laravel Mix 时如何包含 webpack 插件?