Соответствует ли шаблон FrontController для одностраничного приложения?
Я занимаюсь разработкой приложения с использованием KnockOutJS на внешнем интерфейсе и PHP на заднем.
Бэкэнд имеет две точки входа: index.php, который содержит весь HTML-код и включает в себя все JS-файлы из knockoutJS и мои пользовательские JS-файлы, css и т. Д. Другой - main.php, куда отправляются все мои AJAX-запросы. из моей ViewModel, и он использовал чистый PHP.
Я не вижу, как я могу сделать это приложение с одной записью, не смешивая HTML и PHP-код в одном файле (index.php). Это было бы контрпродуктивно, потому что смешивание нескольких языков в одном файле обычно сбивает с толку.
У меня вопрос, как я могу применить своего рода шаблон FrontController в этом случае? Шаблон FrontController очень похож на шаблон команд. Каковы его преимущества? (кроме одной точки входа) Как мне разбить мой файл main.php, чтобы у меня не было 30 операторов if else в строке, по одному для каждого вида запроса?
1 ответ
Обычно фронтальный контроллер используется в качестве центральной точки входа в приложение.
В сочетании с маршрутизатором, диспетчером и 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. Контроллер принимает запрос, передает вычисленные данные в представление (механизм шаблонов) для рендеринга и возвращает результат представления в качестве ответа.