问题标签 [heist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
422 浏览

haskell - 如何保护抢劫模板中的javascript免于转义?

我正在使用带有 Heist 模板引擎的 Snap 框架。问题是 Heist 破坏了内联到 html 中的 javascript 代码:

转化成:

如何告诉 Heist 保留script标签的内容?

编辑:我刚刚实现了这样的拼接:

但是将此拼接绑定到脚本标签并没有帮助。它打印

所以,我认为,html实体替换发生在运行所有拼接之后。

0 投票
3 回答
497 浏览

web-applications - Heist:如何将子模板的动态列表插入到模板中?

我正在写一个在线调查网站。我有一个问题列表,所有问题都在一个 html 页面上,并且列表的长度未知。每个问题都有存储在模板中的表格qu1.tpl,页面是qu.tpl. 现在我想:

  1. qu1.tpl为每个问题替换一些名称

  2. qu.tpl一次性更换一些东西

  3. 并将所有实例qu1.tpl化为qu.tpl

使用我在本教程中学到的知识,我尝试<qulist/><apply template="qu1.tpl"><qulist/>in递归替换标签,但这不起作用,因为已经呈现,因此新插入的应用标签无法解析。qu.tpllocalHeistbindStringqu.tpl

我应该怎么做?

(我想这是一个更普遍的问题。如果您能想到答案适用的其他应用程序,请为搜索引擎添加文本和标签。)

0 投票
1 回答
480 浏览

haskell - 使用不是来自应用程序 monad 的值和 Heist 模板

我正在尝试使用 Happstack、Heist 和 web-routes 编写应用程序服务器,但在弄清楚如何让拼接访问不是源自我的应用程序的 monad 堆栈的值时遇到了麻烦。

出现这种情况有两种情况:

  • 通过网络路由从 URL 路径中提取的参数。这些来自在将请求路由到适当的处理程序时对类型安全 URL 的模式匹配。
  • 会话信息。如果请求是针对全新会话的,我无法从请求中的 cookie 中读取会话标识符(因为尚不存在此类 cookie),并且如果需要,我无法使用拼接创建新会话,从那时起,如果不止一个拼接器尝试这样做,我最终会为一个请求创建多个新会话。但是,如果我在输入 web-routes 内容之前创建会话,则该会话存在于应用程序 monad 之外。

考虑以下尝试提供以下 URL 的示例程序:

  • /factorial/ n输出 n 的阶乘
  • /reverse/ str向后输出str

由于参数出现在 URL 路径而不是查询字符串中,因此它是通过 web-routes 提取的,而不是来自 ServerPartT monad。但是,从那里开始,没有明确的方法可以将参数放在拼接可以看到的地方,因为它们只能访问应用程序 monad。

将 ReaderT 粘贴在 monad 堆栈上的明显解决方案有两个问题:

  • 在 ServerPartT 之上有一个 ReaderT 隐藏了 monad 堆栈的 Happstack 部分,因为 ReaderT 没有实现 ServerMonad、FilterMonad 等。
  • 它假定我服务的所有页面都采用相同类型的参数,但在此示例中,/factorial 需要一个 Int 而 /reverse 需要一个 String。但是对于使用相同 TemplateDirectory 的两个页面处理程序,ReaderT 需要携带相同类型的值。

从 Snap 文档看,Snap 似乎通过有效地将 URL 路径中的参数复制到查询字符串中来处理参数,从而回避了问题。但这不是 Happstack 和 web-routes 的选项,此外,有两种不同的方式让 URL 指定相同的值让我觉得安全方面是个坏主意。

那么,是否有一种“正确”的方式将非应用程序单子请求数据公开给拼接,或者我是否需要放弃 Heist 并使用 Blaze-HTML 之类的东西来代替这不是问题?我觉得我错过了一些明显的东西,但无法弄清楚它可能是什么。

示例代码:

阶乘.tpl:

反向.tpl:

0 投票
1 回答
151 浏览

web-services - 使用 Snap Web 框架为 Heist 模板添加 OnLoad 钩子

我希望在使用Snap的 Web 应用程序中添加一些用于预处理Heist模板的钩子。到目前为止,我天真的方法是在我的应用程序初始化程序中使用以下代码:

这段代码当然不起作用,因为在从“资源/模板”加载模板之后添加了钩子

为了添加 OnLoad 钩子,如何在加载初始模板之前修改 Heist 模板状态?

0 投票
1 回答
482 浏览

happstack - 找到一个有效的 Happstack / Heist 示例

我想开始使用 Haskell 来构建网站,并认为 Happstack、Heist 和 Web-routes 将是一个很好的组合。

不幸的是,我找不到工作代码。速成课程示例无法编译。

我下载了TemplateHeist.hs文件,编译它给了我这些错误。

我已经让 Happstack 与 Blaze 和 Web 路由一起工作。我一定错过了一些“明显”的东西,但我不确定从哪里开始寻找它。

0 投票
1 回答
296 浏览

scala - 适合 Snap 和 Heist 的表单库

我正在寻找一个可以帮助我使用SnapHeist创建表单的库。据我所知,Snap 没有“有福”的表单库,而且Hackage上的流浪表单库似乎都不是特别适合 Heist 模板的声明性性质。

由于 Heist 与Lift web 框架使用的模板系统非常相似,我想知道是否有一些东西可以为我提供与那里可用的类似的表单支持。如果你不熟悉它,如果翻译成 Heist 大概是这样的:

是否有任何可用的库可以粘合在一起以获得对此类内容的支持?

0 投票
2 回答
685 浏览

haskell - Digestive Functors with a variable number of subforms (Snap/Heist)

I'm working on porting a site from PHP to Snap w/ Heist. I've ported some of the simpler forms to using Digestive Functors successfully, but now I have to do the tricky ones that require the use of subforms.

This application manages producing flyers for retail stores, so one of the tasks that need to be done is adding an ad size and defining its physical dimensions on the printed flyer. Sizes will vary depending on the type of page (configurable by the flyer owner) and its orientation (which can only be controlled by the administrators).

what the form looks like in the PHP version

This form is guaranteed to have a minimum of 3 cells, most likely going to have 9 cells (as pictured above from the PHP version), but could theoretically have an unlimited number.

Here's what I've got so far for the dimensions subform:

The form definition doesn't feel quite right (maybe I have completely the wrong idea here?). AdDimensions.dimensions should be a Maybe String, since it will be null when coming back from the database when running the query to get a list of all of the possible combinations of size_id/layout_id for a new ad size, but it will be not null from a similar query that will be run when creating the edit form. The field itself is required (ad_dimensions.dimensions is set to not null in the database).

From here, I have no idea where to go to tell the parent form that it has a list of subforms or how I might render them using Heist.

0 投票
1 回答
384 浏览

haskell - 在 javascript 中嵌入 Heist 标签

由于某些库不兼容,我无法在同一个应用程序中同时使用 Pandoc 和 Heist。因此,我决定使用Markdown.JS在客户端浏览器中处理从 Markdown 格式数据到 HTML 的转换。从长远来看,这可能会带来一些额外的好处,但从短期来看,这只是因为 Pandoc 依赖于 Blaze-HTML 0.4 而 Heist 依赖于 Blaze-HTML 0.5。

所以,在一个类似博客的应用程序中,我有一个用于填写每个条目的模板,但是每个条目的内容需要在页面加载后转换为 HTML。因此,我创建了一个如下所示的模板:

不幸的是,renderDiv 调用最终呈现如下:

我也尝试过使用字符串嵌入形式(就像我为模板中的 div id 所做的那样):

再次,它逐字呈现。

如何说服 Heist 在 javascript 中拼接 entryDate?

或者,我使用Prototype.JS作为 Javascript 库。有没有办法让我将脚本放在 div 中并基本上用“self”调用脚本?

0 投票
1 回答
123 浏览

haskell - 为什么我会收到 EitherT 类型错误?

当我尝试使用此功能加载我的 Heist (0.11) 模板时:

我收到此错误:

对我来说,loadTemplate似乎返回了预期的类型,除了用具体类型填充的类型参数。我错过了什么?

0 投票
1 回答
119 浏览

haskell - cabal install errors-1.3.1 失败

我正在尝试安装最新版本的 Heist,但errors-1.3.1无法安装依赖项。关于如何克服这个问题的任何建议?