我只是很好奇有多少开发者真的这么做了?
到目前为止,我还没有,我只是好奇它是否真的有助于让事情看起来更清洁,更容易理解。我听说像Smarty这样的模板引擎有帮助,但我也听到了相反的情况。他们只是创造了不必要的开销,而且就像学习一门新语言一样。
这里有没有人有模板经验?你对他们有什么感受?对大项目有帮助还是浪费时间?
旁注:我工作的公司没有设计师,只有两名开发人员在这个项目上负责重新设计/升级。我也使用了一些AJAX,这会出现模板引擎的问题吗?
答案 0 :(得分:10)
这种做法不仅使代码看起来更清洁,而且还有许多长期和短期的好处。
组织代码永远不会出错。首先,如果其他人必须在您之后接听,那么维护起来会更容易,也更容易阅读。我以前和Smarty一起工作过很好,它让设计师不会干扰程序代码。
使用模板系统和框架可以更轻松地完成任务。你可以遵循的经验法则是DRY(不要重复自己)。框架可以帮助您实现这一目标。
您可能希望查看MVC,这是这些框架所基于的模型。但是您可以在不必使用框架的情况下实现此设计结构。避免学习曲线。对于像Zend这样的框架,学习曲线远远大于其他框架。
我发现Code Igniter相当容易使用,并且在他们的网站上有一些非常有用的视频教程。
最好的运气!!
答案 1 :(得分:6)
实际上,这是需要与视图分离的业务逻辑。您可以在视图中使用php作为“模板语言”。
你可以在我认为的任何模板引擎上使用ajax。
修改的
我的原始回复解决了是否使用模板引擎来生成HTML的问题。
我认为只要你将业务逻辑与表示逻辑分开,php就足够用于模板任务。
即使对于简单的页面也值得这样做,因为它使您能够:
一个模拟MVC并且不使用对象的简单解决方案可能是:
答案 2 :(得分:2)
PHP 是模板引擎(或者如果您愿意,还可以是超文本预处理器)。当HTML与PHP逻辑混合在一起时,维护变得非常困难,这就是为什么你需要单独定义函数来构建各个部分,并简单地从嵌入在HTML中的短函数调用构建页面。完成这样的事情后,除了选择分隔符之外,我认为Smarty和原始PHP之间没有太大区别。
答案 3 :(得分:2)
关注点分离对于任何类型的软件开发都是非常重要的承租人,即使在网络上也是如此。很多次,我发现人们只是将所有内容放入尽可能少的文件中并将其称为一天。这肯定是错误的做法。如前所述,它将有助于代码的可维护性,但更重要的是,它可以帮助您阅读代码。当一切都分开时,你可以轻松思考。
我发现,Code Ignitor一直是学习PHP最容易学习的框架。我几乎开始了我目前的工作,并且在几天之内就开始运行它,从没有听说过,非常有效地使用它。我也不认为它是另一种语言。基本上,使用框架迫使我以可管理的方式组织事物,并且添加的功能对于使用jQuery等插件或使用Java导入包是很麻烦的。认为这就像学习另一种语言似乎很愚蠢。
因此,简而言之,组织组织。但请记住,有一定程度的抽象只是变得荒谬。一个经验法则是一个类(或我们的文件中的文件)应该做得很好。这并不意味着它是一个包装打印的类,但是接受一个字符串,使用复杂的算法对其进行格式化然后打印它(这只是一个例子)。每个类都应该做一些特定的事情,你可以在没有任何框架的情况下完成。然而,MVC的优点在于它可以让你进一步组织事情,不仅仅是在单个类级别,而是在“包”层面,即模型,视图和控制器(至少在这些框架的情况下;还有其他方法来打包项目)。所以,现在你有单个类可以很好地完成任务,然后你可以将它们与类似的类组合在一起,从而完成其他任务。这样,一切都保持非常干净,易于管理。
一旦将事物组织成类,然后将包组织起来,最后一个层次就是如何在包之间访问这些类。当使用MVC时,访问通常会进入Model< - > Controller< - > View,从视图中分离模型(通常是数据库内容和PHP世界中的“业务”代码)(通常需要信息)来自用户,并将其传递给控制器,控制器将在必要时从模型中获取更多信息,或者使用输入信息执行其他操作)。控制器类似于其他两个软件包之间的交换机通常。同样,还有其他方法可以用于包装等,但这是一种常见的方式。
我希望有所帮助。
答案 4 :(得分:0)
Smarty和其他php模板框架实际上除了编译到PHP之外什么也没做,并且他们还在大多数情况下缓存他们的结果以允许更快的处理。您可以自己完成所有这些操作,但如果您查看Smarty生成的已编译模板,并与您创建的原始Smarty模板进行比较,您会发现一个模板比另一个模板更具可读性。
答案 5 :(得分:0)
这些天我主要编写mod_perl并在我们正在进行的项目中途开始使用模板(HTML :: Template)。如果我不得不再次做出决定,我会从一开始就使用模板 - 稍后重写使用模板有点乏味,虽然有益,因为你获得了更好,更清晰的代码。对于php中大于2-3页的任何内容,我也会使用一些模板引擎。
答案 6 :(得分:0)
Smarty这样的模板引擎的一大优势是,非开发人员可以使用它来嵌入前端使用的必要逻辑(除了最简单的站点之外,所有逻辑和显示都无法分离)。但是,如果开发人员是维护页面的人,那么在我看来使用PHP会更好。
如果你分离出大的逻辑块并为循环和for-each流程控制语句保持一致的模式(即不使用print语句,或者只使用单行的print语句等)那么应该是好的。