我正在开发一个在前端使用KnockOutJS和后端使用PHP的应用程序。
后端有两个入口点:index.php它包含所有的html代码,包括来自KNOCKOUTJ的所有JS文件和我的自定义JS文件,css等。 另一个是main.php,这是我所有的AJAX请求从我的ViewModel转到的地方,它是纯PHP。
我不明白如何在不在同一文件中混合 html 和 php 代码的情况下使其成为单个条目应用程序,(index.php(。 这样做会适得其反,因为在同一文件中混合多种语言通常会令人困惑。
我的问题是,在这种情况下如何应用一种前端控制器模式? FrontController 模式看起来非常像命令模式。 它的优点是什么?(除了具有单个入口点( 如何拆分我的主文件.php这样我就不会连续有 30 个 if else 语句,每种请求一个?
通常,前端控制器用作应用程序的中央入口点。
与路由器、调度程序和 MVC 相结合,前端控制器带来了真正的优势和明确的职责分离。
使用前端控制器可以非常轻松地创建干净的URL或"漂亮的URL"。通常,您需要一个相应的.htaccess
文件,将所有请求转发到前端控制器(index.php
(。
例如
# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
在前端控制器中,应用程序将引导,并通过匹配 URL 路径将请求转发到相应的控制器操作。控制器接受请求,将计算数据传输到 View(模板引擎(进行渲染,并将视图的结果作为响应返回。