• Как передать с сервера (node.js) объект вместе с методами (function)?

    Не совсем понимаю, зачем Вам получать с сервера методы? Возможно, Вам нужно нечто другое? Возможно вы будете заинтересованы в шаблонизаторах типа ejs.
    Тут работает такая система. Вы подключаете систему шаблонизации, описываете шаблону, а сервером не отдаете команду res.render('название шаблона', {объемный объект}). Далее в шаблоне вы уже можете свободно обращаться к методам и свойствам переданного объекта.
    Но, само собой, этот метод "отрисует" страницу лишь один раз, после отдачи пользователю для браузерного javascript, конечно, объект, в его классическом представлении, будет недоступен.
    Если же Вам нужно все-таки получить с сервера объект с методами - удобнее json придумать что-то сложно. Правда, Вам придется все методы собрать в функции из строк, как писал предыдущий комментатор. Объект.метод = new Function ([аргументы], "тело метода").
    Ответ написан
  • Можно ли возвращать заглушку вместо отсутствующей картинки. Node.js + Express

    Я написал такую тему.
    Реализовано в виде миддвера, код выкладывать не буду, так как сам я - чайник, и в меня полетят тухлые овощи за быдлокод, но суть такая:
    Миддлвер подключается перед обработчиком ошибок - концом цепочки миддверов и после миддвера, который отвечает за отдачу статики.
    Миддлвер проверяет запрос, если он - изображение, то методом fs.stat() считывается статистика файла-заглушки, время последней модификации записывается в заголовок Last-Modified. Если получен заголовок If-Modified-Since он сравнивается с временем последней модификации, если время заголовка меньше - отдаем пустой ответ со статусом 304 и необходимыми заголовками.
    Если меньше - то методом fs.pipe пользователю отдается файл со статусом 200 и заголовком Last-Modified, что бы он мог в следующий раз передать нужный заголовок, что бы мы просто вернули 304.
    Если заглушка мелкая - то можно чудесно обойтись и без fs.pipe.
    Еще можно проставлять тег в заголовке If-None-Match и ловить его в заголовке E-tag, опять же, отдавать 304 если не изменился, но у меня механизм запроса из кеша заработал и без него. Время запроса изображения увеличилось с 5-8 до 7-10 мс на express 3, так что, думаю, можно и обойтись без установки дополнительного веб сервера только для отдачи таких вот прелестей)
    Ответ написан
    Комментировать