handlebars-objc 是 Handlebars.js v2.0 的完整实现,适用于 Objective-C,并且将与 JavaScript 版本保持 100% 兼容。
(有关 Handlebars 的更多信息,请参见 Handlebars 主网站)
一般来说,如果您需要生成文本文档(如 HTML 文档)并且希望保持视图(模板)和模型之间的清晰分离,则应使用 Handlebars。
越来越受欢迎的选项是使用 Mustache 来此目的。Mustache 是一种非常简单的模板语言,大多数语言中都可用。
不幸的是,当尝试实现本地化、日期格式化以及许多其他基本用户界面需求时,使用 Mustache 迅速变得难以实现。开发人员很快发现自己需要在模型中添加特定于视图的数据,以绕过模板系统的限制。
Handlebars 是 Mustache 的实用超集,通过添加辅助函数和块辅助函数来解决其祖先的大部分不足。
辅助函数是由托管应用程序提供的用于模板中的小型渲染函数。
辅助函数通常帮助格式化模型中的原始数据(例如 iso 8601 日期),而块辅助函数提供对自定义迭代器和条件结构的支持。
块辅助函数已被用于在 Fotonauts 的 Ruby on Rails 中实现干净的缓存兼容的组合视图系统:Reporter 应用程序(http://www.fotopedia.com/reporter)使用组合视图系统,能够在服务器端和客户端以完全相同的方式渲染页面。它用 Ruby 编写,在 Java 前端中使用 Handlebars.java 渲染服务器端模板,并使用 Handlebars.js 在客户端渲染完全相同的模板。
所有这些都要归功于 Handlebars 和 Java 和 JavaScript 实现之间共享的一些非常简单的辅助函数。
Handlebars 实现可在 JavaScript、Java、Ruby(通过 therubyracer)和 PHP 中使用。
简而言之,如果您正在寻找具有干净视图/模型分离且需要在 Objective-C 和 JavaScript(或 Java)中渲染的模板系统,Handlebars 可能正是您所需要的。
请注意,某些 Mustache 实现提供类似于 Handlebars 的扩展,如果您仅打算在 Mac 或 iPhone 上渲染模板,我强烈建议您查看 GRMustache。GRMustache 是一个出色的库。
您有 3 种选择
将此导入语句添加到您的 Objective-C 实现中
#import <HBHandlebars/HBHandlebars.h>
然后添加
NSError* error = nil;
NSString* result = [HBHandlebars renderTemplateString:@"Hello {{value}}!"
withContext:@{ @"value" : @"Bertrand"}
error:&error];
NSLog(@"handlebars template evaluated to : %@", result);
运行您的应用程序,您应该在日志中看到 "Hello Bertrand!"。
恭喜!您刚刚渲染了第一个 Handlebars 模板。
如果您想阅读参考文档,请阅读 Handlebars 公共 API 参考文档。
因为 handlebars-objc 与 handlebars.js 完全兼容,所以请参阅 handlebars.js 文档 以详细了解 handlebars 语法。
文档文件夹包含一些指南,将帮助您逐步学习如何使用 handlebars-objc