Выражение "городить свои велосипеды" в IT заиграло новыми красками
Иногда оно используется по делу, но чаще имеет уничижительную форму, показывающую, что человек вместо популярного, раскрученного решения использует что-то свое или малоизвестное.
Если тебе нужен индексируемый поисковиками сайт, надо писать на
О VueUse уже много говорилось. Как и об #ssr. Как и о Tailwind.
Проблема "решений", пришедших и навязываемых из других фреймворков - это действительно проблема. Человек, перешедший с бэкэнда и даже с другого языка программирования возможно будет писать более качественный
"Проверенные" решения зачастую ничего более, чем просто хайпожорские решения. Которые привнесут на проект кучу зависимости, сложности и необходимости решать те проблемы, которых у тебя не было.
Поэтому советчиков, агитирующих не изобретать свои велосипеды, можно частично послушать и принять к сведению, а частично послать куда подальше как людей, не желающих или не умеющих думать своей головой. Особенно на фронтенде.
Ну и не будем забывать, что
#esse #architecture
Иногда оно используется по делу, но чаще имеет уничижительную форму, показывающую, что человек вместо популярного, раскрученного решения использует что-то свое или малоизвестное.
Если тебе нужен индексируемый поисковиками сайт, надо писать на
Nuxt
, а не городить отдельную или динамическую отрисовку. Нужно использовать VueUse
, потому что это швейцарский нож в любых ситуациях. Для соединения с бэком надо всегда подключать Tanstack vue-query
, потому что у него десятки тысяч звезд на GitHub
, все его используют, и он легко решает кучу твоих проблем, о которых ты раньше даже не догадывался, но теперь они у тебя есть. Ну и, конечно, Tailwind
!О VueUse уже много говорилось. Как и об #ssr. Как и о Tailwind.
vue-query
образовался из react-query
, который действительно решал проблемы Реакта. Но во Vue
нет этих проблем. Vue
предоставляет все инструменты для эффективной и элегантной работы с бэкендом.Проблема "решений", пришедших и навязываемых из других фреймворков - это действительно проблема. Человек, перешедший с бэкэнда и даже с другого языка программирования возможно будет писать более качественный
Vue
код, чем переучившийся с Реакта
."Проверенные" решения зачастую ничего более, чем просто хайпожорские решения. Которые привнесут на проект кучу зависимости, сложности и необходимости решать те проблемы, которых у тебя не было.
Поэтому советчиков, агитирующих не изобретать свои велосипеды, можно частично послушать и принять к сведению, а частично послать куда подальше как людей, не желающих или не умеющих думать своей головой. Особенно на фронтенде.
Ну и не будем забывать, что
Vue
- это тоже велосипед, написанный в эпоху диктатуры Angular
, React
, JQuery
и других солидных, проверенных и общепризнанных решений.#esse #architecture
Telegram
Vue-FAQ
При написании своей реализации useLocalStorage для Arty-Crafty родились небольшие размышления о библиотеке VueUse
#vueuse #artycrafty
#vueuse #artycrafty
This media is not supported in your browser
VIEW IN TELEGRAM
Марио передвигается клавишами влево-вправо-вниз-вверх
Написано на чистом
Предположения, как это может быть реализовано?
#css #challenge
Написано на чистом
CSS
Предположения, как это может быть реализовано?
#css #challenge
Через неделю после разноса Минина АйТиБородой пришла ответка от Владилена.
По результатам он, в целом, упрочил свое положение среди своей аудитории.
И согласился на дебаты с Мурычем.
#minin #itbeard
По результатам он, в целом, упрочил свое положение среди своей аудитории.
И согласился на дебаты с Мурычем.
#minin #itbeard
YouTube
Он вам не АйтиБорода
Мой телеграм канал: https://t.me/js_by_vladilen
Нельзяграм: https://www.instagram.com/vladilen.minin/
Ресурсы из видео:
Климов не выпускает курс 5 лет: https://github.com/sinyakov/javascript-ninja/blob/master/README.md
Борода в Wiki: https://ru.wikipe…
Нельзяграм: https://www.instagram.com/vladilen.minin/
Ресурсы из видео:
Климов не выпускает курс 5 лет: https://github.com/sinyakov/javascript-ninja/blob/master/README.md
Борода в Wiki: https://ru.wikipe…
Есть два основных подхода для аутентификации пользователя
Аутентификация на основе сессии
При этом подходе вы храните информацию о сессии в базе данных или хранилище сессий и передаете идентификатор сессии пользователю.
Представьте, что пассажир получает только идентификатор билета на свой рейс, а все остальные данные хранятся в базе данных авиакомпании.
Вот как это работает:
- Пользователь делает запрос на вход в систему, и он отправляется на внутренний сервер..
- Бэкэнд создает сессию с использованием секретного ключа и сохраняет данные в хранилище сессий.
- Сервер отправляет клиенту cookie с уникальным идентификатором сессии.
- Пользователь делает новый запрос, и браузер отправляет идентификатор сессии вместе с запросом.
- Сервер аутентифицирует пользователя по идентификатору сессии.
Аутентификация на основе JWT
В подходе на основе JWT информация о сессии не хранится в хранилище сессий.
Вся информация доступна в токене.
Представьте себе, что вы получаете авиабилет вместе со всеми деталями, имеющимися на билете, но в закодированном виде.
Вот как это работает:
- Пользователь делает запрос на вход в систему, и он отправляется на внутренний сервер.
- Сервер проверяет учетные данные и выдает JWT. JWT подписывается с помощью закрытого ключа и не требует хранения сессии.
- JWT передается клиенту либо в виде cookie, либо в теле ответа. У обоих подходов есть свои плюсы и минусы.
- При каждом последующем запросе браузер отправляет cookie с JWT.
- Сервер проверяет JWT с помощью секретного закрытого ключа и извлекает информацию о пользователе.
#jwt #auth
Аутентификация на основе сессии
При этом подходе вы храните информацию о сессии в базе данных или хранилище сессий и передаете идентификатор сессии пользователю.
Представьте, что пассажир получает только идентификатор билета на свой рейс, а все остальные данные хранятся в базе данных авиакомпании.
Вот как это работает:
- Пользователь делает запрос на вход в систему, и он отправляется на внутренний сервер..
- Бэкэнд создает сессию с использованием секретного ключа и сохраняет данные в хранилище сессий.
- Сервер отправляет клиенту cookie с уникальным идентификатором сессии.
- Пользователь делает новый запрос, и браузер отправляет идентификатор сессии вместе с запросом.
- Сервер аутентифицирует пользователя по идентификатору сессии.
Аутентификация на основе JWT
В подходе на основе JWT информация о сессии не хранится в хранилище сессий.
Вся информация доступна в токене.
Представьте себе, что вы получаете авиабилет вместе со всеми деталями, имеющимися на билете, но в закодированном виде.
Вот как это работает:
- Пользователь делает запрос на вход в систему, и он отправляется на внутренний сервер.
- Сервер проверяет учетные данные и выдает JWT. JWT подписывается с помощью закрытого ключа и не требует хранения сессии.
- JWT передается клиенту либо в виде cookie, либо в теле ответа. У обоих подходов есть свои плюсы и минусы.
- При каждом последующем запросе браузер отправляет cookie с JWT.
- Сервер проверяет JWT с помощью секретного закрытого ключа и извлекает информацию о пользователе.
#jwt #auth
Есть инструмент для облегчения миграции с миксинов на композаблы - vue-mixable
Автор - член
#mixins
Автор - член
Vue.js
команды Linus Borg
#mixins
GitHub
GitHub - LinusBorg/vue-mixable: Turn Vue Mixins into Composables with a simple wrapper function
Turn Vue Mixins into Composables with a simple wrapper function - LinusBorg/vue-mixable
Такая забавная статья про
Автор хочет типизацию как в
#css #ts
CSS
попаласьАвтор хочет типизацию как в
TypeScript
, но только для CSS
#css #ts
Хабр
CSS-классы вредны
Если вы когда-нибудь заглядывали за кулисы пользовательских веб-интерфейсов, то знаете для чего нужно свойство class . Оно ведь нужно для связи HTML с CSS, правда? Сейчас я расскажу о том, почему...
// Vue 3
const app = createApp(App);
app.config.errorHandler = (err) => {
alert(err);
};
Во
Vue
можно создать собственный обработчик ошибок и ворнингов для лучшей обработки ошибок для улучшения UX
.Например, вместо того, чтобы приложение падало, если ошибка не была обработана, вы можете показать специальный экран ошибки и попросить пользователя обновить страницу или сделать что-то еще.
Обработчик ворнингов работает только в
dev
режиме.#tip
Для чего нужны
В проектах
tsconfig.json:
- Основной файл конфигурации
- Определяет глобальные настройки
- Может включать ссылки на другие файлы конфигурации
-
tsconfig.node.json:
- Конфигурация
- Определяет настройки
- Используется
#vite #ts #nodejs
tsconfig.node.json
, tsconfig.json
, (tsconfig.vitest.json
)?В проектах
Vue
, созданных с помощью Vite
, используются несколько файлов конфигурации TypeScript
, каждый из которых играет свою роль в компиляции и тестировании TypeScript
-кода.tsconfig.json:
- Основной файл конфигурации
TypeScript
.- Определяет глобальные настройки
TypeScript
для всего проекта, такие как целевая версия JavaScript
, модульная система, пути к файлам и т.д.- Может включать ссылки на другие файлы конфигурации
TypeScript
(extends, references).-
tsconfig.json
по умолчанию не используется в Vite
для компиляции кода.tsconfig.node.json:
- Конфигурация
TypeScript
для среды Node.js
.- Определяет настройки
TypeScript
, специфичные для компиляции кода в Node.js
.- Используется
Vite
для компиляции TypeScript
-кода серверной части приложения.#vite #ts #nodejs
При попытке пользователя уйти с сайта (
Вот пример Vue 3 композабла для этого
#tip
exit-intent
), можно показывать сообщение (мольба остаться, подарок суперскидки, предложение сохранить сделанные изменения и т.п.)Вот пример Vue 3 композабла для этого
#tip
GitHub
GitHub - nickap/vue-exit-intent: A helper to know when a user is about to leave your page.
A helper to know when a user is about to leave your page. - nickap/vue-exit-intent
Все браузеры кроме
#animation
Firefox
поддерживают View Transitions API - это примерный аналог анимаций Transition
во Vue.js
#animation
MDN Web Docs
View Transition API - Web APIs | MDN
The View Transition API provides a mechanism for easily creating animated transitions between different website views. This includes animating between DOM states in a single-page app (SPA), and animating the navigation between documents in a multi-page app…