Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Шаблон Jade как источник структурированных данных (https://javascript.ru/forum/node-js-io-js/60822-shablon-jade-kak-istochnik-strukturirovannykh-dannykh.html)

Max Power 22.01.2016 01:23

Шаблон Jade как источник структурированных данных
 
Делаю блог на статическом сайте, хочется странного. Шаблон, примерно:

Код:

extends ../../templates/blog_post

block vars
    - var name = "My post"
    - var date = ..date..
    - var tags = 'js, node, etc'

block short_content
  | short content, complex markup

block content
  | full content, complex markup

Как нетрудно догадаться, стандартный рендер выдаст готовую страницу поста блога, но как отрендерить страницу списка постов?

Я бы использовал Json, или базу, но хочется писать сложную и крутую html-разметку в каждом посте, это удобно делать в теплом ламповом редакторе/IDE.

Я хочу вот что:

Код:

var tempate_data = tpl_as_data('.......my_post.jade');

console.log(template_data.vars.vars.name); // "My post"
console.log(template_data.short_content.content): // "short content, complex markup" (As HTML!)

В какую сторону рыть, есть мысли?

werty1001 22.01.2016 20:14

Цитата:

Сообщение от Max Power (Сообщение 404548)
Я бы использовал Json, или базу, но хочется писать сложную и крутую html-разметку в каждом посте, это удобно делать в теплом ламповом редакторе/IDE.

Я использую express + lowdb и можно использовать jade файлы как посты и рендерить их в зависимости от страницы.

Max Power 23.01.2016 05:07

lowdb - это как я понял сохранялка Json-а, в принципе штука полезная, взял на заметку. Но суть проблемы в другом - как получить данные для Json из шаблона.

Вообще сейчас у меня идея следующая:

Каждый пост - это полноценный Jade-шаблон, который наследуется. Можно каждый пост оформить с блекджеком и всеми плюшками какого-нибудь Бутстрапа, причем используя миксы и прочие прелести. Отрендерить все посты в html - не проблема.

Потом мы формируем json с данными всех постов. Тело поста не идет в этот json, там только то, что нужно для рендеринга списка постов. Список рендерим ангуляром на клиенте, получаем сортировки, выборки по тегам и рубрикам, быструю постраничку и прочие ништяки.

Для получения данных из поста (о чем собственно и топик) я пока не вижу ничего лучше, чем распарсить HTML парсилкой HTML.

Для поисковиков мы конечно же генерим sitemap, я использую Глоток, и для него есть gulp-sitemap - он просто лезет в каталог билда, и мапит все html-файлы.

Прикол в том, что наш json - это статика, мы его минифицируем, он маленький. То есть сайт остается полностью статическим, но список постов чертовски интерактивен. Ну и потом мы пушим наш крутой статический сайт в CDN, и он держит большую нагрузку, чем фейсбук и твиттер вместе взятые. И в гробу я видал ваш hi-load experience :))

Ну как идея? Богато? :))

UPD: для поиска по телу постов просто ставим Яндекс.Поиск. Как бы там технари не выпендривались с эластиком и прочими сфинксами, это - лучшая искалка, выдыхаем...


Часовой пояс GMT +3, время: 03:34.