Относительно неплохой список технологий и практик современного фронтенда
https://roadmap.sh/frontend
Роадмап по
#frontend #roadmap
https://roadmap.sh/frontend
Роадмап по
Vue.js
у них не очень#frontend #roadmap
roadmap.sh
Frontend Developer Roadmap: What is Frontend Development?
Learn what Frontend Development is, what frontend developers do and how to become a modern frontend developer using our community-driven roadmap.
Если попытаться использовать
то выходит ошибка:
Это потому, что
В то же время,
Чтобы использовать
Тем не менее, текст вышеуказанной ошибки не совсем корректен, потому что доступ к
Это удобно при создании, например, плагинов, когда доступа к своему синглтону
Кстати, на Хабре недавно была большая статья про контексты
#tip #provide #router
vue-router
в js
/ts
модуле или composable
функции, import { useRouter } from "vue-router";
function foo() {
const router = useRouter();
}
то выходит ошибка:
[Vue warn]: inject() can only be used inside setup() or functional components.
Это потому, что
vue-router
, Pinia
, PrimeVue.Toast
и многие другие библиотеки используют provide/inject
для глобального внедрения своих элементов в ваше приложение.// vuejs/packages/router/src/useApi.ts
export function useRouter(){
return inject(routerKey)
}
В то же время,
provide/inject
во Vue работает только в контексте приложения.Чтобы использовать
vue-router
в js
модулях приходится создавать отдельный синглтон для router
, инициализировать его через createRouter()
и затем использовать обычный ES импорт где надо. Почему вместо стандартного ES экспорта/импорта
сделано такое усложнение через provide/inject
не совсем понятно.Тем не менее, текст вышеуказанной ошибки не совсем корректен, потому что доступ к
inject()
можно получить явно выполнив код в контексте приложения:// plugins/debug.ts
import { useRouter } from "vue-router"
export default {
install(app) {
app.runWithContext(() => {
const router = useRouter();
router.addRoute({ "/debug", () => import('@/views/DebugView.vue') });
})
}
}
Это удобно при создании, например, плагинов, когда доступа к своему синглтону
router
еще нет.Кстати, на Хабре недавно была большая статья про контексты
Vue
и Nuxt
#tip #provide #router
Эван выбрался из своего Сингапура на Accel Open Source конференцию и гуляет по Сан-Франциско перед отъездом домой.
Сильно понравился нижний коммент.
#evanyou #vercel
Сильно понравился нижний коммент.
#evanyou #vercel
На этих выходных Vue Mastery опять устраивает бесплатный показ своего кено.
#vuemastery #learning #video
#vuemastery #learning #video
Vue Mastery
Free Weekend May 10-12 2024
Join me to watch all of @VueMastery’s courses free through May 10-12
Для меня
#api #hoppscotch #postman
Hoppscotch
вне конкуренции, но, всё-таки, сравнительная таблица инструментов для работы с web API.#api #hoppscotch #postman
JavaScript
по популярному рейтингу Tiobe
обогнал Visual Basic
в этом годуTiobe
просто подсчитывается количество результатов поисковых движков по каждому языку программирования.Более объективный StackOverflow Annual Survey показывает совсем другие результаты
#lang #js
This media is not supported in your browser
VIEW IN TELEGRAM
Новости искусственного интеллекта
CEO компании Bumble (онлайн приложение для знакомств типа Тиндера) рассказывает о планах по использованию в этой сфере AI.
Твой AI помощник по свиданиям будет встречаться вместо тебя с AI помощником по свиданиям другого человека и давать оценку успешности возможных реальных отношений. Как бы решая проблему 600 откликов на твою фотку.
Забавно, жутко, но не лишено смысла.
#ai #offtop
CEO компании Bumble (онлайн приложение для знакомств типа Тиндера) рассказывает о планах по использованию в этой сфере AI.
Твой AI помощник по свиданиям будет встречаться вместо тебя с AI помощником по свиданиям другого человека и давать оценку успешности возможных реальных отношений. Как бы решая проблему 600 откликов на твою фотку.
Забавно, жутко, но не лишено смысла.
#ai #offtop
15 отличий
1) вью более предсказуемый. Он ближе к стандартам на порядок
2) vue обладает глубокой мутабельной реактивностью что в разы облегчает вход для начинающих
3) реактивность основанная на полях а не методах, что тоже более интуитивно и просто для вката
4) шаблоны имеют строгие ограничения что заставляет писать более предсказуемый флоу
5) vue это фреймворк с богатой ОФИЦИАЛЬНОЙ обвязкой, что позволяет сосредоточиться на меньшем спектре библиотек и понимать код почти любого vue проекта
6) глубокая мутабельная реактивность на основе свойств
7) слоты
8) директивы гораздо лучше решают задачи управлением флоу чем методы JS
9) HTML-совместимость (да v-for нет в самом HTML но он парсится парсером HTML и поддается обработке)
10) SFC без необходимости CSS-in-JS
11) JS-in-CSS
12) большая официальная экосистема
13) DX-ориентированность. Те если есть апишки, то они пытаются быть удобными для разработчиков
14) Экосистема растущая во вне, а не вовнутрь (мы помогаем всем - все помогают нам)
15) Хорошая расширяемость API
#vuejs #react
Vue.js
от React
от Дениса Чернова1) вью более предсказуемый. Он ближе к стандартам на порядок
2) vue обладает глубокой мутабельной реактивностью что в разы облегчает вход для начинающих
3) реактивность основанная на полях а не методах, что тоже более интуитивно и просто для вката
4) шаблоны имеют строгие ограничения что заставляет писать более предсказуемый флоу
5) vue это фреймворк с богатой ОФИЦИАЛЬНОЙ обвязкой, что позволяет сосредоточиться на меньшем спектре библиотек и понимать код почти любого vue проекта
6) глубокая мутабельная реактивность на основе свойств
7) слоты
8) директивы гораздо лучше решают задачи управлением флоу чем методы JS
9) HTML-совместимость (да v-for нет в самом HTML но он парсится парсером HTML и поддается обработке)
10) SFC без необходимости CSS-in-JS
11) JS-in-CSS
12) большая официальная экосистема
13) DX-ориентированность. Те если есть апишки, то они пытаются быть удобными для разработчиков
14) Экосистема растущая во вне, а не вовнутрь (мы помогаем всем - все помогают нам)
15) Хорошая расширяемость API
#vuejs #react
Telegram
Denis Chernov in Vue.js — русскоговорящее сообщество
окей
1) вью более предсказуемый. Он ближе к стандартам на порядок
2) vue обладает глубокой мутабельной реактивностью что в разы обле5гчает вход для начинающих
3) реактивность основанная на полях а не методах, что тоже более интуитивно и просто для вката
4)…
1) вью более предсказуемый. Он ближе к стандартам на порядок
2) vue обладает глубокой мутабельной реактивностью что в разы обле5гчает вход для начинающих
3) реактивность основанная на полях а не методах, что тоже более интуитивно и просто для вката
4)…
This media is not supported in your browser
VIEW IN TELEGRAM
Ссылка на код из видео
На первом курсе университета у нас одной из задач для зачета по программированию была следующая:
- написать программу на любом языке программирования, которая в качестве вывода печатала бы свой исходный код. Естественно, без использования функций работы с файловой системой.
Самое элегантное решение занимало около 5 строк. Интересно, на JavaScript такое можно?
#js #chalenge
На первом курсе университета у нас одной из задач для зачета по программированию была следующая:
- написать программу на любом языке программирования, которая в качестве вывода печатала бы свой исходный код. Естественно, без использования функций работы с файловой системой.
Самое элегантное решение занимало около 5 строк. Интересно, на JavaScript такое можно?
#js #chalenge
Vite
при сборке использует ES modules
и ряд других относительно современных технологий. Если вам нужна поддержка старых браузеров, включая IE 11, то для этого у Vite
есть плагин plugin-legacy#vite #legacy
GitHub
vite/packages/plugin-legacy at main · vitejs/vite
Next generation frontend tooling. It's fast! Contribute to vitejs/vite development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
Codeium
, всё-таки, мощьСгенерил все что надо, распарсил, собрал и положил куда надо, создав внутренний цикл исходя из контекста. Причем, контекст (бэкенд) написан на другом языке.
Комбинация для вызова инлайн чатбота - CTRL+SHIFT+I
#codeium
Google Firebase сдался и добавил в свои сервисы
Пока в виде preview сервис можно попробовать бесплатно. Потом собираются брать плату и за саму базу, и за API доступа к ней.
Вряд ли Google с такими политиками сможет конкурировать с
На данный момент это две основные площадки, с которыми фронтендер или мобильный разработчик может без излишних усилий сделать удобный облачный бэкенд, как без логики (с простым
#firebase #supabase
SQL
базу данных (облачную PostgreSQL
) в форме Firebase Data Connect.Пока в виде preview сервис можно попробовать бесплатно. Потом собираются брать плату и за саму базу, и за API доступа к ней.
Вряд ли Google с такими политиками сможет конкурировать с
Supabase
.На данный момент это две основные площадки, с которыми фронтендер или мобильный разработчик может без излишних усилий сделать удобный облачный бэкенд, как без логики (с простым
CRUD
доступом), так и с ней (Functions
, Auth
), и оставаясь в рамках стандартов (не сильно привязываясь к проприетарным решениям провайдеров сервисов).#firebase #supabase
Firebase
Firebase Data Connect
Firebase's first relational database solution for developers who want to create secure and scalable apps with Cloud SQL for PostgreSQL and type-safe mobile and web SDKs. Learn more.
Устоявшийся в DDD (domain-driven design) паттерн
Смысл его в разделении логики работы с данными на часть, которая просто запрашивает данные (
Query:
- Не изменяет состояние системы. Никаких сайд эффектов
- Контекст запроса хранит нужные для её выполнения данные (пейджинг, фильтры и т.п.)
- Возвращает результат
Command:
- Изменяет состояние системы
- Ничего не возвращает
- Хорошо описывает предметную область, как действия пользователей над системой
- Контекст команды хранит нужные для её выполнения данные
Например, пользователь при регистрации вводит email, его надо валидировать и сохранить. В случае следования
В аспекте Vue.js
#architecture #ddd
CQRS
(Command and Query Responsibility Segregation) или CQS
(Command and Query Segregation) - разделение команд и запросов - может сделать программу более понятной и поддерживаемой.Смысл его в разделении логики работы с данными на часть, которая просто запрашивает данные (
query
), и часть, которая их изменяет (command
).Query:
- Не изменяет состояние системы. Никаких сайд эффектов
- Контекст запроса хранит нужные для её выполнения данные (пейджинг, фильтры и т.п.)
- Возвращает результат
Command:
- Изменяет состояние системы
- Ничего не возвращает
- Хорошо описывает предметную область, как действия пользователей над системой
- Контекст команды хранит нужные для её выполнения данные
Например, пользователь при регистрации вводит email, его надо валидировать и сохранить. В случае следования
CQS
необходимо разделить логику на две части (сделать две функции) - валидация (проверка корректности и наличия такого email уже в базе данных) и сохранение.В аспекте Vue.js
computed
работает как реактивный query
, watch
- реактивный command
#architecture #ddd
Во Vue-FAQ добавилась статья, описывающая используемые структуры для Vue 3 проекта -
#architecture #vuefaq
Flat
, Atomic
, Модульная
, FSD
, микрофронтенды
, с небольшим сравнительным анализом.#architecture #vuefaq
Vue FAQ
Структура Vue 3 проекта | Vue FAQ
Vue FAQ - information about Vue.js and frontend development in general
Сегодня последний день трехдневной конференции vueconf.us в Новом Орлеане, США
Билеты на нее начинались от $900
#event
Билеты на нее начинались от $900
#event
Во
Но:
1. Это не композабл по определению
2. Там не обязательно рефы
3. Они не "глобальны"
В общем случае структура данного объекта - экспортируемые из ES модуля реактивные данные и функции для работы с ними.
Функционально они заменяют "сторы"
Мне кажется, самое подходящее название для данной конструкции - [реактивный] бизнес объект (РБО). В них инкапсулируется логика предметной области и приложения, они не привязаны к конкретным компонентам, и по аналогии с другими языками и фреймворками, этот паттерн -
Кроме того, позиционирование именно как "бизнес объект" будет требовать явного отделения от него инфраструктурного слоя - работы с Backend API, например. То есть, стимулировать использование лучших практик и наработок из других сфер разработки ПО, еще более переводя
#architecture #vuejs #reactivity #rbo #composables
Vue 3
есть важная и нередко используемая конструкция, у которой нет имени. Это то, что обычно называют "композабл с глобальными рефами". Но:
1. Это не композабл по определению
2. Там не обязательно рефы
3. Они не "глобальны"
В общем случае структура данного объекта - экспортируемые из ES модуля реактивные данные и функции для работы с ними.
Функционально они заменяют "сторы"
Pinia
. Называть их тоже stores
двусмысленно и нелогично. Вообще, молиться на "глобальный стейт" после появления идеи JavaScript signals и их всевозможных реализаций, включая Vue Reactivity API
, архаично.Мне кажется, самое подходящее название для данной конструкции - [реактивный] бизнес объект (РБО). В них инкапсулируется логика предметной области и приложения, они не привязаны к конкретным компонентам, и по аналогии с другими языками и фреймворками, этот паттерн -
Business Object
- выглядит вполне подходящим.Кроме того, позиционирование именно как "бизнес объект" будет требовать явного отделения от него инфраструктурного слоя - работы с Backend API, например. То есть, стимулировать использование лучших практик и наработок из других сфер разработки ПО, еще более переводя
Vue.js
из фреймворка для небольших проектов в разряд enterprise level решений.#architecture #vuejs #reactivity #rbo #composables