【问题标题】:Do you think templates represent the best way for separating presentation logic from business logic? [closed]您认为模板代表了将表示逻辑与业务逻辑分离的最佳方式吗? [关闭]
【发布时间】:2009-01-11 18:15:44
【问题描述】:
我认为大多数模板引擎对于设计师和前端开发人员来说很难使用,而让程序员承担维护它们的负担。
并且在设计师更新 html 模型后频繁更新模板是一场噩梦,因为您的模板不再与原始 html 兼容。
I had this problem for very long time,最近我有一个idea,但我不知道我是不是在重新发明一些东西,或者是否存在更好的东西。
那么,我想问你是否找到了解决这个问题的更好的解决方案,如果有,是哪一个?
【问题讨论】:
标签:
html
business-logic
template-engine
【解决方案1】:
自从我切换到内容与演示完全分离后,我再也没有回头,原因如下:
您的业务逻辑变得非常清晰。如果没有混入 HTML 标记和表示逻辑,代码需要 ½ 的空间和不到 ½ 的时间来维护。可以通过指定两者之间的正式接口来减轻维护代码和表示之间链接的负担,即使是作为文本文件或 Wiki 注释,列出表示层呈现/需要的所有变量和值。
经常根据设计人员的更改更新模板意味着您的表示层应细分为各种“块”,例如菜单块、页面布局块和内容块。在大多数页面上,只有内容块不同。当使用 CSS 和其他现代 Web 技术正确划分和实现时,设计中的合理更改将对您的演示代码产生最小的影响。
CMS 进一步自动化了这个过程,从一致性和易于支持的角度来看,现在甚至 5-10 个页面的网站也可以从使用 CMS 与手动编码的 HTML 中受益。
1234563 DoS 会有,所以无论如何都不要惹他们);如果您不太关心安全性,PHPTal 和其他人几乎以“本机”速度运行。
至于我的工作解决方案,我有两个建议:
【解决方案2】:
是的,但前提是它们尽可能接近原生 HTML。
Dreamweaver 模板(忽略编辑器)基本上可以很好地完成这一点,因为它们基本上用一些 HTML 注释标记了一个普通的旧 HTML (POH™) 页面。
【解决方案3】:
我个人喜欢一些 CMS 解决方案如何使我能够将我的模板分成非常小的部分。 SiteCore 通过映射到用户控件的占位符和渲染很好地做到了这一点。
我过去也大量使用 UserControls 来分解常见的功能,如登录、菜单、页脚链接等,以便将来更容易修改或替换功能。 (ASP.NET)
您使用什么模板引擎? PHP 的 Smarty 之类的?