В субботу 8 июня 2024 года прошла организованная Яндексом конференция "Я 💛 Фронтенд 2024". Одним из спикеров был Никита Балихин, техлид Газпромбанка, который рассказывал о написанном ими внутреннем плагине для
В начале доклада он несколько раз назвал Vite - Вайтом. Это, в первую очередь, говорит о его техническом уровне и кругозоре, но дело не в персоналиях.
Помню как очень давно впервые узнал на каком-то профессиональном форуме, что
Сиквел был небольшим шоком. Пришло осознание, что у сферы
Допустимо было не знать как правильно произносится термин в 1990-ых, потому что неоткуда было это узнать. Допустимо не знать как произносится SQL тем, для кого базы данных - не профильная специальность. Допустимо называть Java - жабой, потому что это вполне отражает IQ человека, и тут ничего не поделать. Джуну допустимо ошибаться в названиях потому что он джун.
Но техлид топ банка, в 2024 году, бесстыдно срубивший бабла за рекламу Levi's на докладе ни о чем на крупнейшей фронтендерской конференции, называя термины как привык в своем колхозе (URL у него был Урел), выглядит гопником-вкатуном нулевого уровня, вызывающим фейспалм у абсолютного большинства аудитории, кто-то из которой его и поправил с Vite.
Уважайте культуру программной разработки.
#event #social
Webpack
-a.В начале доклада он несколько раз назвал Vite - Вайтом. Это, в первую очередь, говорит о его техническом уровне и кругозоре, но дело не в персоналиях.
Помню как очень давно впервые узнал на каком-то профессиональном форуме, что
SQL
это никакой не эс ку эль, а сиквел. Youtube
-a тогда еще не было, услышать этот термин от носителя английского языка было негде, даже в университете на специализированном по RDBMS
курсе это был эс ку эль. Сиквел был небольшим шоком. Пришло осознание, что у сферы
software development
есть своя культура, и её надо уважать. Правильное наименование - это часть культуры. Взрослому человеку с именем Николай будет неприятно, если незнакомые ему люди будут называть его "Колян" или "Колёк".Допустимо было не знать как правильно произносится термин в 1990-ых, потому что неоткуда было это узнать. Допустимо не знать как произносится SQL тем, для кого базы данных - не профильная специальность. Допустимо называть Java - жабой, потому что это вполне отражает IQ человека, и тут ничего не поделать. Джуну допустимо ошибаться в названиях потому что он джун.
Но техлид топ банка, в 2024 году, бесстыдно срубивший бабла за рекламу Levi's на докладе ни о чем на крупнейшей фронтендерской конференции, называя термины как привык в своем колхозе (URL у него был Урел), выглядит гопником-вкатуном нулевого уровня, вызывающим фейспалм у абсолютного большинства аудитории, кто-то из которой его и поправил с Vite.
Уважайте культуру программной разработки.
#event #social
💩46👍11🤓2❤1
Интересное свежее интервью Эвана об истории
И возможно
#vite #evanyou #video
Vite
(/vit/)Vite
создавался довольно долго - около двух лет. Одновременно с ним было несколько попыток других разработчиков сделать быстрый js
сборщик. Самой успешной попыткой был Snowpack, который использовалcя, в том числе, в SvelteKit
, и из которого Эван перенял полезные вещи. Однако через некоторое время команда Snowpack
переключилась на разработку фреймворка Astro
, и сама стала использовать для него Vite
.И возможно
Vite
станет компанией#vite #evanyou #video
YouTube
Why is Vite Everywhere? | Evan You
Evan discusses Vite, a JavaScript build tool that simplifies the process of transforming and bundling code for web applications. Originally starting as a small prototype called Vue Dev Server, Vite has evolved to streamline development and provide efficient…
👍3
Мы уже писали о двух прорывах
Дело в том, что правило
Теперь в
Аналогичная анимация применяется к
Есть еще один уже полностью рабочий вариант анимации появления диалогов через
#css
CSS
в области анимации раскрытия блоков (аккордеон). Еще одна старая проблема - анимация диалогов и всплывающих окошек.Дело в том, что правило
display:
имеет дискретный тип анимации, это значит плавный переход display:none <-> display:block
не может быть выполнен через transition
. Он будет скачком. В результате для анимаций появления и исчезания приходилось подключать JavaScript
с setTimeout()
и иными ухищрениями.Теперь в
Chromium
браузерах появилась поддержка transition-behavior: allow-discrete;
и @starting-style
, которые решают эту проблему:dialog {
display: none; /* user agent style */
opacity: 0;
/* translate: 0 -25vh; */
transition-property: display opacity;
transition-duration: 1s;
transition-behavior: allow-discrete;
}
dialog[open] {
display: block; /* user agent style */
opacity: 1;
@starting-style {
opacity: 0;
/* translate: 0 0; */
}
}
Safari
и Firefox
уже на пути реализации этих CSS
правил. А пока анимация в них просто не будет работать.Аналогичная анимация применяется к
overlay
или ::backdrop
Есть еще один уже полностью рабочий вариант анимации появления диалогов через
keyframes
, об этом в следующий раз#css
Telegram
Vue-FAQ
После 20 лет мучений с раскрытием "аккордеона" чистым CSS браузеры (пока только Chrome) скоро подарят нам еще один, самый естественный способ:
height: calc-size(auto);
Песочница
Функция работает аналогично calc(), но может принимать в качестве аргумента…
height: calc-size(auto);
Песочница
Функция работает аналогично calc(), но может принимать в качестве аргумента…
👍21
Ссылки на множество бесплатных ресурсов для разработчиков
https://github.com/ripienaar/free-for-dev
#tip #dev
https://github.com/ripienaar/free-for-dev
#tip #dev
GitHub
GitHub - ripienaar/free-for-dev: A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev
A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev - ripienaar/free-for-dev
👍3
Сколько стоит захостить современный вебсайт
А когда-то вполне можно было хостить вебсайт на миллион пользователей за какие-то сотню-другую баксов в месяц...
Стоп. И сейчас можно, если забыть для фронтенда слово
#webhosting #serverless
А когда-то вполне можно было хостить вебсайт на миллион пользователей за какие-то сотню-другую баксов в месяц...
Стоп. И сейчас можно, если забыть для фронтенда слово
serverless
. Который нынче чаще всего используется для запуска SSR
приложений.#webhosting #serverless
YouTube
when your serverless computing bill goes parabolic...
Recently, a Vercel customer was surprised to get a $96K serverless bill after their app went viral. Learn how cloud pricing works and explore strategies for self-hosting on your own Linux server.
#tech #programming #thecodereport
💬 Chat with Me on Discord…
#tech #programming #thecodereport
💬 Chat with Me on Discord…
Vite
недавно по загрузкам вышел на половину загрузок webpack
В 7 классе на уроках математики учат школьников анализировать графики. Давайте и мы поизучаем, без учета других js бандлеров.
График говорит, что начиная с весны 2023 года, все новые проекты пишутся на
Vite
, и немного существующих переписываются на него с webpack
,либо
Что 80% новых проектов пишутся на
Vite
, 20% на webpack
, и довольно большая часть существующих проектов на webpack
переходит на Vite
,либо
Что 60% новых проектов пишутся на
Vite
, 40% на webpack
, и чуть ли не половина существующих проектов на webpack
мигрировала на Vite
.Действительность где-то между ними
Ну и еще график говорит, что число проектов на
js/ts
за последние 2 года увеличилось почти в 2 (два!) раза.#vite #webpack
👍9😁1
Чистая архитектура (
Она даёт:
- Независимость от зависимостей. Архитектура вашей системы не зависит напрямую от существования какой-либо библиотеки. Это позволяет использовать фреймворки как инструменты, а не втискивать свою систему в их рамки.
- Тестируемость. Бизнес-правила можно тестировать без UI, базы данных, веб-сервера или любого другого внешнего элемента.
- Независимость от UI. Пользовательский интерфейс можно легко изменить. Например, веб-интерфейс может быть заменен на мобильный, без изменения бизнес-правил.
- Независимость от внешних сервисов. Вы можете заменить, например, MySQL на Mongo, поменять платедного провайдера или что-то еще. Ваши бизнес-правила просто ничего не знают о внешнем мире.
Именно по рекомендациями
#architecture #cleanarchitecture
Clean Architecture
) — это способ разделения функционала по степени его близости к предметной области приложения.Она даёт:
- Независимость от зависимостей. Архитектура вашей системы не зависит напрямую от существования какой-либо библиотеки. Это позволяет использовать фреймворки как инструменты, а не втискивать свою систему в их рамки.
- Тестируемость. Бизнес-правила можно тестировать без UI, базы данных, веб-сервера или любого другого внешнего элемента.
- Независимость от UI. Пользовательский интерфейс можно легко изменить. Например, веб-интерфейс может быть заменен на мобильный, без изменения бизнес-правил.
- Независимость от внешних сервисов. Вы можете заменить, например, MySQL на Mongo, поменять платедного провайдера или что-то еще. Ваши бизнес-правила просто ничего не знают о внешнем мире.
Именно по рекомендациями
Clean architecture
не следует обращаться к web API
напрямую из стора. Подобные требования есть у многих методологий проектирования ПО#architecture #cleanarchitecture
👍7❤1
currentColor
- это значение, которое принимает значение любого цвета, установленного в данный момент для этого селектора, независимо от того, установлен ли он неявно или унаследован.Пример:
.btn {
padding: 0.5em 1.25em;
text-transform: uppercase;
text-decoration: none;
background: white;
color: limegreen;
border: 1px solid currentColor;
// border будет тоже цвета limegreen
}
currentColor
часто применяется в svg иконках, когда надо прокинуть установленный на элементе её содержащем цвет, на саму иконку. В этом случае в svg используют color: currrentColor
. В распространенных icon packs это обычно так.Если у svg иконки есть свойства и
color
, и fill
, то как минимум одно из них прокидывать в обертку придется пропсами, как в данном примере#tip #css #svg
Vue FAQ
Ресурсы приложения | Vue FAQ
Vue FAQ - information about Vue.js and frontend development in general
👍12❤1
TanStack
пишет свой мета-фреймворк - TanStack Start Смесь
React
, TanStack Router
, Vinxi
, Nitro
и Vite
Всё еще в разработке, но свой сайт они уже на нем переписали и открыли код.
По слухам сделают бо́льший упор на SPA чем SSR
#tanstack
Tanstack
TanStack Start
Full-document SSR, Streaming, Server Functions, bundling and more, powered by TanStack Router and Vite - Ready to deploy to your favorite hosting provider.
😁2🔥1🙈1
This media is not supported in your browser
VIEW IN TELEGRAM
Желающие есть размяться?
P.S. Почему "три года ММА" выглядят как доение коровы за вымя?
#minin #mma #marketingfraud
P.S. Почему "три года ММА" выглядят как доение коровы за вымя?
#minin #mma #marketingfraud
😁11🤡4🤣2
Я уже писал, как в 30 строк сделать глобальный прелоадер
В компонентах он включается/выключается так:
Всё работало прекрасно. Тут понадобилось кэшировать приходящие данные. Верней, приходили они партиями, и при выборе одного элемента через
После этого пришла мысль - а где должны быть
Правильно ли это? По-моему, да. Компонент отвечает только за свой контент. Загрузка данных, откуда она происходит, работа с прелоадером - это его не должно касаться.
Мощь
#reactivity
AppLoader
на всё приложение.В компонентах он включается/выключается так:
const { startLoading, stopLoading } = useAppLoader();
onMounted(async () => {
startLoading();
xr.value = await loadXr(props.vid);
stopLoading();
});
Всё работало прекрасно. Тут понадобилось кэшировать приходящие данные. Верней, приходили они партиями, и при выборе одного элемента через
props.vid
он мог как оказаться уже в кэше, так и его нужно было грузить по сети. Для этого была сделана промежуточная утилита (js
модуль), которая экспортировала асинхронный метод loadXr()
.После этого пришла мысль - а где должны быть
startLoading() / stopLoading()
для глобального прелоадера? Зачем им срабатывать, когда данные берутся из кэша? Перенес их в ту самую утилиту. В итоге компонент стал выглядеть так:onMounted(async () => {
xr.value = await loadXr(props.vid);
});
// или в корне setup-a:
loadXr(props.vid).then((data) => {
xr.value = data;
})
Правильно ли это? По-моему, да. Компонент отвечает только за свой контент. Загрузка данных, откуда она происходит, работа с прелоадером - это его не должно касаться.
<Suspense>
, который уже много лет пытаются внедрить во Vue
, выглядит совсем не как решение для серьезных приложений, где нужно явно контролировать потоки данных, а, скорей, уровня Nuxt
.Мощь
Vue Reactivity API
сильно недооценена, - в том числе, в официальной документации. Не надо бояться ее использовать.#reactivity
Telegram
Vue-FAQ
Глобальный прелоадер
Альтернативу много лет создающемуся Suspense несложно сделать самому с помощью одной composable функции в 30 строк.
Он нужен когда в нескольких компонентах могут асинхронно грузится данные, и нужно показывать один общий прелоадер пока…
Альтернативу много лет создающемуся Suspense несложно сделать самому с помощью одной composable функции в 30 строк.
Он нужен когда в нескольких компонентах могут асинхронно грузится данные, и нужно показывать один общий прелоадер пока…
👍6
Иногда имеет смысл для удобства пользователя отключить выделение текста на элементах UI:
А следующий селектор установит шрифт, равный системному на вашем устройстве:
#css #tip
.unselectable {
user-select: none;
}
А следующий селектор установит шрифт, равный системному на вашем устройстве:
.selector {
font-family: -apple-system, BlinkMacSystemFont,
"Segoe UI", system-ui, Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}
#css #tip
👍15🙈1
Мир IT крутится вокруг данных. Если задуматься, 99.999% времени любой компьютер внутри себя просто перекладывает данные с одного места в другое.
В
#data #architecture
Data pipeline
(конвейер данных) - это методика сбора, обработки и анализа данных, которые сперва собираются из разных источников в хранилища, структурируются и затем используются для разных целей.В
data lake
складывают неструктурированные данные, data warehouse
- уже структурированные, удобные для запросов.#data #architecture
❤5