proxyfabio 16 марта 2015 1 4
Aloha.

Intro.
Немного заморочился и написал компонент для modx, позволяющий рендерить html-разметку на основе react-компонентов.
Вся эта красота состоит из двух модулей: пакет для modx и express-сервер.
Скачать можно на гитхабе. Сам пакет для modx доступен для скачивания в репозитории клуба.

Чуть подробнее…
Так уж получилось, что мне приглянулся React. Создание же различных динамических элементов было сопряжено с одной проблемой:

React-компонент в базовом случае рендерится только после загрузки скриптов. Сразу же возникают проблемы с SEO. И надо либо отдавать какую-то базовую разметку и потом перерисовывать компоненты, либо забивать на SEO.

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

Согласитесь, что это не лучшее решение.

Благо у React есть возможность рендерить компоненты в строку. На выходе мы можем получить итоговую разметку и по сути мы делаем небольшой шаг в сторону изоморфных веб-приложений.

Наши компоненты могут использоваться для формирования базовой разметки. Те же компоненты после загрузки скриптов будут отвечать и за динамические элементы.

Вот собственно и все. Идея простая, как валенок, да и реализация не шибко сложная.
4 комментария
Tramp13571
Tramp1357 16 марта 2015г в 21:54 #
Я так понимаю, на сервере должен node.js работать?
proxyfabio1
proxyfabio 16 марта 2015г в 21:59 #
Да. На гитхабе как раз лежит пара модулей. Один из них — веб-сервер для node.js
Tramp13571
Tramp1357 16 марта 2015г в 22:02 #
Понятно
l
life2film 20 марта 2015г в 14:55 #
круто, отлично!
а как результаты, где можно демо посмотреть?
proxyfabio1
proxyfabio 20 марта 2015г в 14:57 #
Демо специально я нигде не публиковал. Так что только самому запускать и разворачивать. Пример шаблона есть в самом модуле.
proxyfabio1
proxyfabio 20 марта 2015г в 15:01 #
Не путать с «я специально демо нигде не публиковал». Смысл совсем другой: )
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.