2

我正在调试一些在 Yesod 中生成的 javascript 代码。Yesod 生成 javascript 文件,每个函数都在一行上,因此无法在函数内设置断点。有没有办法改变这种行为,以便 javascript 保留用于调试的格式?

4

2 回答 2

7

我目前使用的是 yesod 0.9,但我敢打赌他也可以在其他版本中使用。

在您的 Foundation.hs 中查找:

addStaticContent = addStaticContentExternal minifym base64md5 Settings.staticDir 
                                            (StaticR . flip StaticRoute [])

并将其更改为:

addStaticContent = addStaticContentExternal (\bs -> Right bs) base64md5 Settings.staticDir
                                            (StaticR . flip StaticRoute [])

我更改了 minifym -> (\bs -> Right bs) 它只是包装了即将到来的内容,在我们的例子中是 javascript,然后返回。或者 dave4420 在下面指出只需将 minifym 替换为 (\bs -> Right bs)点自由样式等效的 Right。这应该使您的 javascript 保留其格式。

于 2012-01-20T09:00:44.140 回答
0

文件中的addStaticContent函数Foundation.js文件视为一种特殊情况,它允许您通过将不同的缩小函数作为第一个参数传递来启用或禁用缩小(Right保持文件内容不变)。

此外,如果您使用 Google Chrome 进行 Javascript 调试,您可以使用漂亮打印按钮来调试缩小的 Javascript,如下所示:

漂亮的打印按钮

这为您提供了可管理的 Javascript 语法。

Javascript 是 Yesod 缩小由特殊用途的莎士比亚语言处理的所有内容的规则的例外。使用莎士比亚的当前实现通常不可能获得 HTML 和 CSS 的非缩小表示。

于 2012-01-20T02:47:34.170 回答