Lazy-компиляция в Webpack и Parcel
Месяц назад вышел webpack@5.17.0 и в нём появилась lazy-компиляция.
Идея супер простая: при разработке нам редко нужен весь бандл — мы работаем над какой-то конкретной фичей. Так почему бы не бандлить только то, что нужно на старте, а остальное только когда модули действительно нам понадобятся. Базовая имплементация уместилась в 600 строк.
Работает примерно так: клиент (бандл; уточняю, т.к. это работает в том числе и с серверным бандлом) говорит компайлеру (на самом деле отдельному http серверу внутри компиляции), что нужен такой-то
Кстати, почитайте про SSE. Мало кто знает об этой фиче, по сути это как веб-сокеты, но работает только в одностороннем порядке: с сервера на клиент.
Parcel тоже не отстаёт, но в детали реализации я не погружался.
У меня под рукой нет проекта, где можно было бы проверить, но буду рад, если поделитесь впечатлениями!
P.S. Всё ещё работает старый добрый принцип «Make it work. Make it right. Make it fast».
Месяц назад вышел webpack@5.17.0 и в нём появилась lazy-компиляция.
Идея супер простая: при разработке нам редко нужен весь бандл — мы работаем над какой-то конкретной фичей. Так почему бы не бандлить только то, что нужно на старте, а остальное только когда модули действительно нам понадобятся. Базовая имплементация уместилась в 600 строк.
Работает примерно так: клиент (бандл; уточняю, т.к. это работает в том числе и с серверным бандлом) говорит компайлеру (на самом деле отдельному http серверу внутри компиляции), что нужен такой-то
import(…)
; происходит компиляция; через server-sent events отправляются скомпилированные ассеты.Кстати, почитайте про SSE. Мало кто знает об этой фиче, по сути это как веб-сокеты, но работает только в одностороннем порядке: с сервера на клиент.
Parcel тоже не отстаёт, но в детали реализации я не погружался.
У меня под рукой нет проекта, где можно было бы проверить, но буду рад, если поделитесь впечатлениями!
P.S. Всё ещё работает старый добрый принцип «Make it work. Make it right. Make it fast».