代码之家  ›  专栏  ›  技术社区  ›  brnd0 Diego Ponciano

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

  •  0
  • brnd0 Diego Ponciano  · 技术社区  · 6 年前

    我有三个文件:

    • 我的_函数。js
    • 脚本1。js
    • 脚本2。js

    我的_函数。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文件。

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

    然而,如果我将我的功能附加到 window 变量,使 my_function 现在看起来是这样的:

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

    在这一点上,我甚至不需要在任何地方要求它 脚本1 脚本2 文件(但我在我的 用户。js admin.js 但不知怎么的,这感觉不对。

    太长,读不下去了

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   grouchoboy    6 年前

    你在出口吗 myFunction ?

    在node中,您可以

    module.exports = {
       myFunction: function () {
         console.log('my function');
       }
    }
    

    有了网页和朋友,你可以

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

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

    const someName = require('my_function.js')
    
    someName.myFunction()
    

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

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

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