These are chat archives for NodejsRUS/chat

14th
Mar 2016
Михаил
@muxahuk
Mar 14 2016 12:48
может есть чат где это можно спросить, где сидят люди которые знают..
Dmitriy Simushev
@JustBlackBird
Mar 14 2016 14:04
мой тебе совет: перестань заниматься преждевременной оптимизацией и начни уже реализовывать реальную логику приложения. я уже говорил, что обработка данных сервером скорее всего будет жрать куда больше чем нативная реализация JSON.parse. Реализуй и сделай замеры. После этого у тебя отпадет желание выкраивать копейки на оптимизации низкоуровневых вещей. Ну и пока ты не уперся в ресурсы на реальном сервере с реальной нагрузкой -- все это преждевременная оптимизация.
This message was deleted
Kyrylo Yakovenko
@blia
Mar 14 2016 14:06
:+1:
Dmitriy Simushev
@JustBlackBird
Mar 14 2016 14:06
к тому же вся эта система отлично масштабируется по горизонтали, если использовать один редис для хранения коннектов сокет.айо. Не хватит ресурсов одного сервера -- закупишь два
ну а если жадность, то надо не оптимизировать копейки на подключениях а снижать частоту запросов
а иначе ты хочешь получить два противоположенных результата: низкая загрузка цп при существенном трафике (количестве обрабатываемых данных). так не бывает
Andrey Gurtovoy
@jt3k
Mar 14 2016 16:24
О ! Привет друзья!
Andrey Gurtovoy
@jt3k
Mar 14 2016 16:34

express jade-шаблоны
скрещиваю шаблон с данными вот так:

      res.render('rating', {
        title: 'Рейтинг',
        users: users,
        voterData: voterData,
        isAdmin: voterData.isAdmin //избыточност для примера
      });

voterData -- это объект сессии текущено пользователя

шаблон rating расширяет файл layout.jade
в котором есть меню
у которого есть ссылка "go to admin page"
которую я показываю если isAdmin === true.

в общем всё ок. но у меня помимо rating есть и другие страницы. и мне не очень нравится каждый раз прокидывать {voterData: voterData}

можно ли этого как-нибудь избежать? Например используя какиенибудь ухищрения с глобальными объектами?

или всегда придётся прокидывать?

Andrey Gurtovoy
@jt3k
Mar 14 2016 16:50
понятно чего пытаюсь донести ?
Михаил
@muxahuk
Mar 14 2016 16:51
@jt3k res.locals.voterData можешь задать... тогда он будет доступен в любом шаблоне, но что бы для каждого клиента ( например ) или ссылки ( например ) был разный, нужно будет сделать middleware в котором будешь менять это значение.
Andrey Gurtovoy
@jt3k
Mar 14 2016 16:52

не. в том то и дело что этот объект всегда одинаковый.

Спасибо!

res.locals.voterData
а как потом юзать ?
просто voterData в джейде да ?
Alexander
@sashashakun
Mar 14 2016 16:53
Не совсем то о чем вы спрашиваете, просто глаз зацепился, es6 позволяет писать {one , two}, если у вас структура объекта {one: one, two: two}. Надеюсь понятно объяснил.
Михаил
@muxahuk
Mar 14 2016 16:53
@jt3k тогда вроде бы ( как я понял ты используешь экспресс ) можно сказать: const app = express(); app.locals.someData = 'some data';
и тогда в шаблоне использовать <%- someData -%>
Andrey Gurtovoy
@jt3k
Mar 14 2016 16:54
ок
app.locals.someData пойду про локалс почитаю всё же
Михаил
@muxahuk
Mar 14 2016 16:54
см. документацию для большей точности, я по памяти могу напутать
Andrey Gurtovoy
@jt3k
Mar 14 2016 16:56
угу. можно и так и эдак
и у app есть локалс и у res
Михаил
@muxahuk
Mar 14 2016 16:57
@jt3k да, вот в моём коде есть
// Вспомогательные функции, которые могут быть использованы в вьюхах
    app.locals._    = _;
    app.locals.util = util;
Andrey Gurtovoy
@jt3k
Mar 14 2016 16:57
какая же ляпота!
Михаил
@muxahuk
Mar 14 2016 16:57
разница в том, что в res.locals можно записать какие-то данные пользователя ( например isAdmin ) что бы не передавать в вьюхи
через мидлвер
в app.locals такого не задашь
@imposibrus Поставил нативные модули и существонно разницы не заметил.
Andrey Gurtovoy
@jt3k
Mar 14 2016 17:09
@muxahuk это именно то о чём я мечтал пол дня ! спасибо! Проверил. работает шик!