FrontController模式是否与单页面应用

时间:2018-01-18 17:52:59

标签: php html design-patterns knockout.js front-controller

我正在使用前端的KnockOutJS和后端的PHP开发应用程序。

后端有两个入口点:index.php,它包含所有的html代码,包括来自knockoutJS的所有JS文件和我的自定义JS文件,css等。另一个是main.php,这是我所有的地方AJAX请求来自我的ViewModel,它是纯PHP。

我没有看到如何在不将html和php代码混合到同一个文件(index.php)中的情况下将其作为单个条目应用程序。这样做会适得其反,因为在同一文件中混合使用多种语言通常会令人困惑。

我的问题是,在这种情况下如何应用一种FrontController模式? FrontController模式看起来非常像命令模式。它的优点是什么? (除了有一个入口点)我如何拆分main.php文件,以便连续30行if else语句,每种请求都有一个?

1 个答案:

答案 0 :(得分:0)

通常,前端控制器用作应用程序的中心入口点。

结合路由器,调度员和MVC,前端控制器带来了真正的优势和明确的职责分离。

使用前置控制器可以非常轻松地创建Clean URL或“漂亮的URL”。通常,您需要一个相应的.htaccess文件,该文件会将所有请求转发给前端控制器(index.php)。

e.g。

# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L] 

在前端控制器中,应用程序正在进行自举,并通过匹配URL路径将请求转发到相应的控制器操作。控制器接收请求,将计算的数据传输到View(模板引擎)进行渲染,并将视图的结果作为响应返回。