我正在创建一个模块,该模块导出一个可以被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的新手,所以任何想法、线索或帮助都会受到极大的赞赏。谢谢!
发布于 2013-09-12 16:52:05
在请求中设置变量是一个可接受的模式。或者在响应上,如果您甚至不想将请求传递给您的函数。
你还可以做的另一件事就是,就像你写的一样,让应用程序添加一个中间件,让这个中间件要么输出那个东西。
发布于 2013-09-12 16:51:35
我不确定我是否完全理解你的“问题”,但在我看来,你想要实现的目标就像使用Node.js构建一个web应用程序一样。我认为您应该使用Node可用的web框架之一,这样您就可以避免重新发明轮子(编写路由、自己提供静态文件等)。
快速框架是一个很好的起点。你可以在互联网上找到大量的教程,而且它有强大的社区:http://expressjs.com/。
https://stackoverflow.com/questions/18769319
复制相似问题