Vue.js - отличный вариант для создания веб-приложений.
Для его использования у нас есть два основных инструмента:
- Vue CLI 3 Стандартный инструментарий для разработки Vue.js
Официальное решение для быстрой настройки приложения Vue. - Nuxt Универсальные приложения Vue.js
Да, мы поговорим об этом.
Но чем dœs Nuxt отличается от стандартного приложения Vue?
[TL;DR]
- Другой инструмент для настройки вашего приложения Vue
- Некое соглашение по конфигурации
- Возможность перехода от Одностраничного приложения (SPA) к Универсальному веб-приложению.
[UPDATE]
используйте сейчас Nuxt 2
установка
Установить Nuxt можно двумя способами:
- с vue-cli
- базовый
npm install nuxt
илиyarn add nuxt
, если вы пряжа, создайте несколько папок и добавьте несколько модулей, если вы хотите использовать препроцессоры
Я предпочитаю последний, так как он не зависит от каких-либо глобальных зависимостей… и это также хороший способ интегрировать Nuxt в существующий проект.
Для веб-приложения я всегда добавляю:
Я на 100% уверен, что в тот или иной момент они мне понадобятся.
Выполнение интернационализации как можно скорее не требует особых усилий и избавляет меня от скучной задачи по включению его позже (файл за файлом и добавление вызовов и ключей i18n ...)
структура приложения
Vue не требует какой-либо структуры, но мы все любим и должны оставаться организованными.
Если вы используете Vue CLI, он создаст такую структуру:
- vue.config.js
vue configuration
- 📁 src
- main.jsyour applications' entry point
– router.js
configuring routes
– App.vue
main Vue component
📁 assets
all static files
📁 components
other vue components
📁 views
your pages' components
📁 store
- index.jsyour Vuex Store
Nuxt потребует что-то подобное:
- nuxt.config.js
nuxt configuration
- 📁 статический
all static files
- 📁 стр.
all page files
- 📁 макеты
all layouts files
(нюхательная штука, о которой мы поговорим позже) - 📁 магазин
your Vuex Store
- 📁 плагины Vue plugins
Это более плоская структура с очевидными названиями.
команды
И Vue CLI, и Nuxt предлагают множество полезных команд.
Я расскажу только об основных. Оба они служат одной цели:
- сделать сервер быстрой разработки, чтобы начать кодирование
- строить для производства
Vue CLI использует vue-cli-service, который является локальным пакетом для запуска волшебства.
vue-cli-service serve
сервер разработкиvue-cli-service build
сборка для производства
В Nuxt есть аналогичные команды.
Не нужно устанавливать дополнительный модуль 👍
nuxt
сервер разработкиnuxt build
сборка для производства
Обычно я использую одни и те же псевдонимы скрипты npm для всех своих проектов:
После этого я могу сделать yarn dev
, чтобы начать кодирование, и yarn build
, чтобы экспортировать.
Эти команды останутся независимыми от того, что приложение использует внизу.
Обзор Small Nuxt
Nuxt в некоторой степени полагается на соглашение, а не конфигурацию.
Создавая файлы, Nuxt позаботится об их интеграции в ваше приложение Vue.
Вот основные области, в которых он сияет.
маршрутизация
В стандартном приложении Vue вам нужно будет вручную настроить маршрутизатор.
Вот как обычно выглядит router.js
:
Это имеет некоторые недостатки при рефакторинге.
Если вы хотите переименовать маршрут, вам необходимо:
- переименовать компонент
- изменить
router.js
файл
- изменить имя маршрута
- изменить импорт компонента
- изменить имя блока веб-пакета
С Nuxt эта маршрутизация будет выглядеть так:
- 📁 страницы
- index.vue
- foo.vue
- 📁 bar
- _id.vue
При переименовании маршрута теперь просто изменяется имя файла / папки.
И у вас есть стандартное разделение кода страницы.
хранить
То же самое и со стандартным магазином Vuex:
Как вы уже догадались, Nuxt следует тем же принципам, что и маршрутизация:
- 📁 магазин
- foo.js
- bar.js
С теми же преимуществами, что и маршрутизация.
Тем не менее, есть классический режим, если вы хотите иметь больше контроля над ним.
примечание о макетах
Nuxt позволяет быстро обрабатывать множество макетов страниц.
Я думаю, что в большинстве случаев вы будете придерживаться базового:
layouts/default.vue
layouts/error.vue
Если вы хотите добиться этого в обычном приложении Vue, вам придется сделать это вручную, обернув каждый компонент страницы внутри желаемого компонента макета… что немного раздует ваш код.
Так что не обязательно, но определенно хорошее дополнение 🏅.
плагины (например, vue I18N)
Интеграция большего количества вещей из экосистемы Vue похожа на то, что есть в стандартном приложении Vue.
Это хорошо задокументировано здесь.
Например, создайте файл i18n.js
в папке plugin
…
… И обновите nuxt.config.js
…
… И вы можете использовать $t('my-i18n0key')
в своем приложении!
На данный момент Nuxt не поддерживает convention over configuration
шаблон для интеграции плагинов, поэтому вам придется написать шаблонный код.
С другой стороны, этот код вряд ли изменится в будущем.
Но то, что на самом деле выглядит как ненужная конфигурация, на самом деле служит очень важной цели.
Nuxt позволяет нам создавать universal web applications
.
Это означает, что он должен иметь возможность связывать ваш код:
- для браузера
- для сервера
Если вы ориентируетесь только на браузер (SPA), вам не о чем беспокоиться.
Но если вы запускаете код на сервере, вы не хотите, чтобы он сломался, потому что об использовании некоторых браузерных API.
Nuxt предотвращает это с помощью небольшой дополнительной настройки.
Теперь browser.js
будет удален из пакета сервера, и мы уверены, что наш код не будет throw
из-за отсутствия объекта window
в среде NodeJs 😅
Прототипирование и эволюция
На мой взгляд, главное преимущество Nuxt в том, насколько удобно создать небольшой прототип и развить его до получения первого результата.
Мы уверены, что сможем развить его в любом направлении в будущем.
одностраничное приложение
Написание SPA позволяет довольно быстро создать небольшое приложение и дать любому возможность поиграть с ним практически в реальных условиях.
Вы можете создать простой статический API, поместив некоторые файлы JSON в папку static
, и вы можете сохранить состояние вашего приложения, используя API локального хранилища с vuex-persistedstate
Хостинговые решения, такие как firebase, netlify или github Pages, позволяют бесплатно делиться вашим приложением.
универсальное веб-приложение
И теперь, когда вы удовлетворены своим прототипом, вы можете продвигать его дальше, интегрировав его с сервером Node.
Nuxt предоставляет несколько шаблонов, чтобы увидеть, как интеграция работает во многих фреймворках:
Я использую Коа 🐨
В файле server/index.js
:
В package.json
вам следует обновить свои скрипты:
Вам нужно будет немного обновить существующий код
- Позаботьтесь о том, чтобы действия вашего магазина указывали на ваш новый API.
- используйте рюкзак для запуска / компиляции серверного приложения.
Это в основном связано с тем, что мы используем ES-модули на сервере, а NodeJS все еще отсутствует.
Кроме того, больше нечего делать.
Все будет работать, как ожидалось.
преимущества UWA
Создание универсального веб-приложения может показаться ненужным, но оно имеет некоторые преимущества:
- Лучшее время начального рендеринга
- Можно создать приложение, которое работает без Javascript в браузере
- Я верю в прогрессивные улучшения
- Android Chrome может запускать ваш сайт без Javascript - Должен иметь лучший SEO (подробнее о SEO вы можете прочитать здесь).
Если вы хотите узнать больше об этой теме, вы можете проверить статью Stereobooster о Плюсы и минусы рендеринга на стороне сервера.
А также…
Этот пост не является исчерпывающим списком того, что Nuxt может вам предложить.
Вот краткий список других вещей, которые он предоставляет:
- из коробки метатеги HTML с vue-meta
- из коробки Переходы страниц
- из коробки Индикатор выполнения загрузки
- стандартные хуки asyncData и fetch.
Это дает возможность получить асинхронные данные на сервере перед рендерингом разметки. - хорошая документация
- большой выбор модулей благодаря сообществу nuxt.
Они предоставляют хороший способ интеграции некоторых популярных библиотек (например, Axios) - и Т. Д.
Вывод
У Nuxt нет красивого графического интерфейса 😶, но это очень умный фрагмент кода, который позволяет мне чувствовать себя более продуктивно при создании веб-сайта или приложения.
Я сделал небольшой демонстрационный репозиторий с почти тем же кодом, что и в этом посте.
Если вы хотите узнать больше, вот несколько полезных ссылок, на которые я недавно наткнулся:
- 7 уроков архитектуры веб-интерфейса от Nuxt.js от Кевина Болла
Хороший анализ того, как Nuxt может вам помочь - 10 причин использовать Nuxt.js для вашего следующего веб-приложения от Дерик Созо
Еще один анализ сильных сторон nuxt - Vue.js - туда и обратно через 1,5 года от Coreus.
Речь идет не о Nuxt, а о том, как жить в долгосрочной перспективе с помощью приложения Vue.
Есть также небольшой часть о структуре папок компонентов / представлений, которая перекликается с тем, о чем я говорю. - Список руководств, собранный Сообществом Nuxt
Так что, если вы используете Vue, вы можете попробовать Nuxt.
Первоначально опубликовано на hiswe.github.io.