Я пришел к тому, что понял, что мне нужно интеллектуальное решение этой проблемы.
В моих рамках есть:
- Представления (на самом деле это просто HTML-файлы с небольшим количеством PHP для вывода данных)
- Контроллеры представления (создание представлений, выполнение некоторой логики)
Так, например, для каждой страницы, такой как https://stackoverflow.com/questions/ask, у меня есть ViewController, который вызывается платформой. Есть RootViewController, который создает представление макета. В макете указываются верхние и нижние колонтитулы, а также основная структура сайта. Например, он имеет заполнитель contentView.
При таком дизайне я указываю часть HEAD только один раз, поэтому DOCTYPE, TITLE и все остальные элементы привязаны к этому шаблону представления макета.
Каждый View Controller, который загружает этот RootViewController, может установить заголовок, добавлять CSS-включение или Javascript-включение (которое является одним из этих тегов rel-link rel в HEAD), просто вызывая некоторые методы RootViewController.
Пока что это на самом деле довольно гибко, потому что если вы ничего не укажете, вы получите полезные значения по умолчанию и разумную ГОЛОВКУ со всем необходимым.
Но я вижу эти проблемы:
Разве я не могу сделать жизнь для пользователя фреймворка более простой? Шаблон макета должен содержать весь этот «мусор», который убивает производительность. Почему пользователь фреймворка должен даже думать о настройке правильного заголовка? Это всегда одна и та же проблема, нужен тот же синтаксис, те же самые включения CSS и Javascript фреймворка и т. Д. ... Вы поймете.
Он должен содержать точные соответствующие переменные-заполнители для соответствия методам RootViewController.
Поэтому, чтобы решить эту проблему, я подумал, что могу предоставить необычную переменную, которую можно вставить в любой шаблон представления для вывода блока HEAD.
Я просто хочу посмотреть, что вы думаете об этом, и если мое решение просто отлично, или я собираюсь сделать большую ошибку дизайна здесь. И если да, то какие будут альтернативы?