每个页面都需要一个有很多东西的HEAD:我的框架设计是否很好?

时间:2010-01-09 16:51:18

标签: php architecture

我突然意识到我需要一个智能解决方案来解决这个问题。

在我的框架中,有:

  • 视图(实际上只是几乎没有PHP输出数据的HTML文件)
  • 查看控制器(创建视图,做一些逻辑)

因此,对于像https://stackoverflow.com/questions/ask这样的每个页面,我都有一个由框架调用的ViewController。有一个RootViewController可以创建一个布局视图。布局视图指定页眉和页脚以及站点的主要结构。例如,它有一个contentView占位符。

通过这种设计,我只将HEAD部分指定一次,因此DOCTYPE,TITLE和所有其他内容都粘贴在该布局视图模板上。

加载RootViewController的每个View Controller都可以设置标题,只需在RootViewController上调用一些方法,就可以附加一个CSS包含或Javascript包含(这是HEAD中那些花哨的链接rel标签之一)。

到目前为止,这实际上非常灵活,因为如果你没有指定任何东西,你会获得有用的默认值和合理的HEAD以及所需的一切。

但我看到了这些问题:

  • 我不能让框架用户的生活更简单吗?布局模板必须包含杀死生产力的所有“垃圾”。为什么框架用户甚至不得不考虑设置正确的HEAD?它总是完全相同的问题,需要完全相同的语法,完全相同的CSS和框架的Javascript包含等等......你明白了。

  • 它必须包含完全相应的占位符变量以匹配RootViewController的方法。

所以为了解决这个问题,我想我可以提供一个花哨的变量,可以插入到任何视图模板中输出HEAD块。

我只是想看看你对此的看法,以及我的解决方案是否正常,或者我是否要在这里犯一个大的设计错误。如果是这样,会有什么替代方案?

1 个答案:

答案 0 :(得分:2)

您可以让“用户”仅指定正文模板,并自动输出您的头部,“用户”正文和页脚。然后模板设计者不必记住包含一些任意变量,如果您决定更改页眉/页脚的方式,则不必更新每个模板。

您还可以允许模板设计者通过调用某个函数来覆盖此行为。

这可能是理想的:90%的情况下,您的框架可以在没有任何开发人员努力的情况下做正确的事情。只有在用户想要做其他事情的10%的情况下,他们必须竭尽全力通过函数调用来实现。