8

我认为 Haskell 提供了很棒的功能。也适用于 Web 开发。但是,我错过了一个功能。服务器端渲染。原因是谷歌索引爬虫和预渲染以提高移动设备的性能。

是否可以使用 Ghcjs、Haste、Elm 或其他一些 Haskell->JS 编译器在服务器端渲染 Haskell 前端?

4

2 回答 2

4

我不相信亚历山大已经回答了这个问题。

问题是 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。

编辑:目前,最好的选择可能是使用 nginx 作为您的 Haskell 服务器前面的负载平衡器,使用 prerender.io 来提供渲染的 JS 页面给搜索机器人:

https://github.com/prerender/prerender

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

于 2015-09-26T14:28:36.720 回答
3

Stock Yesod 脚手架进行 HTML 的服务器端渲染,并为 HTML、CSS 和 JS 定制预处理语言。您应该能够集成 Fay/Purescript 而不会出现太多问题,因为它们已经存在了一段时间,并且 yesod 至少为其中一个提供了脚手架。

对于诸如 GHCJS 集成之类的东西,您会看到在该stack工具的即将发布的版本中取得了很多进展(例如this issue)。从理论上讲,这将使全栈 Haskell 可以轻松实现。现在,据我了解,集成 GHCJS 并非易事。

于 2015-09-26T10:06:23.757 回答