如何在Dart中创建服务器端模板,我可以为每个页面设置不同的<title />?

plo*_*man 9 dart

首先,我真的很喜欢Dart并继续尝试在实际项目中使用它,但后来遇到了像这样的问题,其他每个Web框架都有一个明显的解决方案,但我无法弄清楚如何让它在Dart中运行.

问题是我想使用单个基本模板呈现多个页面,我可以在服务器上设置页面标题,然后将页面提供给浏览器.

像这样简单:

<!DOCTYPE html>
<html>
 <head>
  <title>{{ custom_title }}</title>
 </head>
 <body>
  {{ page_content }}
  <footer>Hey, Seth Ladd!</footer>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后我将传递模板变量,这些变量将被替换{{ custom_title }}{{ page_content }}在被发送回浏览器之前.这样的模板解决方案是否存在于核心dart库中的任何位置?

我查看了Web组件/ Web UI的内容,但似乎不可能有<body>标签之外的组件.我也可以在客户端轻松改变这一点,但它有点肮脏的解决方案并提出一些SEO问题(因为标题是页面内容的重要指标).

Gre*_*owe 12

试用胡子,胡子模板的Dart实现,广泛使用的模板语法,以及多种语言的实现.

这是一个例子:

import 'package:mustache/mustache.dart';

main() {
    var source = '{{#names}}<div>{{lastname}}, {{firstname}}</div>{{/names}}';
    var template = new Template(source);
    var output = template.renderString({'names': [
        {'firstname': 'Greg', 'lastname': 'Lowe'},
        {'firstname': 'Bob', 'lastname': 'Johnson'}
    ]});
    print(output);
}
Run Code Online (Sandbox Code Playgroud)

Dart团队目前专注于客户端开发,因此核心库中缺少许多基本的服务器端功能.但是看看pub,有一些社区维护包可用.

另见这个类似的包:mustache4dart.