Два самых значимых улучшения в грядущем
- PR#9511 - улучшает работу с большими reactive массивами (которые сейчас обслуживаются как все объекты - через
- PR#10407 - в целом в два раза уменьшает использование памяти на реактивном коде
#vuejs #optimization
Vue 3.5
связаны с оптимизацией реактивности- PR#9511 - улучшает работу с большими reactive массивами (которые сейчас обслуживаются как все объекты - через
Proxy
), что должно дать многократное ускорение при работе с ним и оптимизацию по памяти- PR#10407 - в целом в два раза уменьшает использование памяти на реактивном коде
#vuejs #optimization
GitHub
optimize array tracking (fix #4318) by jods4 · Pull Request #9511 · vuejs/core
This PR implements the optimisations proposed in #4318. Shortly:
It adds a special tracking key: ARRAY_ITERATE_KEY, which represents a full dependency on an array (not including extra keys when ha...
It adds a special tracking key: ARRAY_ITERATE_KEY, which represents a full dependency on an array (not including extra keys when ha...
v-memo - директива для микро-оптимизации
При изменении актуального состояния компонента он ре-рендится весь. Может случиться, что какие-то куски его шаблона тяжелы для построения, и при определенных изменениях их не надо ре-рендерить, тогда можно определить эту логику через
#optimization
При изменении актуального состояния компонента он ре-рендится весь. Может случиться, что какие-то куски его шаблона тяжелы для построения, и при определенных изменениях их не надо ре-рендерить, тогда можно определить эту логику через
v-memo
. Особенно это может пригодиться при отображении большого массива нетривиальных элементов/компонентов.#optimization
ru.vuejs.org
Vue.js
Vue.js - The Progressive JavaScript Framework
Поставил
Бандл был 200Кб, стал 400Кб...
wtf%№?:;*"(;?;*!!!!!
Кто как делает?
#firebase #auth #optimization
Firebase Authentication
на сайт (логин через Google
, Apple
и т.д.)Бандл был 200Кб, стал 400Кб...
wtf%№?:;*"(;?;*!!!!!
AI бот
предлагает другие варианты, но уверяет, что они хуже.Кто как делает?
#firebase #auth #optimization
В очередной раз делая
Понятно, что для того, чтобы при смене языка он сразу менялся на странице без ее перезагрузки. А оно того стоит? Ценой этого - пронизывание практически всех компонентов сетью реактивной зависимости, что точно не благотворно сказывается на производительности и сложности кода.
Большинство сайтов направлены на определенную языковую аудиторию. Кроме того, можно определять по браузеру язык системы и автоматически в него переключаться в первый раз. То есть, процент тех, кто на сайте сменит язык какой - 1-2? И из-за одного их переключения должны тормозить все?
Напомню, что у монструозного лендинга
Какие мысли по этому поводу?
#i18n #optimization
i18n
на Vue
проекте, задумался - а зачем этому модулю (и функции t()
в частности) реактивность? Неважно, стандартный это i18n-next
или самописный.Понятно, что для того, чтобы при смене языка он сразу менялся на странице без ее перезагрузки. А оно того стоит? Ценой этого - пронизывание практически всех компонентов сетью реактивной зависимости, что точно не благотворно сказывается на производительности и сложности кода.
Большинство сайтов направлены на определенную языковую аудиторию. Кроме того, можно определять по браузеру язык системы и автоматически в него переключаться в первый раз. То есть, процент тех, кто на сайте сменит язык какой - 1-2? И из-за одного их переключения должны тормозить все?
Напомню, что у монструозного лендинга
GitLab
основная зависимость в 13Mb скриптов именно i18n
Какие мысли по этому поводу?
#i18n #optimization
Telegram
Vue-FAQ
Кастомная i18n
Распространенный пакет для интернационализации веб приложений i18next сильно раздут и содержит много редко используемого функционала.
В то же время перевод сайта на несколько языков без необходимости обработки чисел и родов можно провести…
Распространенный пакет для интернационализации веб приложений i18next сильно раздут и содержит много редко используемого функционала.
В то же время перевод сайта на несколько языков без необходимости обработки чисел и родов можно провести…
Сайт icones.js.org довольно удобен для подбора иконок (хотя выбор средний и поиска по параметрам нет, но хорошо сделано копирование найденного сразу в
К вопросу о том, качественный ли код пишет
#antfu #icons #optimization
svg
), но такое потребление памяти после поиска нескольких иконок выше понимания.К вопросу о том, качественный ли код пишет
Anthony Fu
, автор VueUse
, Nuxt
и многого другого#antfu #icons #optimization
VS Code
позволяет отключить аппаратное ускорение при отрисовке, что может заметно убыстрить IDE
при плохом GPU
или проблемах с драйверами1. Preferences > Configure Runtime Arguments
2. Добавить: "disable-hardware-acceleration": true
Или сразу в
.vscode/argv.json
#vscode #tip #optimization
Vite
позволяет использовать новый более производительный и функциональный компилятор SASS
через эту опцию:export default {
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler'
}
}
}
}
Дефолтным его не делали пока потому, что это breaking change, но в
Vite 6
он будет по умолчанию.В любом случае, чистый
CSS3
со своим современным функционалом уже вполне покрывает все основные потребности стилизации.Рекомендуется к использованию.
#vite #css #optimization
Заспорил тут в Твиттере с создателем
На аргумент о
В итоге получился вот такой бенчмарк на Stackblitz по замеру времени изменения разных массивов
С одной стороны, ужасно, как
С другой, еще раз стало очевидно, что писать программы на
#optimization #benchmark
FormKit
Justin Schroeder
, который с чего-то призвал отказаться от использования ref
в пользу reactive
На аргумент о
ShallowRef
он привел ShallowReactive
, и стало интересно, как сильно они отличаютсяВ итоге получился вот такой бенчмарк на Stackblitz по замеру времени изменения разных массивов
ShallowRef
не использует JavaScript Proxy
, отсюда такая эффективностьС одной стороны, ужасно, как
Proxy
уронил общую производительность в JS
С другой, еще раз стало очевидно, что писать программы на
Vue
надо с умом. Необходимо полностью контролировать модель и потоки данных. Именно поэтому доверять таким библиотекам, как VueUse
и Tanstack
, это, как минимум, торговать производительностью и архитектурой.#optimization #benchmark
Сперва они советуют всегда для роутов использовать динамичные роуты, потом учат делать префетчинг...
Этот совет из документации
#routing #optimization
Этот совет из документации
Vue Router
- самое глупое что есть в ближайшей Vue
экосистеме.#routing #optimization
// useUserService.ts
function isAuthenticated() {
return !!user.value;
}
// Component A
<script>
const { isAuthenticated } = useUserService();
</script>
<template>
<p v-if="isAuthenticated()">hello</p>
</template>
Функции во
Vue
ведут себя не совсем как функцииВ данном примере функция
isAuthenticated()
ведет себя как computed
и будет вызываться каждый раз, когда user
изменится или компонент А
будет перерисовываться.Происходит это из-за того, что
Vue
определяет все реактивные зависимости внутри тела функции и перерендивает компонент, когда кто-то из них меняется.Таким образом, большой разницы в использовании функции вместо
computed
нет. Но если внутри большая логика, то лучше использовать computed
, потому что он будет пересчитываться только когда его зависимости изменились, а функция - при любом рендеринге#reactivity #tip #optimization
Время от времени можно удалять локальный
#npm #pnpm #optimization
npm
/yarn
/ pnpm
кэш, чтобы освободить место на диске от устаревших версий пакетов.#npm #pnpm #optimization
Датацентры всего мира производят 3.7% мирового CO2 (carbon footprint, углекислый газ)
Каждый показ вашего сайта является причиной выделения CO2 - в среднем 0.8 грамм.
Замерьте карбоновый след вашего сайта
Еще одна причина писать эффективные
#pwa #optimization
Каждый показ вашего сайта является причиной выделения CO2 - в среднем 0.8 грамм.
Замерьте карбоновый след вашего сайта
Еще одна причина писать эффективные
PWA
#pwa #optimization
Website Carbon Calculator
Website Carbon Calculator v3 | What's your site's carbon footprint?
The original website carbon calculator tool, brought to you by Wholegrain Digital,London's original sustainable WordPress agency.