Можно ли на стороне сервера отображать интерфейс Haskell с помощью Ghcjs, Haste, Elm и т. д.?

Я думаю, что Haskell предлагает фантастические возможности. Также подходит для веб-разработки. Однако одной функции мне не хватает. Рендеринг на стороне сервера. Причинами этого являются поисковые роботы Google и предварительный рендеринг для повышения производительности на мобильных устройствах.

Можно ли рендерить интерфейс Haskell на стороне сервера с помощью Ghcjs, Haste, Elm или какого-либо другого компилятора Haskell-> JS?


person Jakub Kříž    schedule 26.09.2015    source источник


Ответы (2)


Я не верю, что Александр ответил на вопрос.

Вопрос в том, выполняют ли веб-фреймворки Haskell рендеринг JavaScript на стороне сервера — vanilla JS или JS-через-Haskell (GHCJS, Fay и т. д.). Насколько я понимаю, Yesod не выполняет предварительный рендеринг JS (т. е. не выполняет JS и не обслуживает полученный HTML). Скорее, Yesod выполняет генерацию HTML на стороне сервера с помощью hamlet (или blaze-html, или lucid, в зависимости от ваших предпочтений).

Единственная библиотека, которую я смог найти для рендеринга JS на стороне сервера Haskell (для Angular):

https://github.com/danchoi/ngrender

Но это все еще в бета-версии.

Если есть другие библиотеки/решения, я хотел бы услышать о них. Это проблема и для меня. Я хочу использовать purescript-halogen на клиенте, но... SEO.

Редактировать: на данный момент лучшим вариантом может быть использование nginx в качестве балансировщика нагрузки перед вашим сервером Haskell с prerender.io для предоставления обработанных JS-страниц поисковым ботам:

https://github.com/prerender/prerender

https://gist.github.com/thoop/8165802

person Jason Zoladz    schedule 26.09.2015

Шаблоны Stock Yesod выполняют рендеринг HTML на стороне сервера и имеют настраиваемые предварительно обработанные языки для HTML, CSS и JS. Вы должны быть в состоянии интегрировать Fay/Purescript без особых проблем, учитывая, что они существуют уже некоторое время, и yesod поставляется с каркасами по крайней мере для одного из них.

Что касается чего-то вроде интеграции GHCJS, вы увидите значительный прогресс в следующих версиях инструмента stack (например, эта проблема). Теоретически это сделает полный стек Haskell достижимым без особых хлопот. Сейчас я понимаю, что интеграция GHCJS нетривиальна.

person Alexandr Kurilin    schedule 26.09.2015