我应该如何保持网页的一致性


How should I keep webpages consistent

我对以web为中心的设计和编程相当陌生。

我有一个HTML+CSS和PHP的页面,我很满意。它有一个标题、一个主要内容区域和一个侧边栏
现在我正在写第二页。第二页的外观应与第一页相同。我将重用CSS,但第一页和第二页之间似乎有很多重复(例如,页眉和侧边栏中的内容几乎相同)。

在多页上重复是正常的吗?如果以后我想改变一些东西,我将不得不在(潜在的)许多地方改变它;这似乎很傻,所以我想我错过了什么。

我想也许我应该在一个"更大"的包装器中使用CSS中的"小部分",也许包括整个Header,然后将其包含在两个页面中;我不确定这是否是我应该走的正确方向(或者我会怎么做)。

我还想,也许我可以每次使用PHP动态生成页面,将生成打包到一个类中,然后得到类似myClass->generateHeader()的东西。无论如何,我使用PHP来生成一些页面,所以概念上的飞跃并不太大;另一方面,我认为生成每个请求的页面在性能方面更差,而且(从我的简短搜索来看)似乎需要几百行PHP来生成一段相当短的HTML,(假设它比一堆包含我无论如何都会编写的HTML的echo语句更复杂。)

搜索"创建HTML模板"是徒劳的,但我不确定我会用什么样的关键词来询问通常是如何处理的。

你如何坚持DRY并避免在网站中的几个相关页面上重复自己?

您可以使用php include方法:http://php.net/manual/en/function.include.php以便不必重复页面中始终需要的部分。例如,页眉和页脚、导航等。

为了回答您的另一个问题,使用类存储html部分是另一种方法,并且可以证明是有用的。它也不会增加很多额外的处理时间,除非您的类需要在初始化时进行大量计算。

一种常见的做法是分离页眉和页脚文件并将它们包括在内。关于这方面的一本好书是Larry Ullman的动态网页php和mysql。

但要快速浏览,请访问:http://www.davidjrush.com/blog/2009/08/php-header-and-footer-templates/

如果您担心某些事情会在多个资源中重复,请将它们排除在外。

改为在后处理中添加它们。

您可以在服务器级别上做到最好。如果需要,您还可以在该级别添加缓存,这样您的页面只生成一次,不会再生成一次(或者直到缓存过期)。

我同意Matt K的观点,这可能是更多的程序员与堆栈交换有关,但无论如何我都会提供一些提示。

我认为正常的事情是创建一些页眉/页脚文件。例如,你的头文件将包括你想要的每一页的所有内容,即徽标、菜单、css includes等。页脚对关闭包装器div、谷歌广告代码等很有用。

一旦创建了这些文件,对于每个页面,您只需执行以下操作:

<?php include("header.php"); ?>
BODY OF PAGE
<?php include("footer.php"); ?>

:)

如果任何组件都是静态组件(例如侧边栏),那么您可以将静态HTML放在一个文件中,并简单地将其include放在相关位置。(OO替代方案:在静态HTML中为您拉入一个View对象。)

如果您在这些组件中需要一些自定义逻辑,那么include仍然可以工作,但由于您讨论了基于类的替代方案,我建议在您的应用程序中构建MVC架构。

MVC框架可能会将页眉/侧边栏/页脚等视为部分视图(主视图中较小的组件),或整体布局的一部分

布局选项非常有意义,因为它将主要内容的视图与页面组件如何结合在一起的总体想法解耦。这也意味着修改布局非常容易(例如,通过更改一个布局文件,将侧边栏放在右边而不是左边)。