предисловие
ViteЭто, несомненно, один из самых горячих проектов на данный момент, с выходом версии 2.0 после Праздника Весны все больше и больше разработчиков стали обращать внимание на этот проект. это так называемоеИнструменты сборки интерфейса нового поколенияСамое большое впечатление на нас это то, чтобыстро. ежедневный медленный запуск проекта иHMR
пытки, сVite
После этого не будь слишком крутым. несмотря на то чтоVite
К фреймворку отношения не имеет, но тем больше приложений все равноVue
работает, тоReact
Можно ли использовать проект гладко, эти две недели после работы, он начнетсяVite 2.0
+ React
пытаться. Конечно, есть много ям, таких какAntd
Ряд проблем, вызванных введением, как писать псевдонимы, как настраивать агенты, интегрироватьahooks
Подождите, надеюсь, это поможет использоватьReact
хочу использовать сноваVite
Студенты, которые повышают эффективность развития, избегают обходных путей. Конечно, мы также можем интуитивно понять из процесса практики.Vite
Принцип расфасовки и реальное ощущение исполнения.
Адрес исходного кода этой статьи находится по адресуvite-playgrounds, если вы обнаружите проблемы в чтении, добро пожаловать пр.
также участвовал вДокументация на китайском языкеМы приветствуем заинтересованных студентов для оптимизации и исправления переводческой работы.
Кроме того, сделайте предварительный просмотр.Во время Весеннего фестиваля я нашел время, чтобы принять участие.особенноПрямая трансляция шоу Open Source Friday на Twitch.Инструменты внешнего интерфейса нового поколения с ViteJS ✨ Пятница с открытым исходным кодом ✨работа над переводом субтитров, особенно в видео
Vite
Подробное описание различных функций , Дашен онлайн кодирование, онлайн отладка, Дагу диссwebpack
и правильноVite
философское мышление. Общая продолжительность ролика один час.После возобновления работы во время праздника сил вложено не много.Предполагается, что он выйдет на следующей неделе, так что следите за обновлениями.
Хорошо, пойдем со мной, шаг за шагомVite 2
+ React
Практическое путешествие.
Инициализировать проект
$ npm init @vitejs/app
Выберите название проекта и шаблон:
Установка и запуск в зависимости от:
$ cd vite-react
$ npm install
$ npm run dev
Использование контрастаwebpack
строитьReact
среду можно увидеть с помощьюVite
после добавленияBabel
,React
,webpack-dev-server
Работа может быть опущена:
Добавить яму для скалолазания
Яма для скалолазания в стиле
$ npm install antd
существуетApp.jsx
введен вantd
:
import { DatePicker } from ‘antd’;
После сохранения страницаreload
, обратите внимание, что неHMR
,В настоящее времяAntd
было введено:
Затем мы добавляемDatePicker
, стилей не найдено:
В соответствии с рекомендациями по документации на официальном веб-сайте antd, импортCSS
стиль, чуть лучше, но все равно не нормально:
попробуй импортироватьLess
, сообщите об ошибке напрямую:
Vite
Встроенная поддержкаLess
, но требует ручной установки пользователемLess
, см. официальную документацию сайта:Features # CSS Pre-processors
$ npm install -D less
После установки и перезапуска появилась новая ошибка:
Знакомый вкус, даAntd
Ошибка правильная. Вы можете увидеть это в сообщении об ошибкеIssue, я не читал этот выпуск два года и обнаружил, что этот выпуск становится все больше и больше, потому что в периодless-loader
Обновление принесло новые ямы. Решение сводится кwebpack
изless-loader
открыть вjavascriptEnabled
, видеть этоCommit
затем вVite
как это сделать вVite
также открытьCSS
Конфигурация препроцессора, см. подробностиОфициальная документация сайта,существуетvite.config.js
Добавьте в файл следующую конфигурацию:
// vite.config.js
...
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
},
}
}
...
Наконец, стиль нормальный:
Об использовании полной суммыAntd
Предупреждающий анализ пакетов
Еще один момент, на который следует обратить внимание, это то, что при открытии окна отладки снова появляется другое знакомое предупреждение.Antd
Студенты, которые разработали, знакомы с:
Исходный проект, используемыйwebpack
,существуетwebpack@2
После этого поддержитеES
модульныйtree shaking
, это предупреждение не появляется.
пока вVite
, мы можем просмотретьофициальная документация,Vite
будуnpm
Зависимости предварительно созданы и переписаны, чтобы быть законнымиurl
. В этом проектеVite
БудуAntd
Предварительно построенный/node_moduls/.vite
папка и будетurl
переписать как/node_modules/.vite/antd.js?v=d2a18218
, поэтому появляется это предупреждение.
Но не волнуйтесь, он по-прежнему будет работать в производственном пакете.tree shaking
. Даже если среда разработки вводит полный объемAntd
Мешок,Vite
на основеesbuild
Скорость предварительной компиляции очень высока, и браузер кэширует пакет позже, и опыт разработки не упадет, а возрастет, поэтому это предупреждение можно игнорировать.
сменить тему
Давайте попробуем изменить тему еще раз, чтобы увидеть, работает ли это:
Следуйте инструкциям на официальном сайте, чтобы использоватьless
изmodifyVar
покрыватьless
переменная, чтобы достичь цели изменения темы,Пользовательские темы - дизайн муравьяа такжеwebpack
настроен вless-loader
разные вVite
гораздо проще вless
изoption
Вы можете настроить его в:
// vite.config.js
...
less: {
javascriptEnabled: true,
modifyVars: {
"primary-color": "#1DA57A",
"link-color": "#1DA57A",
"border-radius-base": "2px",
},
},
...
Вы можете видеть, что стиль вступает в силу:
Согласно этой идее, нам относительно просто изменить темную тему:
import { defineConfig } from "vite";
import reactRefresh from "@vitejs/plugin-react-refresh";
import { getThemeVariables } from "antd/dist/theme";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [reactRefresh()],
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
modifyVars: {
...getThemeVariables({
dark: true,
}),
...{
"primary-color": "#1DA57A",
"link-color": "#1DA57A",
"border-radius-base": "2px",
},
},
},
},
},
});
Нет проблем, тёмная тема работает:
Настройте прокси, к которому можно получить доступ через RESTFul
обратитесь на официальный сайтконфигурация server.proxy, здесь следует обратить особое вниманиеproxy
пишется так же, как мы использовали раньшеwebpack-dev-server
внутриproxy
Конфигурация немного отличается, а именно:
// vite.config.js
server: {
proxy: {
'/api': {
target: 'http://jsonplaceholder.typicode.com/',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
},
},
},
В это время мы посещаемhttp://localhost:3000/api/users, вы можете получить доступ к данным на jsonplaceholder.typicode.com/users
Интеграция React-маршрутизатора
Добавим меню и маршрутизацию, сначала представимReact Router
:
$ npm i react-router-dom
новыйindex.jsx
документ:
import React from "react";
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
import App from "./App";
export default function Index() {
return (
<Router>
<Switch>
<Route path="/app">
<App />
</Route>
</Switch>
</Router>
);
}
Исправлятьmain.jsx
файл, будетApp
заменитьIndex
:
import React from 'react'
import ReactDOM from 'react-dom'
import './index.css'
- import App from './App'
+ import Index from './index'
ReactDOM.render(
<React.StrictMode>
- <App />
+ <Index />
</React.StrictMode>,
document.getElementById('root')
)
посетить в это времяhttp://localhost:3000/appможет получить доступ кApp
Страница, маршрутизация вступает в силу.
Добавим еще одно меню, новоеLayout.jsx
документ:
import React from "react";
import { Menu } from "antd";
import { Link } from "react-router-dom";
export default function Layout() {
return (
<Menu selectedKeys="App" mode="horizontal">
<Menu.Item key="App">
<Link to="/app">App</Link>
</Menu.Item>
</Menu>
);
}
Наконец вindex.jsx
представлятьLayout
файл, пожалуйста, обратитесь к описанному выше процессу для деталейэто обязательство
Обратите внимание на использование псевдонимов — критическое изменение
УведомлениеVite@2
изUserConfig.alias
Устарело, используйте вместо этогоresolve.alias
Альтернатива, написанная также иVite@1
разные, см.Официальная документация веб-сайта - псевдоним разрешенияа такжедокументация по подключаемым модулям
// vite.config.js
...
import path from "path";
...
resolve: {
alias: [
{
find: /^~/,
replacement: path.resolve(__dirname, "src"),
},
],
},
...
Затем мы корректируем структуру файлов и используем псевдонимы вместо относительных путей, см. подробностиэто Совершить
Страница со списком пользователей
Далее мы разрабатываем список пользователей, имитирующий реальный интерфейс, см.umi@2 + два, полное приложение CURD для управления пользователямиШаг
Страница нового пользователя
Добавить кUser
Маршруты и страницы, см. подробностиэто обязательство.
посетить в это времяhttp://localhost:3000/userчтобы увидеть только что добавленныеUser
страница вверх:
Запросить интерфейс для подъема на яму
Запросить данные интерфейса, использовать здесьahooksизuse-request
используется здесьnpm 7
Установка сообщит об ошибке:
потому чтоnpm 7
установится автоматическиpeerDependency
,а такжеahooks
изpeerDependency
даreact@^16.8.6
, в результате чегоreact@17
Ошибка конфликта версий, эта проблема уже вэтот прТут исправлено, но пакета пока нет, временно б/уyarn
Чтобы обойти эту проблему:
$ yarn add @ahooksjs/use-request
Доступен сейчасuse-request
просить/api/users
Получить информацию о пользователе:
const { data, error, loading } = useRequest('/api/users')
Данные дисплея
После заполнения ямы, запрошенной интерфейсом, можно отобразить информацию о пользователе. Добавим таблицу для отображения информации о пользователе, подробнее см.это обязательство.
use-request
вернулсяloading
, а затем объединитьantd
table
компонентloading
,иметь дело сloading
Это очень удобно:
На этом страница, имитирующая интерфейс, запрашивающий данные, завершена.
О яме пейджинга
Поскольку наш интерфейс использует аналоговый интерфейс, пейджинговая информацияResponse Headers
внутри, просьбаЗаполнитель JSON. Та же партия .com/users?_Afraid…можно увидеть:
просмотреноahooks
изAPI
, обнаружил, что нет правильногоResponse Headers
функция обработки см.исходный кодВыяснил, что нет никакого способа получить егоHeaders
Значение в:
Общая информация о подкачке реального интерфейса будет вResponse Body
, данные подкачки легко обрабатывать, и эта яма не требует времени для заполнения.
What Else
Конечно это не конец, но в остальном процесс более условен, перечислим следующее:
- интегрированный
Redux
, или используйте упакованныйdva.js - Обычный маршрут
- все еще помнюbabel-plugin-import, в
Vite
, если вы хотите, чтобы стили загружались по запросу, вы можете попробовать этот плагин:vite-plugin-style-import
, который теперь поддерживаетсяVite 2
охватывать - хочу использовать
TypeScript
,можно использовать@vitejs/create-app
изreact-ts
шаблон, а затем выполните шаги, описанные в этой статье, чтобы настроить -
Production Mode
,SSR
, вы можете обратиться к официальной конфигурации сайта, вы можете обсудить, с какими ямами вы сталкиваетесь