如何在 node.js 中要求一个文件并在请求方法中传递一个参数,而不是传递给模块?
Posted
技术标签:
【中文标题】如何在 node.js 中要求一个文件并在请求方法中传递一个参数,而不是传递给模块?【英文标题】:How to require a file in node.js and pass an argument in the request method, but not to the module? 【发布时间】:2012-02-08 16:31:05 【问题描述】:我有一个必须加载的 module.js;为了工作需要objectX;
如何在node.js提供的require方法中将objectX传递给module.js?
谢谢
// my module.js
objectX.add('abc');
// error: objectX is undefined
我想要一种方法来做到这一点,而不必更改我所有的课程,因为这会花费很多时间......而且他们的方式对于客户端来说具有良好的性能。 (我将客户端文件与服务器文件混合在一起***)
【问题讨论】:
【参考方案1】:您可以通过链接“init”方法(随意命名)来避免更改实际导出的对象。
模块TestModule.js:
var x = 0; // Some private module data
exports.init = function(nx)
x = nx; // Initialize the data
return exports;
;
exports.sayHi = function()
console.log("HELLO THERE "+x);
;
然后像这样要求它:
var TM = require('./TestModule.js').init(20);
TM.sayHi();
【讨论】:
【参考方案2】:您编写的模块可以导出单个函数。当您需要该模块时,请使用您的初始化参数调用该函数。该函数可以返回一个对象(哈希),您将其放入 require-ing 模块中的变量中。换句话说:
main.js
var initValue = 0;
var a = require('./arithmetic')(initValue);
// It has functions
console.log(a);
// Call them
console.log(a.addOne());
console.log(a.subtractOne());
算术.js:
module.exports = function(initValue)
return
addOne: function()
return initValue + 1;
,
subtractOne: function()
return initValue - 1;
,
【讨论】:
好吧,我不想这么说,但 objectX 必须是全局的。在您的通话文件中,您可以设置global.objectX = "hi"
【参考方案3】:
像导出一些 init 方法并在请求后立即将 objectX 作为参数传递的解决方法怎么样?
var module = require('moduleJS');
module.init(objectX)
【讨论】:
我有很多这样的类: t.add(...class...);但“t”是未定义的。我需要以某种方式将“t”放入模块中。我在问题中添加了一些信息以上是关于如何在 node.js 中要求一个文件并在请求方法中传递一个参数,而不是传递给模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)
Node.js:如何在提交时读取用户选择选项并在 textarea 中提供文件内容