Приложение Nuxt.js От Набора Пользовательского Интерфейса До Развертывания

Привет, Хабр! Я написал это подробное пошаговое руководство, чтобы каждый мог создать собственное приложение с использованием платформы Nuxt.js с нуля.

В этой статье мы обсудим базу, основы создания приложения на Nuxt.js:

  • создание и настройка проекта,
  • ресурсы и статика: стили, шрифты, изображения, публикации,
  • создание компонентов,
  • создание страниц и макетов,
  • развертывание приложения (deploy).

Посмотрите, что произошло!

Немного о Nuxt.js

Nuxt — это фреймворк высокого уровня, основанный на Vue. Nuxt.js позволяет разрабатывать изоморфные веб-приложения «из коробки», абстрагируя детали распределения серверного и клиентского кода.

Благодаря такому подходу мы экономим время и можем сосредоточиться на развитии.

Ключевые преимущества Nuxt:

  • SPA, SSR и предварительный рендеринг уже настроены; все, что нам нужно сделать, это указать на это.

    В этом приложении мы используем пререндеринг для продуктового режима, то есть заранее генерируем все страницы сайта, а затем разворачиваем их на хостинг для распространения статического контента.

  • Превосходное SEO для всех поисковых систем является результатом использования SSR или предварительного рендеринга.

  • Быстрое взаимодействие с сайтом по сравнению со статическими сайтами.

    Это достигается за счет загрузки только необходимых фрагментов js, стилей CSS и запросов API (большая часть этого процесса автоматизирована с помощью веб-пакета 4, который работает под капотом Nuxt).

  • Отличная скорость Google Lighthouse/Page. При правильной настройке можно получить 100/100 даже на слабом сервере.

  • Модули CSS, Babel, Postscc и другие интересные инструменты предварительно настраиваются при использовании.

    создать-nuxt-приложение .

  • Данная структура проекта позволяет комфортно работать в средних и больших командах.

  • Более 50 готовых модулей и возможность использовать любые пакеты из обширной экосистемы Vue.js.
О преимуществах Nuxt можно говорить очень долго.

Это фреймворк, который мне очень понравился за простоту использования и возможность создавать гибкие и легко масштабируемые приложения.

Итак, предлагаю начать и убедиться во всех преимуществах на практике.

Дополнительную информацию о Nuxt.js см.

Официальный веб-сайт .

Подробные руководства также размещены.

Здесь .



Дизайн

Продуманный, готовый дизайн, а еще лучше UI-кит, значительно ускорит и упростит разработку любого приложения.

Если поблизости нет доступного UI-дизайнера, ничего страшного.

В рамках нашей инструкции мы справимся сами! Специально для этой статьи я подготовил дизайн блога в современном минималистичном стиле с простым функционалом, достаточным для демонстрации возможностей Nuxt. Для разработки я использовал онлайн-сервис Figma. Комплект дизайна и пользовательского интерфейса доступен по адресу связь .

Вы можете скопировать этот шаблон и использовать его в своем проекте.



Создание проекта

Для создания проекта воспользуемся утилитой от разработчиков Nuxt. создать-nuxt-приложение , который позволяет настроить шаблон приложения через cli. Инициализируем проект, указав его имя:
  
  
  
  
  
  
  
  
   

npx create-nuxt-app nuxt-blog

Далее в несколько шагов утилита предложит нам выбрать набор предпочтительных библиотек и пакетов, после чего самостоятельно скачает, настроит и настроит их для проекта.

Полный список выбранных опций вы можете посмотреть на сайте Гитхаб .

Для этого проекта будет использоваться конфигурация с Typescript. При разработке на Vue с Typescript вы можете использовать два API: API опций или API класса .

Функционально они не отличаются друг от друга, но имеют разный синтаксис.

Лично я предпочитаю синтаксис Options API, поэтому именно его мы и будем использовать в нашем проекте.

После создания проекта мы можем запустить наше приложение с помощью команды: npm run dev. Теперь он будет доступен на localhost:3000. Nuxt использует в качестве локального сервера веб-пакет-dev-сервер с установленным и настроенным ГМР , что делает разработку быстрой и комфортной.

Поскольку мы создаем демо-версию приложения, я не буду писать для него тесты.

Но я настоятельно рекомендую не пренебрегать тестированием приложений при коммерческой разработке.

Если вы еще не затрагивали эту тему, советую обратить внимание на шутка — очень простой, но мощный инструмент, поддерживающий работу с Nuxt в сочетании с vue-test-utils .



Структура проекта

Nuxt по умолчанию создает структуру каталогов и файлов, подходящую для быстрого начала разработки.



-- Assets -- Static -- Pages -- Middleware -- Components -- Layouts -- Plugins -- Store -- nuxt.config.js -- .

other files

Для нашего проекта эта структура подходит идеально, поэтому менять ее не будем.

Подробнее о назначении различных каталогов можно прочитать на странице Сайт Nuxt .



Создание приложения

