Фронтальная архитектура – горячая тема, и по хорошей причине.
Поскольку все больше и больше логики переместились в JavaScript на интерфейсе, приложения стали громоздкими для решения.
Это в свою очередь, привело к повышению рамок и моделей приложения для управления этой сложностью.
Хотя нет единого правильного выбора для архитектуры, существует ряд шаблонов, которые начали появляться.
Они часто инкапсулируются в стартерских шаблонах или даже настроенных приложениях.
Одной из таких приложений является Nuxt.js Отказ NUXT.JS обеспечивает прикладную структуру более высокого уровня на вершине Vue.js.
Используя NUXT.JS, вы выбираете определенным набором набора предельных архитектурных решений. В этом посте я собираюсь пройти 7 из этих решений и вытягивайте некоторые преимущества каждого.
В конце концов, выбираете ли вы использовать NUXT.JS или нет, вы можете рисовать с этих уроков для создания собственных приложений.
1. Универсальный JavaScript с рендерингом бокового сервера и гидратацией
Один выбор, который unxt.js делает для вас, заключается в том, что ваше приложение должно быть в состоянии сделать те же страницы и компоненты на сервере и клиенту.
Страницы, представленные на сервере, доставляют полную страницу HTML мгновенно готовую к рендерингу, а затем «гидратировать» страницу с JavaScript на клиенте, чтобы добавить интерактивность и повернуть страницу в приложение «Одно страница» (SPA) для будущей навигации.
Это означает, что приложения NUXT разделены приложениями JavaScript, которые загружают данные, используя интерфейс API, не встроенный в другие рамки приложений на стороне серверов или накладывают на статический HTML.
Это также означает, что логика, которая может работать только на сервере (например, доступ к файловой системе) или клиенту (например, доступ к библиотекам окно
), должны содержаться в специальных жизненных циклах или специальных Компонент обертки NO-SSR .
Преимущество заключается в том, что вы получаете некоторые из лучших свойств обездоношенных серверов, так и SPA-приложений – быстрое время для первого просмотра страницы, в то время как также будет эффективным сетью и иметь все преимущества задержки и интерактивности, если для SPA.
2. Предварительная обработка асинхронных данных
Чтобы реализовать преимущества Pre-рендеринга на сервере, вам необходимо убедиться, что ваш рендеринг на стороне сервера имеет все необходимое для него данных перед рендерингом. Это тривиально для статических страниц, но для динамических приложений, которые зависят от вызовов API, вам необходимо убедиться, что все критические данные выбираются до того, как страница отобразится и отправляется с сервера.
Даже для чистых SPA-приложений может быть полезно иметь крючки, которые позволяют вам указать, какие данные необходимы перед отображением страницы, и что может быть заполнено впоследствии.
В NUXT есть три различных крючка, представленные специально для этой цели: NUXTSERVERINIT
, извлекать
и asyncdata
Отказ Также возможно использовать промежуточное ПО для этой цели.
Каждая из этих книг имеет разные нюансы и использовать случаи использования, но архитектурный узор ясен: Обеспечить механизмы предварительной выборки любого типа асинхронных данных, используемых в вашем приложении.
3. Деконструировать страницы в макеты, страницы и компоненты
Одним из прекрасных вещей о компонентных архитектурах является то, что можно зачать все как компонент.
Однако при переводе этого в систему, которая использует маршрутизацию для создания различных страниц, полезно добавить еще более структуру поверх этой абстракции.
NUXT делает это с помощью концепций страниц и макета. Страница соответствует маршруту, и естественным образом подходит тем, как мы привыкли думать о сети. Каждая страница может иметь макет, что он отображает внутри, поэтому макеты становятся способом создания общей структуры на страницах.
Эти инструменты – страницы и макеты – не только могут быть использованы для совместной обмена шаблонной структурой, но обеспечивают натуральные крючки для промежуточного программного обеспечения или предварительной выборки данных. Например, макет администратора может не только показывать навигацию администратора, но также включает промежуточное программное обеспечение, которое проверяет, что у пользователя есть разрешения администратора, перенаправление, если нет.
4. Организуйте структуру файлов по роли
Одним из первых вопросов в любом виде приложения является то, как организовать файлы. NUXT принимает относительно простой подход, пока еще создавая структуру.
Файлы разделены ролью, с каталогами на Компоненты
, Макеты
, страницы
, промежуточное программное обеспечение
, плагины
, магазин
, компилитируемый Активы
и полностью статический
ресурсы.
Я нашел это также полезно добавлять каталоги на смешивание
и lib
(aka Другая неразсущенная логика, такая как API Wrappers), но ваш пробег может варьироваться.
5. Маршрутизация на основе файловой системы
Еще один архитектурный шаблон, который NUXT представляет собой маршрутизацию на основе файловой системы. В то время как менее гибкий, чем чисто программированная маршрутизация, этот подход приносит ряд преимуществ.
Во-первых, это позволяет новичкам для новичков к кодовой басе находить именно где можно начать при рассмотрении определенной страницы. Пытаясь отладить /Вход
страница? Посмотрите на страницы/login.vue
Отказ
Это также уменьшает количество решений, которые необходимо сделать путем стандартизации структуры маршрута.
Самый идеальный для более статических маршрутов, Сегментная динамическая маршрутизация Предоставляет достаточно гибкости для большинства веб-сайтов, и если вы абсолютно должны иметь более сложные маршруты, вы всегда можете отступить в совершенно пользовательский маршрутизатор Отказ
6. Разложите свой магазин Vuex в модули
Vuex предоставляет возможность разделить свой магазин в модули
, с (необязательно имен) отдельные государственные объекты, полученные, мутации и действия.
В NUXT этот режим рекомендуется и по умолчанию, с отдельными файлами в магазин
Каталог автоматически становится модулями Vuex пространства.
Хотя для простых приложений это может быть излишне, это почти чистая победа. Тем более что, поскольку NUXT заботится обо всех бойке на создание магазина на основе модуля без необходимости беспокоиться об этом.
7. Используйте промежуточное программное обеспечение, чтобы поделиться логикой по маршрутам
Marmware – это очень распространенный подход к совместной поддержке функциональности на стороне сервера, что позволяет разработчикам слой на функциональность, которые проверяет запрос, выполняет некоторую логику и либо добавляет некоторые данные или решает, необходим ли перенаправление.
NUXT принимает эту концепцию и применяет его к маршрутизации на стороне клиента. И из-за универсальной архитектуры JavaScript она устанавливает вещи, чтобы одинаковую промежуточное программное обеспечение, находящиеся в зависимости от того, какой файл сервера или клиента не получается.
Промежуточное программное обеспечение может быть применено в любой Макет
или Страница
Уровень, что делает его идеальным для таких вещей, как проверка аутентификации или авторизации.
Он также может быть запущен в режиме Async, позволяя ему предпринимать данные, похожие на другие асинхронизированные крюки. Единственным недостатком использования его для этой цели является то, что более позднее промежуточное программное обеспечение может привести к перенаправлению, поэтому дорогие вызовы API, вероятно, должны быть сохранены на более позднее в жизненном цикле.
Упаковка
Как мы покрывали, NUXT делает ряд вариантов передней архитектуры для вас прямо из коробки.
Это может значительно ускорить процесс построения сложного проекта VUE.
Они также делают боковую сторону сервера Breeze, выполняя всю конфигурацию, которую вы могли бы в противном случае надо надо настроить.
Для тех, кто не хочет проходить весь путь в Универсальный JavaScript, они также предоставляют режим чистого режима поставки SPA, а для тех, кто со статическим контентом вы также можете предварительно прибуживать на каждой странице статически аналогичной работе GATSBYJS или VUE
Я настоятельно рекомендую попробовать NUXT для вашего следующего проекта Vue Vue, но даже если вы этого не сделаете много, чтобы учиться у того, как они приближаются к передней архитектуре.
Слияние – Если вы заинтересованы в этих типах тем, вы, вероятно, должны Следуй за мной в Twitter или присоединиться к моему списку рассылки. Я отправляю еженедельную рассылку названного « Пятница Frontend ‘. Каждую пятницу я отправляю 15 ссылок на лучшие статьи, учебные пособия и объявления в CSS/SCSS, JavaScript и в сортировке других потрясающих предельных новостей. Подпишите здесь: https://zendev.com/friday-frontend.html.
Оригинал: “https://dev.to/kball/7-frontend-architecture-lessons-from-nuxtjs-3a16”