1

来自 PHP 的背景,我习惯了我可以简单地将服务器端脚本嵌入到我的 HTML 页面中的想法。echo <h1>Hello World</h1>;在网上搜索,除了使用像 Lift 这样的 web 框架外,我还没有在 Scala 中找到一个简单的等价物。我可以用 Scala 做到这一点吗?

4

3 回答 3

4

请参阅缩放PlayFramework

Scalate Scaml 非常接近你想要的

在此处输入图像描述

Scalate 支持以下模板格式

  • Mustache是 Mustache 的 Scala 方言,用于无逻辑模板,也可以使用 mustache.js 在浏览器中工作
  • Scaml是 Haml 的 Scala 方言,非常适合生成 HTML / XHTML
  • Jade是用于 HTML / XHTML 标记生成的更干燥的 Scaml 方言
  • SSP类似于 Rails 的 Velocity、JSP 或 Erb
于 2013-08-15T20:59:25.970 回答
3

PHP 作为一种旨在嵌入 HTML 页面的语言是一个例外。Apache 必须mod_php为您执行此操作。Scala 与许多其他语言一样,要求您启动 Web 服务器来响应请求并呈现 HTML。您可以使用 Lift 或 Play 等框架,也可以制作基于 Servlet 的应用程序并将其部署到任何 Servlet 容器中。

可以设置一个 Apache 服务器来运行 CGI 脚本,然后插入一个 .scala 文件以由该scala命令运行 - 但它会非常慢,因为它每次都必须启动 Java VM。除了抓挠精神痒之外,我不建议这样做。

于 2013-08-15T19:21:50.567 回答
0

以下是使用 SSP 生成 HTML 模板的方法。

定义模板将访问数据的对象。

object FunStuff {
  val dinnertime = "eating stuff!"
}

创建模板:

<% import mrpowers.scalate.example.FunStuff  %>
<p>
    My message is "<%= List("hi", "there", "reader!").mkString(" ") %>"
    At dinnertime, I like <%= FunStuff.dinnertime %>
</p>

渲染模板:

val sourceDataPath = new java.io.File("./src/test/resources/simple_example.ssp").getCanonicalPath
val engine = new TemplateEngine
println(engine.layout(sourceDataPath))

结果如下:

<p>
    My message is "hi there reader!"
    At dinnertime, I like eating stuff!
</p>
于 2020-12-22T03:16:25.390 回答