Vue для классических сайтов
Данный сайт я строю по классической схеме, сервер генерирует HTML, а JavaScript предоставляет пользователю дополнительные функции. Таким образом, например, редактор статей отличной вписывается в эту концепцию, кроме того, поскольку редактор статей доступен только в административной части сайта, то отсутствует необходимость заботиться об индексации этой части сайта.
Сейчас я имею вопросы к публичной части сайта. В частности, страница отдельный статей подразумевает полную замену контента, как следствие - вся страница должны быть обёрнута в тел vuejs. Страница довольно богата на контент, это и собственно статья, так же и теги, и прочие дополнительный атрибуты статьи. Я уже не говорю про блок комментариев.
Как следствие компонент будет оборачивать собой всю эту область или необходимо обеспечить какой-то способ связи между компонентами - например через аппликейшен. Связь через корневой компонент мне не нравится, даже если оно будет происходить с помощью событий, но это какая то дичь, если честно.
Вот есть у нас структура vuejs, которая обеспечивает взаимодействие компонентов между собой и это рекомендуемый путь, ему следует придерживаться. Это значить, что мы должны создавать компонент который и будет обеспечивать функционал требуемой области - т.е. нам нужен компонент просмотра статьи. Из этого следует что мы должны обернуть всю область просмотра статей в vue компонент.
И тут возникает вопрос о загрузке данных в этот компонент. Поскольку компонент оказывается сложным, для рендера ему необходим большой объём данных. Это собственно статья, тред и его атрибуты, теги статьи и вероятно будет что то ещё.
Саму статью можно поместить в слот, что позволит обеспечить индексацию этих данных. Контент текущей статьи будет получен в качестве слота, и на текущий момент в свойства компонента переезжают уже три параметра из числа перечисленных выше
Можно не рендерить статью на сервере, а предоставить её в качестве сырых данных, чтобы отрендерить её на клиенте. Так же сырыми можно поставить атрибуты и другую информацию, но в этом месте напрашивается серверный рендеринг, что выглядит костылём - непонятно какие преимущества даёт это подход в сравнение с rich-application. Можно загружать дополнительный данные по AJAX и это тоже лишнее. В общем, на данный момент я огорчён - будем искать решение.
Было бы здорово, если бы вы помогли найти мне решение в комментариях к этой статье, но я не сделал механику комментариев 😂