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.jsmy_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 文件。
如果我只在我的scripts_1
和scripts_2
文件中使用require('my_function')
,这是行不通的(可能myFunction()
不在同一范围内)。
但是,如果我将我的函数附加到 window
变量,这样my_function
现在看起来像这样,我就可以完成这项工作:
window.myFunction = function() ...
此时我什至不需要在任何scripts_1
和scripts_2
文件中使用它(但我在我的users.js
和admin.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 的 vue-loader 15