Контакты

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (32)

Лучшие ответы пользователя

Все ответы (40)
  • Что сделать для безопасности в linux на домашней машине?

    AirWorker
    @AirWorker
    Node.js full stack web dev
    Да нормально там все с безопасностью по умолчанию. Просто не вешать лишнего на открытые порты и обновляться вовремя.
    Ответ написан
    2 комментария
  • Как грамотно сделать меню в jade?

    AirWorker
    @AirWorker
    Node.js full stack web dev
    Реализация подобного рода вещей - сильная сторона Jade

    Под такие задачи плохо подходит include. Используйте наследование. В родительском шаблоне определите все общие блоки, в дочерних шаблонах оставьте только то, что меняется

    1. Создаем родительский шаблон, определяем блок контента и блок общих переменных, убираем дублирование в микс, этот микс вызываем в цикле, данные для цикла выносим отдельно:

    //- filename: root.jade
    - var nav = [{url: '/', name: 'Home'}, {url: 'about.html', name: 'About'}....];
    doctype html
    html(lang="en")
      block sharedVars
      head
        block title
      body
        ul.nav
          each i in nav
            +navItem(i.url, i.name, i.url == pageUrl)
        block content
    mixin navItem(url, name, current)
      li.nav-item(class={active: current})
        a.link(href=url)= name


    Очевидно, теперь родительский шаблон ждет переменную pageUrl.

    2) Создаем шаблоны дочерних страниц, в них определяем родительский шаблон, контентные блоки и необходимые для родительского шаблона переменные.

    extends root
    append sharedVars
      - var pageUrl = '/';
    block title
      | My title
    block content
      h1 Мой заголовок
      .content
         p Hello World


    Обратите внимание как передается переменная pageUrl из дочернего шаблона в родительский - через блок sharedVars. Этого нет в документации по Jade.
    Ответ написан
    7 комментариев
  • Как в nginx перенаправить роуты?

    AirWorker
    @AirWorker
    Node.js full stack web dev
    > а остальные на ангуляр?

    вообще не понял, при чем тут ангуляр, но не суть...

    Вот часть реального конфига:

    server {
      listen  80;
      server_name example.com;
    
      location /all.css {
        root /srv/vek-node/static;
      }
      location /all.css.map {
        root /srv/vek-node/static;
      }
      location /img {
        root /srv/vek-node/static;
      }
      location /vendors {
        root /srv/vek-node/static;
      }
      
      location /media {
        alias /var/www/vek_staging/media;
      }
    
      location /catalog/metal {
        rewrite ^ http://metal.example.com$request_uri? permanent;
      }
    
      location /admin {
          uwsgi_read_timeout 600;
          client_max_body_size 30m;
          include /etc/nginx/uwsgi_params;
          uwsgi_pass unix:/run/uwsgi/app/vek_staging/socket;
      }
    
      location /static {
        alias /var/www/vek_staging/static;
      }
    
      location / {
        include /etc/nginx/proxy_params;
        proxy_read_timeout 120;
        proxy_pass http://127.0.0.1:3331;
      }
    }


    1) Первые четыре директивы location задают раздачу контента из папки static, при этом uri не содержит /static/. Здесь переопределяется root.
    2) Пятая директива location задают раздачу контента из папки media, при этом uri начинается с /media/. Здесь используется директива alias.
    3) Шестой location - все что начинается с /catalog/somesubpart - редиректим на поддомен, с таким же uri.
    4) location /admin - передаем запрос uwsgi-приложению (Django)
    5) location / - все остальное проксируем на 127.0.0.1:3331 (Node.js)

    Пример довольно показательный, используются почти все популярные фишки.

    UPD: первые четыре директивы location определяются довольно тупо - это плата за их распознавание без префикса. Но в реале это ничем не грозит - я генерирую этот конфиг галпом, конкретно gulp-nunjucks. Реальный конфиг примерно в 2 раза больше.
    Ответ написан
    Комментировать
  • Эмуляция действий пользователя для парсера?

    AirWorker
    @AirWorker
    Node.js full stack web dev
    Ответ написан
    Комментировать
  • Как защитить запрос от изменения параметров?

    AirWorker
    @AirWorker
    Node.js full stack web dev
    Проблемы нет вообще - клиент говорит что он отвечает и на какой вопрос. Просто проверить при записи - имеет ли клиент право отвечать на данный конкретный вопрос. На этом весь web построен.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (3)