В то время я хотел создать проект с Next.js и Ant Design, но я хотел настроить каждый компонент в дизайне ant, чтобы он соответствовал моему дизайну в Figma, потому что проект имеет 2 разных макета: Admin и Client. И я подумал, что Tailwind CSS может помочь мне создать собственный CSS, и тогда я начал спрашивать: «Можно ли объединить nextjs, ant.design и tailwindcss в одном проекте?»
Попробовав разные способы, я нашел способ совместить некоторые из вышеперечисленных технологий по-своему. И здесь я хочу поделиться, как использовать его для создания проектов, комбинируя некоторые из вышеперечисленных технологий. Для тех, кто не знаком с вышеперечисленными технологиями, Next.js — это фреймворк для React.js. Этот фреймворк может помочь вам создавать потрясающие проекты с помощью React. Вы можете увидеть этот фреймворк на официальном сайте Next.js. И затем Ant Design — это библиотека пользовательского интерфейса, которая содержит набор высококачественных компонентов и демонстраций для создания богатого и интерактивного пользовательского интерфейса, поэтому вы можете использовать ant.design, чтобы сделать пользовательский интерфейс более эффективным. И последний — Tailwind CSS, представляющий собой служебный CSS-фреймворк, с его помощью вы можете создать все, что захотите, и я рад использовать этот CSS-фреймворк, потому что вы можете писать служебный CSS, используя только служебные классы из Tailwind CSS.
Давайте сделаем этот проект!! 🚀
1. Создайте проект
Мы можем создать проект nextjs с помощью create-next-app, и мы будем использовать машинописный текст в этом проекте, поэтому добавьте — машинописный текст. Откройте терминал, скопируйте приведенный ниже код, вставьте его в свой терминал и введите.
npx create-next-app@latest nextjs-with-antd-tailwind --use-npm --typescript
2. Структура папок
После создания проекта откройте текстовый редактор, и это использование структуры папок в этом проекте.
и попробуйте запустить проект командой npm run dev. После того, как вы запустите npm run dev, вы можете открыть http://localhost:3000/ в своем браузере, и вы увидите там свое приложение.
3. Установите дизайн муравья
затем установите Ant Design в проект. Откройте терминал и напишите ниже код для установки Ant Design.
npm install antd
после успешной установки перезапишите код в pages/index.tsx компонентом из antd.
и не забудьте импортировать таблицу стилей из antd в pages/_app.tsx
import 'antd/dist/antd.css';
Хорошо, давайте проверим браузер на локальном хосте: 3000, вы должны успешно импортировать компонент кнопки.
Да !! мы успешно интегрировали nextjs с antd. Следующим шагом мы можем установить tailwindcss и сделать небольшую настройку для tailwindcss.
4. Установите TailwindCSS
На этом этапе мы можем следовать руководству по установке tailwindcss в nextjs с официального сайта tailwindcss. А вот и ссылка для установки, которую вы можете проверить. Сначала запустите команду в терминале, чтобы установить tailwindcss и необходимые одноранговые зависимости для tailwindcss.
npm install -D tailwindcss postcss autoprefixer
после успешной установки нам нужно запустить команду инициализации для создания tailwind.config.js и postcss.config.js.
npx tailwindcss init -p
из приведенной выше команды создайте 2 новых файла
а затем мы не будем менять postcss.config.js, но изменим код в tailwind.config.js, добавив собственную конфигурацию.
Хорошо, и нам нужно добавить директиву @tailwind
для каждого слоя Tailwind в ваш файл styles/globals.css.
@tailwind base; @tailwind components; @tailwind utilities;
и не забудьте импортировать шрифт montserrat из Google Fonts, потому что мы добавили новое семейство шрифтов в tailwind.config.js, так что окончательный результат global .css примерно так.
после этого измените pages/index.tsx на приведенный ниже код, в этом коде мы пытаемся использовать служебный класс от tailwindcss к элементу стиля
запустите сервер разработки с npm run dev
и увидите свой браузер по адресу localhost:3000, результат будет таким
на самом деле, мы успешно объединили antd и tailwindcss, но я переопределю стиль antd по умолчанию в некоторых компонентах, таких как Button, Input, Switch и т. д. Я собираюсь использовать sass для его сборки, поэтому нам нужно установить sass и настроить его в следующий.config.js. Давай сделаем это!!!
5. Установите Sass
Прежде чем вы сможете использовать встроенную поддержку Sass в Next.js, обязательно установите sass
npm install --save-dev sass
после этого мы настроим sass в next.config.js, добавив includePaths, чтобы указать конкретную папку, в которую мы поместили файл .scss
.
это означает, что папка стилей — это место, куда мы помещаем все файлы .scss
. Итак, нам нужно реструктурировать папку стилей и разделить код из global.css на несколько .scss
файлов.
это структура папок, которую я сделал, вы можете проверить назначение каждой папки, такой как база, компоненты, поставщики, sass-utils по этой ссылке. И теперь вы можете удалить global.css, потому что его функцию можно заменить на style.scss.
- в папке base нам нужно создать файл с именем _reset.scss и вставить стиль сброса
(styles/base/_reset.scss)
- затем в папке sass-utils создайте файл _fonts.scss и введите код для импорта шрифтов из Google fonts
(styles/sass-utils/_fonts.scss)
_fonts.scss
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');
- В папке vendors создайте 2 файла с именами _antd.scss
(styles/vendors/_antd.scss)
и _tailwind.scss(styles/vendors/_tailwind.scss)
_antd.scss
@import '~antd/dist/antd.css';
_tailwind.scss
@tailwind base; @tailwind components; @tailwind utilities;
- Затем импортируйте все в style.scss.
после этого открываем pages/_app.tsx и можем удалить код
import '../styles/globals.css'; import 'antd/dist/antd.css';
и замените его на
import '../styles/style.scss';
и результат _app.tsx будет таким
и снова запустите сервер разработки с npm run dev
и увидите свой браузер на локальном хосте: 3000, и проблем не должно быть.
Давайте настроим компоненты Antd с помощью Tailwindcss !!!
на этот раз я хочу сделать 4 компонента, а именно заголовок, кнопку, переключатель и модальный. Все компоненты, которые унаследованы от antd
Компонент заголовка
- Создайте новую папку внутри папки с атомами с именем Title (эта папка является представлением компонента Title) и создайте 2 файла index.tsx и title.props.ts.
components/ |- atoms/ | |- Title/ | | |- index.tsx | | |- title.props.ts
title.props.ts
index.tsx
- создайте новый файл с именем index.ts в атомах, все компоненты в этой папке будут экспортированы через этот файл
components/ |- atoms/ | |- Title | | | |- index.ts
index.ts (components/atoms/index.ts)
import Title from './Title'; export { Title };
- после этого снова создайте новый файл с именем index.tsx в соединении, используемом для экспорта всех файлов из атомов, молекул и организмов.
components/ |- atoms |- moleculs |- organisms |- index.ts
index.ts
export * from './atoms'
- Хорошо, затем перейдите в pages/index.tsx и импортируйте только что созданный компонент заголовка.
и результат
Далее мы попробуем создать компонент кнопки, и сделаем стилизацию в соответствии с нашими потребностями.
Компонент кнопки
- Создайте новую папку внутри папки с атомами с именем Button (эта папка является представлением компонента Button) и создайте 2 файла index.tsx и button.props.ts.
components/ |- atoms/ | |- Button/ | | |- index.tsx | | |- button.props.ts | | | |- Title | | | |- index.ts
button.props.ts
index.tsx
- затем откройте папку компонентов в стилях, затем создайте файл _button.tsx
(styles/components/_button.tsx)
. Этот файл позже переопределит стиль кнопки из antd.
styles |- ... |- components/ | |- _button.scss
_button.scss
- после этого импортируйте _button.scss в styles/style.scss.
... // components @import './components/_button'
- Вернувшись в папку с атомами, импортируйте Кнопку в файл index.tsx, который находится в папке с атомами.
import Title from './Title'; import Button from './Button'; export { Title, Button };
- Затем давайте реорганизуем наш код, чтобы его можно было использовать повторно. Вы можете видеть в pages/index.tsx, что мы создали тег раздела и добавили в него заголовок, и похоже, что он используется снова и снова в качестве обертка, чтобы мы могли создать новый компонент в папке moleculs с именем SectionWrapper, чтобы его можно было многократно использовать, становится намного проще
- Создайте новую папку внутри папки Moleculs с именем SectionWrapper и создайте файл index.tsx
components/ |- molecules/ | |- SectionWrapper | | - index.tsx
index.tsx
- а затем создайте файл index.ts в папке молекулы
(moleculs/index.ts)
и импортируйте компоненты для экспорта.
components/ |- molecules/ | |- SectionWrapper | | | |- index.ts
index.ts (components/moleculs/index.ts)
import SectionWrapper from './SectionWrapper'; export { SectionWrapper };
- Затем мы создадим отдельный компонент для каждого раздела, например (SectionButton, SectionInput и т. д.). создайте папку внутри organisms с именем SectionButton и создайте файл index.tsx
components/ |- organisms/ | |- SectionButton | | - index.tsx
index.tsx
- не забудьте создать файл index.ts в папке organisms
(organisms/index.ts)
и импортировать компоненты для экспорта
components/ |- organisms/ | |- SectionButton | | | |- index.ts
index.ts (components/organisms/index.ts)
import SectionButton from './SectionButton'; export { SectionButton };
- затем вызовите молекулы и организм в файл index.ts, который находится в папке components
(components/index.ts)
export * from './atoms'; export * from './moleculs'; export * from './organisms';
- вернитесь в папку pages, затем реорганизуйте pages/index.tsx, чтобы он стал таким
мы успешно создали компонент Button, и результат будет таким
Входной компонент
В этом разделе мы не создаем новые компоненты в атоме, такие как заголовок и кнопка, для ввода я попытаюсь напрямую заменить стиль на Sass.
- Создайте новый файл в styles/component с именем _input.scss и _form.scss.
styles |- ... |- components/ | |- _button.scss | |- _input.scss
_input.scss
_form.scss
- после этого импортируйте _input.scss и _form.scss в styles/style.scss.
... // components @import './components/_button' @import './components/_form'; @import './components/_input';
- создайте компонент SectionInput в папке организмов и создайте файл index.tsx
(organisms/SectionInput/index.tsx)
index.tsx
- и не забудьте импортировать этот компонент в файл index.ts из папки organisms
(components/organisms/index.tsx)
import SectionButton from './SectionButton'; import SectionInput from './SectionInput'; export { SectionButton, SectionInput };
- вызовите компонент SectionInput в
pages/index.tsx
и поместите его в SectionButton
... import { SectionButton, Title, SectionInput } from '../components'; const Home: NextPage = () => { return ( <> ... <SectionButton /> <SectionInput /> ... </> ) };
мы успешно переопределили стиль компонента ввода, и результат будет таким
Компонент переключения
Этот раздел такой же, как и предыдущий компонент (Ввод), мы не создаем новые компоненты в атоме, такие как заголовок и кнопка, я попытаюсь напрямую заменить стиль на sass
- Создайте новый файл в styles/component с именем _switch.scss.
styles |- ... |- components/ | |- _button.scss | |- _input.scss | |- _switch.scss
_switch.scss
- после этого импортируйте _switch.scss в styles/style.scss
... // components @import './components/_button' @import './components/_form'; @import './components/_input'; @import './components/_switch';
- создайте компонент SectionSwitch в папке организмов и создайте файл index.tsx
(organisms/SectionSwitch/index.tsx)
index.tsx
- и не забудьте импортировать этот компонент в файл index.ts из папки с организмами
import SectionButton from './SectionButton'; import SectionInput from './SectionInput'; import SectionSwitch from './SectionSwitch'; export { SectionButton, SectionInput, SectionSwitch };
- вызовите компонент SectionSwitch в
pages/index.tsx
и поместите его в SectionInput
... import { SectionButton, Title, SectionInput, SectionSwitch } from '../components'; const Home: NextPage = () => { return ( <> ... <SectionButton /> <SectionInput /> <SectionSwitch /> ... </> ) };
мы успешно переопределили стиль компонента переключателя, и результат будет таким
Заключение
Мы можем собрать проект, комбинируя antd и tailwindcss, но нам нужен Sass, чтобы заменить стили из antd на tailwindcss. Для модальных компонентов вы можете проверить мой репозиторий на github, вы можете перейти по ссылке ниже.
Спасибо, что прочитали… ^_^