В подтверждение нашему недавнему совету по оптимизации js кода, твит Эвана:
Самое приятное в этом то, что вы можете писать хороший функциональный код, который выполняет итерации над коллекциями (аналогично map, filter и т.д.) с оптимизированной вручную производительностью.
Каждый раз, когда я использую map/filter в JS вместо обычных циклов for, мне кажется, что я добровольно отказываюсь от производительности.
#tip #optimization #evanyou
Самое приятное в этом то, что вы можете писать хороший функциональный код, который выполняет итерации над коллекциями (аналогично map, filter и т.д.) с оптимизированной вручную производительностью.
Каждый раз, когда я использую map/filter в JS вместо обычных циклов for, мне кажется, что я добровольно отказываюсь от производительности.
#tip #optimization #evanyou
👍8
Относительно неплохой список технологий и практик современного фронтенда
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.
❤2
Если попытаться использовать
то выходит ошибка:
Это потому, что
В то же время,
Чтобы использовать
Тем не менее, текст вышеуказанной ошибки не совсем корректен, потому что доступ к
Это удобно при создании, например, плагинов, когда доступа к своему синглтону
Кстати, на Хабре недавно была большая статья про контексты
#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
❤10
Эван выбрался из своего Сингапура на Accel Open Source конференцию и гуляет по Сан-Франциско перед отъездом домой.
Сильно понравился нижний коммент.
#evanyou #vercel
Сильно понравился нижний коммент.
#evanyou #vercel
😁6
На этих выходных 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
❤5👍1
Для меня
#api #hoppscotch #postman
Hoppscotch вне конкуренции, но, всё-таки, сравнительная таблица инструментов для работы с web API.#api #hoppscotch #postman
🔥4
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
🤣1
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)…
👍25🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Ссылка на код из видео
На первом курсе университета у нас одной из задач для зачета по программированию была следующая:
- написать программу на любом языке программирования, которая в качестве вывода печатала бы свой исходный код. Естественно, без использования функций работы с файловой системой.
Самое элегантное решение занимало около 5 строк. Интересно, на JavaScript такое можно?
#js #chalenge
На первом курсе университета у нас одной из задач для зачета по программированию была следующая:
- написать программу на любом языке программирования, которая в качестве вывода печатала бы свой исходный код. Естественно, без использования функций работы с файловой системой.
Самое элегантное решение занимало около 5 строк. Интересно, на JavaScript такое можно?
#js #chalenge
❤1
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.
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Codeium, всё-таки, мощьСгенерил все что надо, распарсил, собрал и положил куда надо, создав внутренний цикл исходя из контекста. Причем, контекст (бэкенд) написан на другом языке.
Комбинация для вызова инлайн чатбота - CTRL+SHIFT+I
#codeium
👍7🤡2
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
🔥29