Создание приложения Vue с помощью Tailwind CSS

Существует адекватный выбор инструментов и рабочих процессов для создания динамических приложений. Потратив достаточно времени на исследования, вы можете согласиться со мной, что Vue и Tailwind CSS находятся в верхней части списка. Для меня следующий логический шаг — попробовать, прежде чем брать на себя обязательства. Цель этого письма состоит в том, чтобы вы почувствовали вкус этой установки, не тратя слишком много времени, чтобы вы могли принять собственное решение.

Обзор

Vue — это прогрессивный фреймворк JavaScript, а это значит, что вы можете начать использовать его, не зная всего.

Vue нацелен на создание пользовательских интерфейсов, но со стилем. Другими словами, Vue должен работать с фреймворком CSS. Tailwind — восходящая звезда в мире CSS, она будет расти, если вы терпеливо дадите Tailwind шанс. Мне нравится гладкая и свежая бесплатность Tailwind по сравнению с коммерчески проверенным, но часто скучным аналогом Bootstrap.

Два очевидных способа интегрировать Vue с Tailwind CSS: 1) Инициализировать проект с помощью Tailwind, затем добавить Vue или 2) Инициализировать во Vue, затем добавить Tailwind.

Мой опыт показал, что последний работает лучше. Документация с сайта Tailwind более точна, чем та, что была предоставлена ​​с сайта Vue. Давайте начнем интеграцию со следующих шагов:

  • Создать Vue-приложение
  • Установите Tailwind в приложение

Создайте приложение в Vue

Чтобы создать свой проект, запустите npm init vite project-name. Вы должны увидеть это:

% npm init vite v901
Need to install the following packages:
create-vite
Ok to proceed? (y)
✔ Select a framework: › vue
✔ Select a variant: › vue
Scaffolding project in /Users/seanzhai/www/v901...
Done. Now run:
cd v901
npm install
npm run dev

Последняя команда npm run dev пока не нужна. Но проверить не помешает. Он создает локальный веб-сервер на порту 3000. Вы можете проверить это в любом браузере.

Настройка сервера разработки

Вы, наверное, заметили, что сервер разработки vite работает на порту 3000 локального хоста. Если вы хотите сделать свой сервер разработки доступным для доступа с других компьютеров, вы можете сделать это, изменив файл vite.config.js.

export default defineConfig({
  plugins: [vue()],
  server: {
    port: '3030',
    host: '0.0.0.0'
  }
})

С настройками, как показано выше, когда вы делаете npm run dev , вы можете видеть, что вы обслуживаете весь мир через порт 3030. Вы, наверное, знаете, что вам, возможно, придется позаботиться о настройках брандмауэра, чтобы это работало.

Установите CSS Tailwind

Установите Tailwind и создайте его первоначальную конфигурацию.

npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
npx tailwindcss init -p

Вторая команда сгенерировала файл tailwind.config.js . Отредактируйте строку content, чтобы файл выглядел так, как показано ниже.

module.exports = {
  content: [
    "./vitesrc/index.html",
    "./vitesrc/**/*.{vue,js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}

Затем создайте index.css в папке src.

/* ./src/index.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

src используется для всего исходного кода, а внизу есть папка components для компонентов Vue. Нам нужно импортировать файл index.css в main.js, который является точкой входа для всех приложений.

// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
import './index.css'
createApp(App).mount('#app')

До этого момента у вас должно быть функциональное приложение Vue, поддерживающее Tailwind CSS. Поздравляем с успешной интеграцией.

Красивый Vue с Tailwind

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

Решение Tailwind продвигает платный сервис tailwindui.com. Если бюджет не имеет значения, вы, безусловно, можете попробовать; он демонстрирует множество макетов и гаджетов, но их нелегко использовать в качестве шаблонов. Вам нужно с некоторыми усилиями адаптировать компоненты, предоставляемые tailwindui.

Что я считаю наиболее полезным, так это пользовательский интерфейс без головы, который специально разработан для работы с Tailwind. Он разработан теми же людьми, что и tailwindui.

Установка и первые шаги

Установка безголового пользовательского интерфейса очень проста.

npm install @headlessui/vue @heroicons/vue -D

Загляните на его официальный сайт.



Обратите внимание, что его компоненты поддерживают как React, так и Vue. Настройкой по умолчанию является React. Нажмите Vue, прежде чем переходить к определенному компоненту. Однажды я забыл об этом и наткнулся на раздел React, я обнаружил, что код немного иностранный. Из любопытства для сравнения: в Vue почти всегда требуется меньше строк, чем в React, для достижения того же результата.

Стилизуйте с помощью Headless UI

Вы можете многому научиться, потратив немного времени на анализ одного компонента. Меню (выпадающее) хорошо подходит в качестве примера. Давайте сделаем это вместе, используя Visual Studio Code.

Откройте корневую папку проекта с VS Code, найдите src. Создал папку с именем components, затем добавил файл Dropdown.vue. Давайте заполним меню самыми известными книгами Джоан Дидион. Файл выглядит следующим образом. Он основан на примере с веб-сайта HeadlessUI. Я немного упростил его и сделал отдельной страницей, чтобы за ним было легче следить.

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

Результат выглядит следующим образом:

Эпилог

И Vue, и Tailwind — потрясающие инструменты. Что мне больше всего понравилось в использовании Vue с Tailwind, так это то, что он позволяет вам оставаться в одном и том же контексте большую часть времени и не прыгает по файлам JavaScript, CSS и HTML; автоматическая перезагрузка сервера разработки также экономит время. Это рабочий процесс, который позволяет вам совершенствоваться, и вы обнаружите, что становитесь более продуктивным и менее напряженным.

Это весело и красиво.