Книга рецептовbeta
- Введение
- Добавление свойств экземпляра
- Валидация форм
- Редактируемая система SVG-иконок
- Создание блога, управляемого CMS
- Модульное тестирование Vue-компонентов
- Создание пользовательской директивы прокрутки
- Отладка в VS Code
- Используем axios для доступа к API
- Устранение утечек памяти
- Хранение данных на стороне клиента
- Публикация Vue-компонентов в npm
- Интегрируем Docker в приложение Vue.js
- Практическое использование слотов с ограниченной областью видимости с GoogleMaps
Эта документация для версий v2.x и ранее. Для v3.x, документация на русском здесь.
Создание блога, управляемого CMS
Итак, вы только что запустили свой веб-сайт на Vue.js, поздравляем! Теперь вы хотите добавить блог, который быстро встраивается на ваш сайт и вы не хотите перевернуть всё вверх дном на сервере в попытке запустить WordPress (или любую другую CMS, использующую базу данных для этих целей). Вы хотите просто добавить несколько компонентов Vue.js для блога и пару маршрутов и чтобы всё это просто работало, не так ли? То что вы ищете для блога должно полностью основываться на API, чтобы вы могли использовать непосредственно из своего приложения Vue.js. Этот рецепт научит вас, как это сделать, давайте приступим!
Мы собираемся быстро создать блог на основе CMS с помощью Vue.js. Мы будем использовать ButterCMS, CMS в первую очередь ориентированную на API, которая позволяет управлять контентом с помощью панели управления ButterCMS и интегрировать API для получения контента в ваше приложение Vue.js. Вы можете использовать ButterCMS для новых или уже существующих проектов Vue.js.
Установка
Выполните в командной строке:
|
Butter также можно подключить с помощью CDN:
|
Быстрый старт
Установите ваш токен API:
|
С использованием ES6:
|
С использованием CDN:
|
Импортируйте этот файл в любой компонент, где вы хотите использовать ButterCMS. Затем выполните в консоли команду:
|
Запрос к API получит ваши записи блога. В вашей учётной записи уже будет одна запись в качестве примера, которую вы и увидите в ответе сервера.
Отображение записей
Для отображения записей мы создадим маршрут /blog
(используя Vue Router) в нашем приложении и будем получать записи блога через Butter API, аналогично будет работать маршрут /blog/:slug
для работы с конкретными записями блога.
Обратитесь к справочнику API ButterCMS для получения информации по дополнительным опциям, таким как фильтрация по категориям или автору. Ответ сервера также включает некоторые метаданные, которые мы будем использовать для пагинации.
router/index.js:
|
Затем создадим components/BlogHome.vue
, который будет страницей вашего блога со списком последних записей.
|
Вот как это выглядит (обратите внимание, что мы добавили CSS из https://bulma.io/ для быстрой стилизации):
Теперь создадим components/BlogPost.vue
который будет страницей записи блога с данными по каждой из записей.
|
Вот так это будет выглядеть:
Теперь наше приложение загружает все записи и мы можем переходить к чтению конкретной записи блога. Однако, наши кнопки следующей/предыдущей записи ещё не работают.
При использовании маршрутов с параметрами следует помнить, что при переходе пользователя с адреса /blog/foo
на /blog/bar
, будет переиспользоваться тот же экземпляр компонента. Поскольку оба маршрута отрисовывают один и тот же компонент, это эффективнее, чем уничтожение старого экземпляра компонента, а затем создание нового.
Помните, что использование этого компонента означает то, что хуки жизненного цикла не будут вызываться. Посетите документацию по Vue Router, чтобы узнать больше о динамических путях
Чтобы исправить это, нам необходимо отслеживать объект $route
и вызывать getPost()
при изменении маршрута.
Обновлённая секция <script>
в файле components/BlogPost.vue
:
|
Теперь у нашего приложения есть рабочий блог, который можно легко обновлять через панель инструментов ButterCMS.
Категории, теги и авторы
Используйте API Butter для категорий, тегов и авторов, чтобы показывать и фильтровать контент в нашем блоге.
Изучите справочник API к ButterCMS для получения дополнительной информации об этих объектах:
Вот пример перечисления всех категорий и получения записей по категории. Вызовите эти методы в хуке жизненного цикла created()
:
|
Альтернативные варианты
Альтернативным вариантом для рассмотрения, особенно если вы предпочитаете писать только в Markdown, будет использование что-то наподобие Nuxtent. Nuxtent позволяет вам использовать Vue Component
внутри файлов Markdown. Этот подход будет похоже на подход статических сайтов (например, Jekyll), где вы создаёте свои записи блога в файлах Markdown. Nuxtent добавляет приятную интеграцию между Vue.js и Markdown, позволяя вам полностью быть в мире Vue.js.
Итоги
И это всё! Теперь у вас есть полностью функциональный блог, управляемый CMS, работающий в вашем приложении. Мы надеемся, что это руководство было полезным и сделало ваш опыт разработки на Vue.js ещё приятнее :)