在nodejs中向外部模块添加功能

时间:2016-10-02 18:14:59

标签: javascript node.js

我需要在main.js中运行一个函数(正在运行的脚本)才能在模块范围内识别:

Modules.js:

function x(){
     functionNeeded();
}

module.export.x = x;

Main.js

var m = require("modules.js");

function functionNeeded(){
     //function needed to call
}

//m.x() is called successfully
//but fails because functionNeeded is not defined (check modules.js)
//with m.functionNeeded = functionNeeded before calling m.x() it also fails.

有没有人知道如何实现这一点所以我可以在几个模块中传播main.js的功能而不重复它或将它传播到模块中?

2 个答案:

答案 0 :(得分:1)

您可以通过将其作为参数传递给模块来提供您的功能:

Module.js:

    internal bool GoUp(Group group)
    {
        if (!group.Open) return false;
        if ((group.Index >= 0) && (group.Index < group.Groups.Count) && group.Groups[group.Index].Open) if (GoUp(group.Groups[group.Index])) return true;
        group.Index--;
        if (group.Index == -1) return true;
        else if (group.Index < -1) group.Index = -1;
        if ((group.Index >= 0) && (group.Index < group.Groups.Count) && group.Groups[group.Index].Open) group.Groups[group.Index].Index = ((group.Groups[group.Index].Groups.Count + group.Groups[group.Index].Items.Count) - 1);
        return (group.Index >= 0);
    }

Main.js

function x(functionNeeded){
     functionNeeded();
}

module.export.x = x;

答案 1 :(得分:0)

我真的不推荐这个,但你在节点中可以使用global

global.functionNeeded = function () {
};

...但:

  • 您必须确保在引用该功能之前运行初始化。
  • 这使您的代码难以推理;它并不明确该功能的来源或何时可用。

在每个依赖它的模块中,只有require函数才能更好