我正在创建一个模块,用于导出一个方法,该方法可以使用它在node.js中的任何代码中多次调用。该方法通常从视图中调用,它将输出一些html / css / js。然而,这些html / css / js中的一些只需要每页输出一次,所以我想在每次请求第一次调用模块时输出它。我可以在第一次调用模块时完成它,但是在服务器启动时,我可以在几个请求中多次调用我的模块的方法,所以我特别想要只运行一些特定的代码页即可。
此外,我希望这样做,同时要求用户尽可能少地传递给我的方法。如果他们在创建服务器时传递了请求对象,我想我可以在那里放一个变量来告诉我我的方法是否已被调用。理想情况下,即使我想避免这样做。我在我的模块中想到了以下内容:
var http = require('http');
http.Server.on('request', function(request, response){
console.log('REQUEST EVENT FIRED!');
// output one-time css
});
然而这不起作用,我认为这是因为我实际上并没有指向最初调用的脚本中创建/可能已创建的服务器发射器。我是node.js的新手所以非常感谢任何想法,线索或帮助。谢谢!
答案 0 :(得分:0)
我不确定我是否完全理解您的“问题”,但您在尝试实现的目标在我看来就像使用Node.js构建Web应用程序一样。我认为你应该使用一个可用于Node的Web框架,这样你就可以避免重新发明轮子(编写路由,静态文件服务等等)。
Express框架是一个不错的起点。你可以在互联网上找到大量的教程,它有很强的社区:http://expressjs.com/
答案 1 :(得分:0)
在请求上设置变量是一种可接受的模式。或者在回复中,如果您甚至不想将请求传递给您的函数。
你可以做的另一件事就是,就像你写的那样,让应用程序添加一个中间件,让中间件输出那个东西。