Production сборка является критическим этапом при разработке приложений на Preact, так как она напрямую влияет на производительность, размер бандла и стабильность работы приложения в браузере. Preact, благодаря своей легковесной архитектуре, предоставляет возможности для оптимизации кода и минимизации избыточных зависимостей.
Одной из ключевых особенностей production сборки является минификация. Этот процесс выполняется при помощи инструментов сборки, таких как Webpack, Vite или Rollup, и включает следующие этапы:
Для Preact рекомендуется использовать preact/compat
совместно с @babel/preset-env для преобразования кода в
максимально оптимизированный вид.
Preact использует JSX-трансформацию, которая отличается компактностью и высокой скоростью выполнения. В production сборке:
h() функции
Preact.Для этого важно включить
@babel/plugin-transform-react-jsx с настройкой
pragma: 'h' и pragmaFrag: 'Fragment'.
Для крупных приложений Preact поддерживает динамический импорт модулей, что позволяет разбивать бандл на части и загружать их только при необходимости:
import { lazy, Suspense } from 'preact/compat';
const HeavyComponent = lazy(() => import('./HeavyComponent'));
function App() {
return (
<Suspense fallback={<div>Загрузка...</div>}>
<HeavyComponent />
</Suspense>
);
}
lazy откладывает загрузку компонентов до момента их
использования.Suspense обеспечивает отображение заглушки до полной
загрузки компонента.В production сборке важно минимизировать размер статических файлов:
preload и prefetch для
критичных ресурсов повышает производительность.Для быстрой настройки production сборки Preact предоставляет Preact CLI:
preact build
index.html с ссылками на
минимизированные скрипты и стили.При использовании Vite:
vite build
esbuild для минификации кода,
что значительно ускоряет процесс по сравнению с классическим
UglifyJS.rollup-plugin-visualizer) и удаления неиспользуемого
CSS.preact/compat (memo)
уменьшает повторные вычисления и повышает производительность.import { memo } from 'preact/compat';
const ExpensiveComponent = memo(function ExpensiveComponent({ data }) {
return <div>{data}</div>;
});
Даже в production сборке рекомендуется сохранять source maps, но хранить их отдельно, чтобы не раскрывать исходный код пользователям:
sourceMap: true в Webpack или Vite позволяет связывать
минимизированный код с исходным.Production сборка Preact ориентирована на максимальную компактность кода, высокую скорость загрузки и минимальное использование ресурсов браузера, что делает фреймворк эффективным инструментом для создания быстрых и лёгких веб-приложений.