PHP自定义'MVC':包含'modules'即包含HTML/CSS/JS的正确方法

PHP Custom 'MVC': Including 'modules' that contain HTML/CSS/JS the right way

我已经创建了我的自定义 PHP 'MVC',如果您这样称呼它的话,它具有将页面和某些组件视为 'modules' 的结构,方法是将它们存储在它们的自己的文件夹,其中包含与 'modules' 相关的任何代码。模块大致如下所示:

├── popup/
│   ├── popup.css
│   ├── popup.js
│   └── popup.php
└── home/
    ├── index.php
    ├── css
    │   └── style.css
    ├── js
    │   └── script.js
    └── html
        └── layout.php

我发现这个结构更好用,显然这个人也是:Lay Out Your Code Like You'd Lay Out Your House

popup是可以添加到视图的组件,home是视图(I我没有将它们存储在同一位置,只是为了这个示例简化了结构)。

我希望能够轻松地将 popup 组件包含在它所使用的视图中。我现在做的是分别包含 CSS、JS 和 HTML,像这样:

on home/css/style.css:
@import "../../popup/popup.css"

on home/js/script.js:
// @codekit-prepend '../../popup/popup.js';

on home/html/layout.php:
include '../../popup/popup.php';

我脑海中的完美案例场景是能够在每个视图上包含带有一个衬里的 popup 组件,类似于包含 PHP 库。有正确的方法吗?

我之前使用 link[= 在 html 文档中渲染 popup 的 CSS 和 JS 40=] 和 script,所以我可以通过只包含 popup.php 来包含完整的模块。这会增加文档必须加载的外部 CSS 和 JS 文件的数量。传说中还包含一个大 CSS/JS 文件比包含许多小文件更好。这在 2020 年仍然有效吗?

回复:“传说”:捆绑和缩小将减少多个请求的开销和总字节数。

您问题的另一部分——“我如何简化模块的使用”——可能会涉及加强您的 MVC 代码库。您可能想要做的是每个模块都有一个核心文件或例程,将由您的基本代码调用.. include_me.php 或 class::bootstrap(&$theApp) ..您的里程可能会有所不同 -然后在要包含 CSS 和 JS 的部分中,您遍历 theApp-arrays,如 $pageCSS、$headJS 和 $bodyJS,并在适当的位置包含所有文件include_me/bootstrap 例程放入这些数组。