我使用Smarty来处理我的观点。为了最大限度地重用代码,我将视图文件拆分为小段,并将它们包含在需要的地方。这很有效,因为它在浏览器上呈现时保持我的标记一致。
问题是我还有JS会做某些DOM操作。这意味着我的JS需要了解标记结构等。在很多情况下,JS被迫维护Smarty模板文件中已存在的标记的相同副本。
这将成为维护的噩梦,因为标记的任何更改都必须在Smarty模板文件中完成,并且可能在JS标记中完成。
关于如何优雅地处理这个问题的任何建议?或者我只是接受这个必要的邪恶?
答案 0 :(得分:0)
我将视图文件拆分成小段,只需将它们包含在需要的地方
对您的JavaScript执行相同操作。想想模块化和制作模块而不是页面。任何模块都包含HTML(在您的情况下为Smarty),JavaScript和CSS。任何需要该模块的页面都应该需要这三个文件。或者您可以将所有内容捆绑在一起以使包含模块更容易创建模块时,您将编辑模块而不是页面。这样你就不会通过编辑JavaScript或CSS / HTML来破坏它。
模块可以是任何可以与页面中其他模块无关的模块。当然,模块可以相互通信,但您需要为模块系统定义一致的API。
这种方法可以使维护更容易,但缺点是您必须几乎重写整个应用程序以使其模块化。