具有结构化内容的单个 PHP 页面的模板引擎?
Template engine for single PHP page with structured content?
我打算构建一个 PHP 网页,该网页将在嵌套 div、跨度、bootstrap 元素等中包含大量结构化数据,例如:
- 硬件
- 笔记本
- HP
- 苹果
- 戴尔
- 平板电脑
- 苹果
- 三星
- 软件
- 操作系统
- Windows 10
- ...
这个列表真的很长,有 100 多个元素。元素会不时发生变化,但所有元素和子元素的结构都是相同的。
现在,我想知道纯 HTML+CSS 是否是对此页面编码的最佳方式。由于元素的结构始终相同,因此使用模板可能是个好主意。但是,我不确定是否真的应该设置一个数据库和某种 PHP 框架,例如 Slim or Laravel/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 代码,这些代码会将您的视图代码变成意大利面条。
组件
重要的是您可以简单地使用支持您的应用程序所需的少数组件,并且您当然不需要 Laravel 或 Symfony。由于 Symfony 是作为组件开始的(并且实际上是 Laravel 项目的基础)我会把你推向 Symfony 组件,尽管在一天结束时,你也可以利用 Laravel(Blade,Eloquent),就像我提倡您使用 Symfony 的某些部分一样。 Symfony 只是我喜欢的社区和堆栈,并且在其他项目中以组件为基础使用的历史更长。
试用新的最小 Symfony4
最后但同样重要的是,出于多种原因,最新版本的 Symfony (Symfony 4) 确实值得一看。它现在本质上是一个微框架,带有最少的组件。他们宣传它比 v3 小 70%。
此版本的不同之处在于 Symfony flex 的创新与配方和 Composer 集成。它现在的构建是为了自动化很多事情,否则您可能必须自己解决这些问题才能将这些组件组合到一个应用程序中。
看看它,看看它是否可以帮助您使用最少的组件构建您的应用程序,并花费最少的时间来学习如何使它们协同工作。
综上所述,我建议您考虑:
- Symfony Components(您可能需要更多,具体取决于您的
最终解决方案)。
- Doctrine2
- Twig
- Symfony4
我打算构建一个 PHP 网页,该网页将在嵌套 div、跨度、bootstrap 元素等中包含大量结构化数据,例如:
- 硬件
- 笔记本
- HP
- 苹果
- 戴尔
- 平板电脑
- 苹果
- 三星
- 笔记本
- 软件
- 操作系统
- Windows 10
- ...
- 操作系统
这个列表真的很长,有 100 多个元素。元素会不时发生变化,但所有元素和子元素的结构都是相同的。
现在,我想知道纯 HTML+CSS 是否是对此页面编码的最佳方式。由于元素的结构始终相同,因此使用模板可能是个好主意。但是,我不确定是否真的应该设置一个数据库和某种 PHP 框架,例如 Slim or Laravel/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 代码,这些代码会将您的视图代码变成意大利面条。
组件 重要的是您可以简单地使用支持您的应用程序所需的少数组件,并且您当然不需要 Laravel 或 Symfony。由于 Symfony 是作为组件开始的(并且实际上是 Laravel 项目的基础)我会把你推向 Symfony 组件,尽管在一天结束时,你也可以利用 Laravel(Blade,Eloquent),就像我提倡您使用 Symfony 的某些部分一样。 Symfony 只是我喜欢的社区和堆栈,并且在其他项目中以组件为基础使用的历史更长。
试用新的最小 Symfony4
最后但同样重要的是,出于多种原因,最新版本的 Symfony (Symfony 4) 确实值得一看。它现在本质上是一个微框架,带有最少的组件。他们宣传它比 v3 小 70%。
此版本的不同之处在于 Symfony flex 的创新与配方和 Composer 集成。它现在的构建是为了自动化很多事情,否则您可能必须自己解决这些问题才能将这些组件组合到一个应用程序中。
看看它,看看它是否可以帮助您使用最少的组件构建您的应用程序,并花费最少的时间来学习如何使它们协同工作。
综上所述,我建议您考虑:
- Symfony Components(您可能需要更多,具体取决于您的 最终解决方案)。
- Doctrine2
- Twig
- Symfony4