優化器

為了讓應用程式可以恢復,它需要有很多進入點。例如,點擊按鈕 A 與點擊按鈕 B 是不同的進入點。當我們實作應用程式時,我們通常不會考慮進入點,因此我們通常只有一個進入點或 main() 函式。

優化器的工作原理是尋找以 $ 字元結尾的函式。例如,優化器會將對 component$() 的呼叫轉換為進入點。請注意,函式的名稱並不重要,重要的是它以 $ 結尾。

每次看到 $ 時,您都應該想到這裡有一個延遲載入邊界。這意味著延遲載入的內容可能需要延遲載入,因此無法同步存取。

雖然優化器可以序列化 Qwik 可以序列化的任何資料,但它對閉包有特殊的處理方式。閉包是在其他函式內建立的函式,並且可以擷取詞彙範圍中的變數。序列化閉包的能力是使 Qwik 可恢復的關鍵屬性。如果沒有閉包序列化,就很難擁有可恢復的應用程式。

範例

在此範例中,請注意我們有兩個延遲載入區塊,因為我們的程式碼中有兩個 $

開啟「符號」標籤,並注意優化器如何將 onClick$ 函式轉換為進入點。具體來說,請注意 onClick$ 進入點不會匯入 @builder.io/qwik 模組。

現在將 onClick$ 回呼更改為 store.count++

再次打開「Symbols」標籤,這次您可以注意到 Optimizer 已經導入了 @builder.io/qwik,並插入了 useLexicalScope() 呼叫,以恢復事件處理常式的捕獲狀態。恢復函式的捕獲狀態正是 Qwik 可恢復性的關鍵。

編輯教學