php - 具有结构化内容的单个 PHP 页面的模板引擎?

标签 php css twitter-bootstrap laravel slim

我打算构建一个 PHP 网页,它将在嵌套的 div、跨度、 Bootstrap 元素等中包含大量结构化数据,例如:

  • 硬件
    • 笔记本
      • 惠普
      • 苹果
      • 戴尔
    • 平板电脑
      • 苹果
      • 三星
  • 软件
    • 操作系统
      • Windows 10
      • ...

这个列表真的很长,有 100 多个元素。元素会不时发生变化,但所有元素和子元素的结构都是相同的。

现在,我想知道纯 HTML+CSS 是否是编写此页面代码的最佳方式。由于元素的结构始终相同,因此使用模板可能是个好主意。但是,我不确定我是否真的应该设置数据库和某种 PHP 框架,如 SlimLaravel/Lumen为了生成代码。毕竟,它只是一个没有路由、表单、登录等的页面。所以这可能太多了。

也许,像 Plates 这样的模板引擎可能是答案?但是我应该在哪里存储数据呢?

对于这样的用例,您的选择是什么?包含大量结构化数据的单页?

非常感谢任何帮助!

最佳答案

根据您的主题行,我想澄清一些事情然后提出解决方案。

PHP 组件和编写器

最先进的 PHP 开发利用 Composer编排组件库。这可以是完整堆栈框架的形式,也可以是解决您遇到的问题的几个特定组件库的形式。

数据存储

您的示例显示具有简单层次结构的数据。当然,为了便于维护,某种类型的数据存储会很有帮助。关系数据库或文档数据库将完成这项工作。如果那是您想要的,我建议您使用特定的 ORM 或至少使用其中的一部分,而该 ORM 就是 Doctrine。

为什么要学说?因为它支持许多最流行的开源 RDBMS,而且如果您只想实现一些简单的查询,它还允许您在没有完整 ORM 的情况下使用它的 DBAL 层。话虽如此,如果您可以选择使用 MongoDB,MongoDB 集合可以很好地支持层次结构。 Doctrine2 的一个重要特性是它支持 MongoDB,这使它有别于大多数其他 PHP ORM。

遇到所有这些麻烦的唯一真正原因是您还打算创建一个管理工具来维护您的分层数据。如果不这样做,您可以轻松地拥有包含 PHP 数组形式的数据的脚本。

模板化

对于模板,我的建议是使用 Twig。作为 Symfony 组件的一部分,Twig 是自包含的,也是 Symfony 全栈框架的一部分。它功能强大且设计精良,并且具有众多功能(尽管公平地说,Laravel 的 Blade 在大多数情况下具有类似的功能)并且包括 support for ESI对于像您描述的那样相对静态的页面,这可能是一个很棒的功能。

在 twig 中创建模板,与编写 PHP 代码来做同样的事情相比,您可以专注于您的标记,避免引入大量 PHP 代码,这些代码会将您的 View 代码变成意大利面条。

组件 重要的是你可以简单地使用你需要的几个组件来支持你的应用程序,你当然不需要 Laravel 或 Symfony。由于 Symfony 以组件的形式开始它的生命(并且实际上是 Laravel 元素的基础)我会把你推向 Symfony 组件,尽管在一天结束时,你也可以在中使用 Laravel(Blade,Eloquent)的部分就像我提倡您使用 Symfony 的某些部分一样。 Symfony 只是我喜欢的社区和堆栈,并且在其他元素中以组件为基础使用的历史更长。

试用新的最小 Symfony4

最后但同样重要的是,出于多种原因,最新版本的 Symfony (Symfony 4) 确实值得一看。它现在本质上是一个微框架,带有最少的组件。他们宣传它比 v3 小 70%。

此版本的不同之处在于 Symfony flex 的创新与配方和 Composer 集成。它现在的构建是为了自动化很多事情,否则您可能必须自己解决这些问题才能将这些组件组合到一个应用程序中。

看看它,看看它是否可以帮助您使用最少的组件构建您的应用程序,并花费最少的时间来学习如何使它们协同工作。

总而言之,我建议您考虑:

关于php - 具有结构化内容的单个 PHP 页面的模板引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49371530/

相关文章:

javascript - 我如何从中创建 Bootstrap 行? ( react JS)

html - 导航栏链接颜色在 Bootstrap 中不起作用

javascript - 在 PHP 中使用斜杠 (/) 的字符串问题

css - ASP.NET MVC 的动态 CSS?

php - 将 WordPress 网站连接到远程 MySQL 数据库?

CSS 转换/转换 - 谷歌浏览器中的 "shaky"图像

css - Div 不会在 IE8 中 float

html - Bootstrap 页脚位于页面中间

javascript - AJAX 联系表单的 PHP 代码

PHP 在 XML 开始标记上抛出错误