2013-09-12 3 views
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, поэтому любые идеи, подсказки или помощь приветствуются. Благодаря!

ответ

0

Установка переменной в запросе является принятым шаблоном. Или ответ, если вы даже не хотите передавать запрос на свою функцию.

Еще одна вещь, которую вы можете сделать, действительно, как вы пишете, добавить приложение промежуточного программного обеспечения, и это промежуточное программное обеспечение либо выводит эту вещь.

+0

Вот что я думал, что мне придется делать, но я пытался избежать этого. Спасибо за ответ. – ragamufin

0

Я не уверен, что полностью понимаю вашу «проблему», но то, что вы пытаетесь достичь, мне кажется как создание веб-приложения с использованием Node.js. Я думаю, вы должны использовать одну из веб-фреймворков, которые доступны для узла, поэтому вы можете избежать повторного использования колеса (собственно написание маршрутизации, статические файлы и т. Д.).

Экспресс-каркас - прекрасное место для начала. Вы можете найти множество учебных пособий по всему Интернету и иметь сильное сообщество: http://expressjs.com/

Смежные вопросы