0

我正在创建一个模块,该模块导出一个方法,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 的新手,因此非常感谢任何想法、线索或帮助。谢谢!

4

2 回答 2

0

我不确定我是否完全理解您的“问题”,但在我看来,您想要实现的目标就像使用 Node.js 构建 Web 应用程序一样。我认为您应该使用可用于 Node 的 Web 框架之一,这样您就可以避免重新发明轮子(自己编写路由、静态文件服务等)。

Express 框架是一个不错的起点。您可以在互联网上找到大量教程,并且它拥有强大的社区:http ://expressjs.com/

于 2013-09-12T16:51:35.830 回答
0

在请求上设置变量是一种可接受的模式。或者在响应中,如果您甚至不想将请求传递给您的函数。

您可以做的另一件事确实是,就像您写的那样,让应用程序添加一个中间件,并让该中间件输出那个东西。

于 2013-09-12T16:52:05.173 回答