Оптимизатор
Философия Qwik заключается в том, чтобы как можно дольше откладывать загрузку кода. Для этого Qwik полагается на оптимизатор, который перестраивает код для ленивой загрузки. Оптимизатор - это преобразование на уровне кода, которое выполняется как часть сборки.
Оптимизатор написан на языке Rust (и доступен как WASM) для мгновенной производительности.
Оптимизатор ищет $ и применяет преобразование, которое извлекает выражение, следующее за $, и превращает его в лениво загружаемый и импортируемый символ.
Для начала рассмотрим простой пример Counter:
export const Counter = component$(() => {
const count = useSignal(0);
return <button onClick$={() => count.value++}>{count.value}</button>;
});Приведённый выше код представляет собой то, как разработчик пишет компонент. Ниже приведены преобразования, которые оптимизатор применяет к коду, чтобы сделать его пригодным для ленивой загрузки.
const Counter = component(qrl('./chunk-a.js', 'Counter_onMount'));export const Counter_onMount = () => {
const count = useSignal(0);
return <button onClick$={qrl('./chunk-b.js', 'Counter_onClick', [count])}>{count.value}</button>;
};const Counter_onClick = () => {
const [count] = useLexicalScope();
return count.value++;
};Обратите внимание, что каждое появление $ приводит к появлению нового лениво загружаемого символа.
Сериализация
См. раздел Сериализация, в котором объясняется, что именно сериализуется.