progway — программирование, IT
2.66K subscribers
25 photos
1 video
246 links
Чат: @prog_way_chat

Разборы вопросов и задач с собеседований, мысли, полезные материалы и просто вещи, что мне интересны из мира IT

Полезности и навигация в закрепе

По всем вопросам: @denisputnov
Download Telegram
Список доступных хештегов:

Основные
:
#theory — общая теория программирования, разбор теоретических вопросов с собеседования
#quiz — короткий вопрос на свободную тему в разработке с вариантами ответов
#useful — просто полезные вещи
#blog — посты в формате блога обо мне / на свободную тему

Подгруппы:
#javascript — всё, связанное с языком
#typescript — аналогично 👆
#code — посты во встроенным в текст кодом, готовые примеры
#vite — посты, которые так или иначе затрагивают сборщик
#web — всё, касательно web разработки
#principles — принципы проектирования
#react — всё, касательно React
#patterns — всё о паттернах
#data — всё о данных и манипуляциях с ними
#news — новости

@deprecated
#python — всё, связанное с этим языком
#mobile — мобильная разработка
#design — штучки для дизайна
#github — интересности с гита
#chatbot — мои боты и всё, что с ними связано
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Tree Shaking

Сам по себе Tree Shaking — это метод оптимизации кода, который позволяет автоматически удалять неиспользуемый код при сборке приложения

Основная идея заключается в том, чтобы проанализировать все файлы приложения и используемых библиотек в процессе сборки, и убрать из них всё, что не используется


Работает всё это благодаря статической системе модулей из ES6, которая позволяет точно знать что импортирует и экспортирует каждый файл

До статической системы модулей, определить это точно было невозможно, так как импорты и экспорты могли изменяться в рантайме:


// зависящий от рантайма импорт
var my_lib;
if (Math.random()) {
my_lib = require('foo');
} else {
my_lib = require('bar');
}

// и экспорт
if (Math.random()) {
exports.baz = ···;
}

Код выше абсолютно валиден


ES6 же предложил статическую систему модулей, благодаря чему Tree Shaking и стал в целом возможен

В примере с прикреплённого видоса мы видим, как в конечный бандл из файла math.js попадает только функция multiply. Происходит это как раз потому что sum() не используется в коде нашей программы index.js

Настроить всё очень просто, например, с тем же Vite — он поддерживает Tree Shaking из коробки при сборке в прод режиме ( обычно это vite build )

Однако, стоит помнить, что не весь код и библиотеки поддерживают Tree Shaking. "Шейкаться" будет только тот код, что использует ES6 модули


Проанализировать сборку через Vite можно с помощью плагина rollup-plugin-visualizer — он покажет, какие модули включены в финальную сборку, и сколько они весят

Спасибо за прочтение, это важно для меня

@prog_way_blogчат#web #vite #theory
🔥30👍8🐳41