HTML布局技术(用于管理面板)


HTML layout techniques (for admin panel)

我正在从头开始创建一个管理面板,我想知道有什么技术可以用来最大限度地减少重复代码的需要(尤其是HTML)。

很久以前,我只是在每个文件中重写了所有的HTML。虽然这为单页提供了最终的可修改性,但工作量和维护使其成为最糟糕的方式。

许多年前,我开始通过以下函数将PHP集成到HTML中:

PrintMenu();
PrintHeader();
PrintLeftBox();

虽然这缩短了对代码的需求,但也使得未来对页面的修改过于复杂。如果我想更改整个布局并从HTML中删除左框,该怎么办?现在我有数百页的PrintLeftBox();

这两种简单的方法几乎是我创建网站布局的唯一方法。

现在,我正在寻找一种更动态、更高效的方式来制作一个可以按页面修改并轻松重做的布局。

我的大部分页面看起来都一样;菜单在顶部,巨大的内容在中间,页脚在底部。而有些网站将需要不同类型的设置;顶部有一个菜单,左侧有某种导航,中间有一个项目列表,右侧可能有一个"编辑视图"。

如何创建一个可以处理不同页面的"布局系统"?

我不需要任何代码,我需要有人给我指明正确的方向。

在我看来,使用PrintMenu()拥有一百个页面是一件好事,因为你只需要更改该函数的内容就可以更新数百个页面的外观,至少只要你确保所有页面都使用该菜单。现在,如果你传递了一个参数,比如一个数组(这样你以后就可以更新它的属性),其中包含页面特征,那么这将使模型更加灵活。或者,如果你愿意,你也可以传递一个物体。

pageConfig = new oPageConfig
PrintMenu (pageConfig);
PrintHeader (pageConfig);
PrintLeftBox (pageConfig);

同时将变量传递给函数,您可以选择不显示菜单(例如,对于没有菜单的特殊页面)。

在这种情况下,使用模板引擎非常有用。根据您的喜好,从以下两种解决方案中选择一种。

  1. 在后台,尝试Jade(Node.js)、TWIG(PHP)。。。

    您可以在此处找到更多信息:http://en.wikipedia.org/wiki/Comparison_of_web_template_engines;

    MenuHeaderFooter将被分离在不同的文件中,并且可以被包括在其他html文件中,这些文件将由服务器部分的模板引擎渲染。

  2. 在前端,尝试Angular.js或其他web MVC框架,

    这种解决方案的缺点是,您可能需要花费更多的时间来提供稳定的restful api,因为所有的渲染工作都是由Angular.js在客户端部分完成的。