Публикация на тему
Цель дисциплины - научить разрабатывать динамические страницы с помощью фрэймворка Nuxt (по сути, это не новый фрэймворк - а следующая ступень развития Vue)
Анотация
-
-
Автор
Михалькевич Александр Викторович
Наименование Проектирование динамических страниц с помощью фрэймворка Nuxt
Автор А.В.Михалькевич
Специальность Цель дисциплины - научить разрабатывать динамические страницы с помощью фрэймворка Nuxt (по сути, это не новый фрэймворк - а следующая ступень развития Vue),
Анотация
-
Anotation in English
-
Ключевые слова nuxt, vue, pages, Проектирование динамических страниц, PDO, ПДО, фрэймворк Nuxt.js, nuxt.js
Количество символов 8675
Прежде чем приступать к созданию приложения, необходимо убедиться в наличии следующих серверных технологий: node, npm, npx.
Используем консольные команды:
node -v npm -v npx -v
Далее можно переходить к созданию начальной структуры проекта (папок и файлов).
Создаем папку для будущего проекта, в ней файл package.json
со следующим содержимым:
{ "name": "project name", "scripts": { "dev": "nuxt" } }
После чего устанавливаем необходимые зависимости.
Список всех исполняемых скриптов и зависимостей приложения хранятся в этом файле.
Можем начать с установки зависимости nuxt. Nuxt нужен для реализации маршрутов для динамических страниц.
Установим зависиомсть nuxt
npm i nuxt
После чего снова взглянем на файл package.json
{ "name": "project name", "scripts": { "dev": "nuxt" }, "dependencies": { "nuxt": "^3.2.0" } }
Зависимости проекта хранятся в блоке dependencies
.
Продолжим разработку проекта, созданием следующих папок: pages, components, assets, public, plugins, layouts
. Сделать это можно одной командой:
mkdir pages components assets public plugins layouts
Также в корне проекта создаём файл nuxt.config.js
:
touch nuxt.config.js
Рассмотрим начальную структуру проекта. Подробнее о каждой папке.
Дирректория pages
содержит маршрутные компоненты. Каждому файлу с расширением .vue этой папки Nuxt формирует соответствующий маршрут.
Маршруту главной страницы соответствует компонент index.vue. Все маршрутные компоненты создаём в этой папке. Например: about.vue
, contacts.vue
...
Маршруты nuxt формирует автоматически исходя из названий компонентов в папке pages
. Поэтому создаём соответствующую папку, а в ней - компонент главной страницы - файл index.vue
Для создания другого маршрута - достаточно создать лишь его компонент в папке pages.
Ссылку на такой маршрут лучше формировать с помощью специального в тэга NuxtLink
.
Дирректория components
- папка для хранения маршрутных компонентов Vue.js.
Здесь мы можем создавать свои компоненты и импортировать файлы .vue.
Данный каталог содержит нескомпилированные активы, такие как файлы Stylus или Sass, изображения или шрифты. В template
ссылка на изображение может выглядеть так:
src="~/assets/your_image.png"
Подробнее - по ссылке Документация Nuxt
Каталог public
воспринимается клиентом как корневой. По сути, это папка для хранения любых файлов, которые надо хранить в открытом доступе, например иконку приложения и карту сайта.
В этой папке создадим два файла robots.txt
и favicon.ico
. Тогда
/static/robots.txt
будет доступен по адресу http://localhost:3000/robots.txt
/static/favicon.ico
будет доступен по адресу http://localhost:3000/favicon.ico
Если не собираетесь компилировать свои изображения и стили, то эта папка также подходит и для стилей и изображений. Тогда ссылка на изображение будет выглядеть так:
src="/my-image-2.png"
Автоматическое подключение плагинов из этой папки в проект. Сперва необходимо создать плагин в этой папке. Затем подключить его в файле nuxt.config.js
.
Для реализации запросов на бэкенд, можно воспользоваться Axios.
Установка модуля:
npm install @nuxtjs/axiosили
npm install axios
После чего, создайте файл axios.js со следующим содержимым:
import axios from 'axios'; //import {store} from '@/store/index'; export default defineNuxtPlugin(nuxtApp => { //console.log(store.state.token); axios.defaults.baseURL = 'http://localhost:8000/api/'; axios.defaults.headers["content-type"] = "application/json"; axios.defaults.headers.common.authorization = `Bearer `; axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*'; });
Подключение плагинов в файле nuxt.config.js
export default { css: ['~/assets/css/main.css'], modules: ['@nuxtjs/axios'], plugins: ['~/plugins/axios.js'] }
Папка layouts
предназначена для хранения компонента базового шаблона.
Подробнее по ссылке https://nuxt.com/docs/guide/directory-structure/layouts
В корне проекта должен находиться файл nuxt.config.js Его содержимое зависит от модулей и настроек поекта. Вот пример:
export default defineNuxtConfig({ app: { head: { title: 'Учебный проект', meta: [ { name: 'description', content: 'Здесь 2-3 предложения связного текста о проекте' } ], } }, css: ['~/assets/css/main.css'], plugins: ['~/plugins/axios.js'], modules: ['@vuestic/nuxt', '@nuxt/ui'], })