По сравнению с тем, что было около 10 лет назад, я заметил сдвиг в сторону фреймворков, использующих стиль маршрутизации, который отделяет путь URL-адреса от файловой системы. Обычно это достигается с помощью шаблона фронт-контроллера.
А именно, если раньше URL-путь был сопоставлен непосредственно с файловой системой и, следовательно, отражал точные файлы и папки на диске, в настоящее время фактические URL-пути запрограммированы для направления определенным классам посредством конфигурации и, как таковые, больше не отражают файл системная папка и структура файла.
Вопрос
Как и почему это стало обычным явлением? Как и почему было решено, что «лучше» до такой степени, что когда-то банальный подход к файлу был фактически оставлен?
Другие ответы
Здесь есть аналогичный ответ, который немного касается концепции маршрута, а также некоторых преимуществ и недостатков: почему в PHP-фреймворках используется концепция «маршрута»?
Но это не касается аспектов исторических изменений или того, как или почему это изменение происходило постепенно, в тех случаях, когда какие-либо новые проекты в настоящее время в значительной степени используют этот новый шаблон стиля маршрутизации, а прямая передача в файл устарела или прекращена.
Кроме того, большинство из упомянутых преимуществ и недостатков, по-видимому, недостаточно значительны, чтобы оправдать такие глобальные изменения. Единственное преимущество, которое я вижу в этом изменении, возможно, это скрытие системы файлов / папок от конечного пользователя, а также отсутствие ?param=value¶m2=value
, что делает URL-адреса немного чище. Но были ли они единственной причиной перемен? И если да, то почему эти причины были за этим?
Примеры:
Я наиболее знаком с PHP-фреймворками, и многие популярные современные фреймворки используют этот разделенный подход маршрутизации. Чтобы это работало, вы настраиваете перезапись URL-адреса в Apache или аналогичном веб-сервере, где функциональность веб-приложения обычно не запускается через путь URL-адреса к файлу.
Zend Expressive
https://docs.zendframework.com/zend-expressive/features/router/aura/
https://docs.zendframework.com/zend-expressive/features/router/fast-route/
https: //docs.zendframework. ком / Зенд-выразительный / функция / маршрутизатор / ZF2 /Zend Framework
https://docs.zendframework.com/zend-mvc/routing/
Laravel
https://laravel.com/docs/5.5/routing
CakePHP