使用Node.js在不同的JavaScript文件中调用函数

我有Node.js应用程序文件所需的Node.js库文件,导出一个函数。

在应用程序文件中,我调用导出的函数,传递一些参数,它工作正常。

在其中一个参数中,我想发送在应用程序文件中声明的函数的名称 ; 这是这样的,参数可以JSON化。 但是,库文件中的代码无法按名称查找函数,因为它存在于另一个文件(应用程序之一)中。

我知道我可以通过传递一个指向函数的指针来代替它的名字 ,但由于序列化(函数不能被序列化),我想通过这个名字

我不能只从应用程序文件中导出函数,并将其导入到库文件中,因为这是一个循环引用,当然,库文件不需要知道应用程序。

处理这种情况的推荐模式是什么?

推荐的模式仍然可能传递一个函数对象 – 为什么当你传递一个引用时,你的函数被序列化?

一个非常简单的select就是在全局范围内定义你的函数,但是这会污染全局范围,并且违背了我们编写nodejs代码的真正封装的方法:

global.yourCallback = function() { ... } 

现在stringyourCallback将工作。

您可以预先在一个configuration阶段或加载/定义函数时使用您的函数库注册函数:

 var mylib = require('./mylib') function myfunc(){ // ... } mylib.register('myfunc', myfunc); 

假设注册是在启动时完成的,那么图书馆和图书馆的消费者将能够将其称为“myfunc”。

其他图书馆/框架,如AngularJS做类似的事情,例如:

 angularModule.controller('MyController', function(){/*...*/});