Прежде чем писать какой-либо код, давайте сделаем следующее: 1. Удалите стартовые компоненты и страницы, созданные Nuxt. 2. Для нашего удобства и экономии времени при разработке установим pug и scss. Давайте запустим команду:

npm i --save-dev pug pug-plain-loader node-sass sass-loader fibers

После этого можно будет использовать атрибут lang для тегов шаблона и стиля:

<template lang="pug"></template> <style lang="scss"></style>

3. Добавьте поддержку глубокого селектора ::v-deep в конфигурацию stylelint, что позволит вам применять стили к дочерним компонентам, игнорируя область действия.

Подробнее об этом селекторе можно прочитать Здесь .



{ rules: { 'at-rule-no-unknown': null, 'selector-pseudo-element-no-unknown': [ true, { ignorePseudoElements: ['v-deep'], }, ], }, }

Все приготовления закончены, переходим к следующему этапу.



Сообщения

Посты будут храниться в каталоге content/posts, который мы создадим в корне проекта в виде набора файлов уценки.

Давайте создадим 5 небольших файлов, чтобы сразу начать с ними работать.

Для простоты мы используем имена 1.md, 2.md и т. д. В каталоге контента создадим файл Posts.d.ts, в котором определим типы объекта, содержащего всю необходимую информацию о публикации:

export type Post = { id: number title: string desc: string file: string img: string }

Я думаю, что значения всех полей должны быть понятны из названий.

Вперед, продолжать.

В том же каталоге мы создадим еще один файл под названием Posts.ts со следующим содержимым:

import { Post } from '.

/Post' export default [ { id: 1, title: 'Post 1', desc: 'A short description of the post to keep the user interested.' + ' Description can be of different lengths, blocks are aligned' + ' to the height of the block with the longest description', file: 'content/posts/1.md', img: 'assets/images/1.svg', }, .

{ id: 5, title: 'Post 5', desc: 'A short description of the post to keep the user interested.' + ' Description can be of different lengths, blocks are aligned' + ' to the height of the block with the longest description', file: 'content/posts/5.md', img: 'assets/images/5.svg', }, ] as Post[]

В свойстве img мы ссылаемся на изображения в каталоге assets/images, но этот каталог мы еще не создали, давайте сделаем это сейчас.

Теперь добавим в созданный каталог изображения в формате .

svg с указанными нами выше названиями.

Я возьму 5 изображений из отрисовать .

Этот замечательный ресурс постоянно обновляется и содержит множество бесплатных изображений в формате SVG. Теперь, когда все готово, каталог содержимого должен выглядеть следующим образом:

content/ -- posts.ts -- Posts.d.ts -- posts/ ---- 1.md ---- 2.md ---- 3.md ---- 4.md ---- 5.md

А в каталоге assets должен был быть подкаталог images со следующим содержимым:

assets/ -- images/ ---- 1.svg ---- 2.svg ---- 3.svg ---- 4.svg ---- 5.svg .





Динамическое получение файлов

Поскольку изображения и файлы с текстом постов мы будем получать динамически, необходимо реализовать глобальный миксин, который мы потом сможем использовать во всех компонентах.

Для этого создайте подкаталог mixins в каталоге плагинов и в нем файл getDynamicFile.ts со следующим содержимым:

import Vue from 'vue' export const methods = { getDynamicFile(name: string) { return require(`@/${name}`) }, } Vue.mixin({ methods, })

Нам остаётся только подключить этот миксин в файле nuxt.config.js:

{ plugins: [ '~plugins/mixins/getDynamicFile.ts', ], }



Шрифты

После этапа создания постов подключим шрифты.

Самый простой способ сделать это — замечательная библиотека Веб-шрифтлоадер , что позволяет вам получить любой шрифт с помощью Google Шрифты .

Однако в коммерческой разработке часто используются собственные шрифты, поэтому давайте рассмотрим именно такой случай.

В качестве шрифта для нашего приложения был выбран Рубик, который распространяется по лицензии.

Лицензия на открытые шрифты .

Скачать его можно там же Google Шрифты .

Обратите внимание, что шрифты в скачанном архиве будут в формате otf, но так как мы работаем с вебом, то лучшим выбором для нас будут форматы woff и woff2. Они меньше по размеру, чем любые другие форматы, но они превосходны.

поддерживается во всех современных браузерах.

Чтобы конвертировать otf в нужные нам форматы, вы можете воспользоваться одним из множества бесплатных онлайн-сервисов.

Итак, шрифты в нужных нам форматах у нас есть, пора включить их в проект. Для этого давайте создадим подкаталог Fonts в статическом каталоге и добавим туда наши шрифты.

Создадим в этом же каталоге файл fonts.css, который будет отвечать за подключение наших шрифтов в приложении следующего содержания:

@font-face { font-family: "Rubik-Regular"; font-weight: normal; font-style: normal; font-display: swap; src:

Теги: #JavaScript #vue.js #timeweb #nuxt.js

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.