Генерация статических сайтов
Речь пойдет о генерации многостраничных статических сайтов, причем именно на Ноде.
Искал по этой теме на этом сайте, ничего не нашел, поэтому буду исходить из того что тема эта здесь новая, краткое введение... Итак, суть идеи. Если информация на сайт поступает только от администраторов сайта, а не от пользователей, то зачем вообще серверная часть? Только для того, чтобы взять контент страницы и обернуть его в шаблон. Для комментов например ставим дискус. Итак, на ноде у нас окружение для сборки, темплейты, конктент (например, в XML-файлах). Даем команду на сборку, и у нас в директории сборки весь сайт в виде статики - html, css, js, img. В продакшне это раздает например голый nginx, или вообще пушим все это в какой-нибудь CDN. Сгенерированный сайт может иметь такие плюшки как: обычные страницы типа "о компании" и "контакты", блог с RSS, тэгами, постраничкой, файл robotx.txt, sitemap.xml со всеми страницами, каталог товаров с фильтрами и т. д. Для генерации чего-то специфического пишем плагины на js под ноду, поэтому функционал ограничен только фантазией автора. Есть много разных генераторов статических сайтов, в том числе под ноду - https://www.staticgen.com (фильр по языку javascript) Собственно, вопрос - кто-нибудь здесь использует что-то подобное? Если да, то что? Ну и вообще можно разное обсудить по этой теме... |
В общем ковырнул я бегло почти все генераторы по ссылке выше - и все они вообще не то. Либо слишком специализированные (для блога, для генерации HTML-книг, и т.д.), либо что-то вообще не так, ничего не понравилось в общем. Я не увидел ни в одном удобной генерации сайтов любой сложности.
Зато открыл для себя такой мегарулезнейший шаблонизатор как Nunjucks (очень похож на jinja2 или Django из Питона). В общем решил написать свой генератор. Получается очень неплохо, на асинхронах сборка идет максимально распараллелено, будет блин быстро. Если дойдет до состояния когда не стыдно будет показать - покажу. Статика - невероятно фановая штука. Вопрос с производительностью снимается вообще. Вопрос с серверными ошибками снимается вообще. А если учесть что можно прикрутить всякие микросервисы на ресте и веб-интерфейс к генератору - то становится вообще весело. Ну как вам в целом концепт? |
На счёт шаблонизатора, тоже использовал Nunjucks, но потом пробовал Jade, и сейчас пишу намного меньше кода, так что, рекомендую.
|
Jade - уж больно специфический. Сходу сложно сказать, чем грозит, но как-то не вдохновляет идея отойти от написания чистого html. Первое, что приходит на ум - не будет автокомплишна, проверки синтаксиса, фолдинга и прочих плюшек, поэтому для меня - сразу нет.
|
1) автокомплишна должен быть, как минимум аля еммет работает и для jade
2) проверки синтакс будетиса синтексис html? :D Вот этот шаблон: 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> |
Надо признать, что конечно выглядит очень чисто, прикольно и фаново. Но вот чутье подсказывает, что в реальных проектах могут возникнуть некоторые не очевидные сразу нюансы.
Надо будет поиграться на досуге, посмотреть как оно. |
> синтексис html?
Да, а почему нет? IDE заточена под html, знает как разобрать его текст в целостную семантику, и потом уже на базе этой семантики реализует кучу плюшек, очень полезных в профессиональной разработке. В контексе Jade я не могу сказать, насколько оно надо, но скорее всего - надо |
Цитата:
|
Ну так используют те, кто уже поигрались на досуге и посмотрели как оно ))
|
Max Power, используют те, кто не хочет делать лишнюю работу, чистый html мертв, как и css, все это генерируется. Стоит лишь попробовать.
|
Часовой пояс GMT +3, время: 00:53. |