Можно ли выполнить рендеринг интерфейса Haskell на стороне сервера с помощью Ghcjs, Haste, Elm и т. Д.?
Я думаю, что Haskell предлагает фантастические возможности. Также подходит для веб-разработки. Тем не менее, одна особенность, которую я скучаю. Рендеринг на стороне сервера. Причины - индексаторы Google и предварительный рендеринг для повышения производительности на мобильных устройствах.
Возможно ли выполнить рендеринг интерфейса Haskell на стороне сервера с помощью Ghcjs, Haste, Elm или с помощью другого компилятора Haskell->JS?
2 ответа
Я не верю, что Александр ответил на вопрос.
Вопрос в том, будут ли веб-фреймворки на Haskell выполнять рендеринг JavaScript на стороне сервера - vanilla JS или JS-via-Haskell (GHCJS, Fay и т. Д.). Насколько я понимаю, Yesod не выполняет предварительную визуализацию JS (т.е. выполняет JS и обслуживает полученный HTML-код). Скорее, Yesod выполняет генерацию HTML на стороне сервера через деревушку (или blaze-html, или lucid, в зависимости от ваших предпочтений).
Единственная библиотека, которую я смог найти для JS-рендеринга на стороне сервера Haskell (для Angular):
https://github.com/danchoi/ngrender
Но это все еще в бета-версии.
Если есть другие библиотеки / решения, я хотел бы услышать о них. Это проблема и для меня. Я хочу использовать purescript-halogen на клиенте, но... SEO.
Редактировать: На данный момент лучшим вариантом может быть использование nginx в качестве балансировщика нагрузки перед сервером Haskell с prerender.io для предоставления визуализированных JS-страниц поисковым ботам:
Стандартный скаффолд Yesod выполняет серверную визуализацию HTML и имеет пользовательские предварительно обработанные языки для HTML, CSS и JS. Вы должны быть в состоянии интегрировать Fay/Purescript без особых проблем, если учесть, что они существуют уже некоторое время, а yesod поставляется с эшафотами хотя бы для одного из них.
Что-то вроде интеграции GHCJS, вы увидите большой прогресс в следующих версиях stack
инструмент (например, этот вопрос). Это теоретически сделает Haskell с полным стеком достижимым без особых хлопот. Сейчас я понимаю, что интегрировать GHCJS нетривиально.