我只是找不到如何在hamlet模板中注释行.是否有一些注释语法?喜欢
-- <p>Some code should be ignored by template
Run Code Online (Sandbox Code Playgroud)
或者其他的东西?
谁能指点我一个如何使用没有Yesod的哈姆雷特的例子? http://www.yesodweb.com/book/templates是一个很好的文档,但我无法让我的ghci会话渲染一个简单的哈姆雷特模板而不会崩溃.
对于Hamlet模板机制,我理解模板在编译时被解析,导致源代码包含对blaze-html组合器的调用(以及可能因插值而导致的其他表达式).因此,插值发生的点(子树)在编译时是已知的.
在运行时,我们需要计算内插值(当然),并在树中"插入",即应用html组合器.他们都是?实际上,这些应用程序中的一些可以在编译时进行评估(那些在它们下面没有插值的应用程序).这会发生吗?
我试图在webfaction共享服务器上安装一个Hamlet,这样我就可以在那里编译和运行我的Web应用程序.我正在使用Yesod来开发应用程序.
我设法从源代码和bootstrapped cabal安装编译GHC 7.接下来我做了cabal install hamlet
并期望它能够工作.没运气!
我从cabal/GHC收到以下奇怪的错误消息.任何人都可以帮我吗?
$ cabal install hamlet Resolving dependencies...
Configuring hamlet-0.8.2...
Preprocessing library hamlet-0.8.2...
Building hamlet-0.8.2...
[ 1 of 14] Compiling Text.MkSizeType ( Text/MkSizeType.hs, dist/build/Text/MkSizeType.o )
[ 2 of 14] Compiling Text.Shakespeare ( Text/Shakespeare.hs, dist/build/Text/Shakespeare.o )
[ 3 of 14] Compiling Text.Hamlet.Parse ( Text/Hamlet/Parse.hs, dist/build/Text/Hamlet/Parse.o )
Text/Hamlet/Parse.hs:113:13:
Warning: A do-notation statement discarded a result of type String.
Suppress this warning by saying "_ <- ($) try string "!--"",
or by using the flag -fno-warn-unused-do-bind …
Run Code Online (Sandbox Code Playgroud) 使用yesod附带的hamlet模板语言,打印逗号分隔列表的最佳方法是什么?
假设这个代码只打印一个接一个的条目,如何在元素之间插入逗号?或者甚至可能在最后一个条目之前添加"和":
The values in the list are
$ forall entry <- list
#{entry}
and that is it.
Run Code Online (Sandbox Code Playgroud)
一些模板语言(如Template Toolkit)提供了检测第一次或最后一次迭代的指令.
我和哈姆雷特有一个奇怪的问题.我正在尝试使用$ forall迭代列表,但我不断收到"不在范围内"错误.我在Win7上运行yesod 0.9.2.2.
抛开可怕的设计,任何人都知道我哪里出错了?删除"db"的变量插值可以使执行正常.
相关的小村庄:
!!!
<h1> Database List
<hr>
<table>
<tr>
<td> Host
<td> Status
$forall db <- dbList
<tr>
<td> #{host db}
Run Code Online (Sandbox Code Playgroud)
相关的处理程序代码:
data Database = Database {dbType :: DBType,
host :: String,
user :: String,
password :: String
}
dbList = [Database Oracle "cpalmerws" "system" "***",
Database Oracle "bdblnx" "system" "***",
Database Postgres "localhost" "postgres" "***"]
getDBStatusR :: Handler RepHtml
getDBStatusR = do
mu <- maybeAuth
defaultLayout $ do
setTitle "DB Status Page"
addWidget $(widgetFile "dbstatus")
Run Code Online (Sandbox Code Playgroud)
运行yesod …
我开始使用Yesod Web框架.我有一些已经存在的模板HTML代码,我想自动转换为哈姆雷特代码结构.有没有办法做到这一点?
如果我有一条路线,例如
/foo/#String FooR GET POST
Run Code Online (Sandbox Code Playgroud)
如何在 hamlet 文件中插入此路径(例如,要发布到?)
以下不起作用:
<form method=post action=@{FooR} ... >
<form method=post action=@{FooR}someString ... >
<form method=post action=@{FooR}#someString ... >
<form method=post action=@{FooR}#{some_variable} ... >
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:明白了。它是
<form method=post action=@{FooR some_variable} ... >
Run Code Online (Sandbox Code Playgroud) 我在Yesod中使用QuasiQuotations,并且一切正常。但是我的文件变得很大,看起来也不好看。另外,我的TextEditor不能正确突出显示此语法。这就是为什么这样分割我的文件:
getHomeR :: Handler Html
getHomeR = do
webSockets chatApp
defaultLayout $ do
$(luciusFile "templates/chat.lucius")
$(juliusFile "templates/chat.julius")
$(hamletFile "templates/chat.hamlet")
Run Code Online (Sandbox Code Playgroud)
如果这是错误的,请告诉。这样做runghc myFile.hs
会引发许多错误,例如:
chat_new.hs:115:9:
Couldn't match expected type ‘t0 -> Css’
with actual type ‘WidgetT App IO a0’
The lambda expression ‘\ _render_ajFK
-> (shakespeare-2.0.7:Text.Css.CssNoWhitespace . (foldr ($) ...))
...’
has one argument,
but its type ‘WidgetT App IO a0’ has none
In a stmt of a 'do' block:
\ _render_ajFK
...
Run Code Online (Sandbox Code Playgroud)
和这个。
chat_new.hs:116:9:
Couldn't match type ‘(url0 -> [(Text, …
Run Code Online (Sandbox Code Playgroud) 我有一个用 ReactJS 制作的网站。在 中public/index.html
,我有
<head>
<script src="/lib/analyzejs-v1.js"></script>
<script src="/lib/analyzejs-v2.js"></script>
</head>
<body>
<div id="root"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
其中analyzejs-v1.js
有 6Mo,并且analyzejs-v2.js
有 3Mo;它们都是固定文件,我无法对其进行太多修改。
这两个文件不是模块;它们的功能已声明(例如,declare function f1(address: string): string;
在 中src/defines/analyzejs-v1.d.ts
)。analyzejs-v1.js
因此,某些组件通过使用函数名称直接调用函数f1(...)
,无需任何命名空间、导入或导出。其余组件analyzejs-v2.js
通过使用函数名称f2(...)
直接调用函数,无需任何命名空间、导入或导出。
加载这两个js库文件需要时间。所以我正在寻找一种方法来加载analyzejs-v1.js
或analyzejs-v2.js
根据组件(或 URL)。
那么有谁知道为不同组件加载不同JS库文件的常规方法吗?