Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2015, 09:12
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

Генерация статических сайтов
Речь пойдет о генерации многостраничных статических сайтов, причем именно на Ноде.

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

Итак, суть идеи. Если информация на сайт поступает только от администраторов сайта, а не от пользователей, то зачем вообще серверная часть? Только для того, чтобы взять контент страницы и обернуть его в шаблон. Для комментов например ставим дискус.

Итак, на ноде у нас окружение для сборки, темплейты, конктент (например, в XML-файлах). Даем команду на сборку, и у нас в директории сборки весь сайт в виде статики - html, css, js, img. В продакшне это раздает например голый nginx, или вообще пушим все это в какой-нибудь CDN.

Сгенерированный сайт может иметь такие плюшки как: обычные страницы типа "о компании" и "контакты", блог с RSS, тэгами, постраничкой, файл robotx.txt, sitemap.xml со всеми страницами, каталог товаров с фильтрами и т. д.

Для генерации чего-то специфического пишем плагины на js под ноду, поэтому функционал ограничен только фантазией автора.

Есть много разных генераторов статических сайтов, в том числе под ноду - https://www.staticgen.com (фильр по языку javascript)

Собственно, вопрос - кто-нибудь здесь использует что-то подобное? Если да, то что? Ну и вообще можно разное обсудить по этой теме...
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2015, 08:22
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

В общем ковырнул я бегло почти все генераторы по ссылке выше - и все они вообще не то. Либо слишком специализированные (для блога, для генерации HTML-книг, и т.д.), либо что-то вообще не так, ничего не понравилось в общем. Я не увидел ни в одном удобной генерации сайтов любой сложности.

Зато открыл для себя такой мегарулезнейший шаблонизатор как Nunjucks (очень похож на jinja2 или Django из Питона).

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

Статика - невероятно фановая штука. Вопрос с производительностью снимается вообще. Вопрос с серверными ошибками снимается вообще. А если учесть что можно прикрутить всякие микросервисы на ресте и веб-интерфейс к генератору - то становится вообще весело.

Ну как вам в целом концепт?
Ответить с цитированием
  #3 (permalink)  
Старый 17.12.2015, 11:38
Аспирант
Отправить личное сообщение для tourniquet Посмотреть профиль Найти все сообщения от tourniquet
 
Регистрация: 04.04.2014
Сообщений: 58

На счёт шаблонизатора, тоже использовал Nunjucks, но потом пробовал Jade, и сейчас пишу намного меньше кода, так что, рекомендую.
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2015, 10:09
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

Jade - уж больно специфический. Сходу сложно сказать, чем грозит, но как-то не вдохновляет идея отойти от написания чистого html. Первое, что приходит на ум - не будет автокомплишна, проверки синтаксиса, фолдинга и прочих плюшек, поэтому для меня - сразу нет.
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2015, 10:45
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

1) автокомплишна должен быть, как минимум аля еммет работает и для jade
2) проверки синтакс будетиса синтексис html?

Вот этот шаблон:

mixin menu(items)
     nav.menu
         each item in items
               a.menu__item(href=item.link)
                    = item.title

На любой странице икнлудится
include menu

- var menuItems = [
     { link: '#1', title: 'item #1' },
     { link: '#1', title: 'item #1' },
     { link: '#1', title: 'item #1' }
];

+menu(menuData);

<nav class="menu">
     <a class="menu__item" href="#1">Item #1</a>
     <a class="menu__item" href="#2">Item #2</a>
     <a class="menu__item" href="#3">Item #3</a>
</nav>
Ответить с цитированием
  #6 (permalink)  
Старый 18.12.2015, 12:38
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

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

Надо будет поиграться на досуге, посмотреть как оно.
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2015, 12:50
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

> синтексис html?

Да, а почему нет?

IDE заточена под html, знает как разобрать его текст в целостную семантику, и потом уже на базе этой семантики реализует кучу плюшек, очень полезных в профессиональной разработке.

В контексе Jade я не могу сказать, насколько оно надо, но скорее всего - надо
Ответить с цитированием
  #8 (permalink)  
Старый 18.12.2015, 15:15
Аспирант
Отправить личное сообщение для tourniquet Посмотреть профиль Найти все сообщения от tourniquet
 
Регистрация: 04.04.2014
Сообщений: 58

Сообщение от Max Power Посмотреть сообщение
Надо признать, что конечно выглядит очень чисто, прикольно и фаново. Но вот чутье подсказывает, что в реальных проектах могут возникнуть некоторые не очевидные сразу нюансы.

Надо будет поиграться на досуге, посмотреть как оно.
а с чего вы решили что в реальных проектах никто не использует Jade?
Ответить с цитированием
  #9 (permalink)  
Старый 18.12.2015, 17:12
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

Ну так используют те, кто уже поигрались на досуге и посмотрели как оно ))
Ответить с цитированием
  #10 (permalink)  
Старый 18.12.2015, 20:10
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Max Power, используют те, кто не хочет делать лишнюю работу, чистый html мертв, как и css, все это генерируется. Стоит лишь попробовать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструкторы сайтов и виджетов для них wertklop Общие вопросы Javascript 11 10.08.2016 15:15
Недорогая защита сайта от DDoS атак - Безопасность сайтов antiddos Работа 1 18.07.2015 16:31
Создание и продвижение сайтов под файловые download пп Utraff Работа 1 28.04.2014 01:19
Вирусдай - облачный антивирус для сайтов Virusdie Ваши сайты и скрипты 0 25.11.2013 12:40
Генерация поля из 8000 картинок на стороне клиента VS генерация картинки на сервере xintrea Events/DOM/Window 2 25.06.2013 20:10