【发布时间】:2015-12-24 01:09:37
【问题描述】:
我认为 Haskell 提供了很棒的功能。也适用于 Web 开发。但是,我错过了一个功能。服务器端渲染。 原因是谷歌索引爬虫和预渲染以提高移动设备的性能。
是否可以使用 Ghcjs、Haste、Elm 或其他一些 Haskell->JS 编译器在服务器端渲染 Haskell 前端?
【问题讨论】:
标签: haskell elm web-frontend ghcjs haste
我认为 Haskell 提供了很棒的功能。也适用于 Web 开发。但是,我错过了一个功能。服务器端渲染。 原因是谷歌索引爬虫和预渲染以提高移动设备的性能。
是否可以使用 Ghcjs、Haste、Elm 或其他一些 Haskell->JS 编译器在服务器端渲染 Haskell 前端?
【问题讨论】:
标签: haskell elm web-frontend ghcjs haste
我不相信亚历山大已经回答了这个问题。
问题是 Haskell Web 框架是否执行 JavaScript 的服务器端渲染 - vanilla JS 或 JS-via-Haskell(GHCJS、Fay 等)。我的理解是 Yesod 不会预渲染 JS(即执行 JS 并提供生成的 HTML)。相反,Yesod 通过 hamlet(或 blaze-html,或 lucid,取决于您的偏好)在服务器端生成 HTML。
我能找到的用于 Haskell 服务器端 JS 渲染(用于 Angular)的唯一库是:
https://github.com/danchoi/ngrender
但它仍处于测试阶段。
如果还有其他库/解决方案,我很乐意了解它们。这对我来说也是一个问题。我想在客户端使用 purescript-halogen,但是... SEO。
编辑:目前,最好的选择可能是在 Haskell 服务器前使用 nginx 作为负载平衡器,使用 prerender.io 为搜索机器人提供渲染的 JS 页面:
【讨论】:
Stock Yesod 脚手架对 HTML 进行服务器端渲染,并为 HTML、CSS 和 JS 提供自定义的预处理语言。考虑到 Fay/Purescript 已经存在了一段时间,并且 yesod 至少为其中一个提供了脚手架,您应该能够毫无问题地集成 Fay/Purescript。
对于诸如 GHCJS 集成之类的东西,您会看到在即将发布的 stack 工具(例如 this issue)版本中取得了很大进展。从理论上讲,这将使全栈 Haskell 可以轻松实现。现在,据我了解,集成 GHCJS 并非易事。
【讨论】: