or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Qwik
下個世代的前端框架?
簡報內容皆擷取自官方課程 (免費)
[1] Why Qwik?
主講人認為使用 Qwik 的推力
影響 使用者體驗 (UX) 的因素
影響 開發者體驗 (DX) 的因素
從網頁歷史推測下階段的發展

每階段初期出現新技術來拯救 UX,該技術隨時間更成熟後 DX 提升,但問題也隨網站規模變大而越趨嚴重,接著就會發展新技術來解決問題Note:
static pages (文字&圖片 HTML only) / dynamic pages (SSR 多頁的應用程式) / MPA + JS (js (jquery)) /
RIA (flash) / SPA (AJAX) / hybrid (new SSR + hydration (Next.js & Nuxt.js))
前五十的電商網站的表現
Amazon
世界最大的電商網站
下一階段?
Note: 最後三個階段的尾巴都是因為 app size 太大,導致使用者的等待時間過長才發展成下一個階段。
未來趨勢 1 : App 越來越大
Note: 因為網站功能越來越強,但是 javascript 是單線程的語言,電腦變強對現況的改善並沒有幫助
未來趨勢 2 : edge 技術
讓 app 更接近使用者
Note: 讓使用者可以從更近的節點取得資料,所以未來發展的技術與其相容可以有更好的效果
Note: IWA,qwik 符合了前面提到的幾個特點,重點是每個階段的發生看起來都跟 UX 有很大的關聯
網頁效能影響收益
毫秒的讀取時間即可影響收益
Note: 網站效能則是能提升 UX 的重大因子,從很多的研究報告顯示網站的效能大大的影響收益表現
Core Web Vitals (Google)
reference
Note: Google 發展出了這個東西來讓網站開發者可以作為網頁效能的判斷基準
LCP (Largest Contentful Paint)
渲染內容時間
google: 少於 2.5 秒
解決方案
FID (First Input Delay)
網頁回應使用者行為(點按鈕之類的)的時間
google: 少於 0.1 秒
解決方案
CLS (Cumulative Layout Shift)
網頁內容偏移量
google: 少於 0.1 (偏移量)
解決方案
Note: google 提出的方案都與後面兩點有關,qwik 則針對這兩點來解決
why Qwik?
[2] What is Qwik?
哪些強大的功能?
Note: 從 SPA 講到現在來比較差別
SPA (Single Page Application)
index.html 看起來是空白的
讀取完 js 之後才可以跟網頁互動
Note: 可以注意到,所有的內容不論是需不需要互動的內容都是從 JS 產生
SSR + Hydration
由伺服器用 JSX 來渲染 html 內容
hydration - 讓 html 變成可以互動的狀態
hydration 的問題
Note: hydration 的過程包含請求渲染完成的 html 後下載 JS 並執行,然而每次 route 切換時,需要整個過程重新跑一次,這個過程在桌機可能花費幾秒鐘,但在手機上的時間可能是好幾倍 (replay)
Lazy loading?
Note: lazy loading 可以用來手動解決這個 JS 檔太大的問題
問題點:
(主流框架目前遇到讀取問題而出現 lazy loading 的解決方案,並無法解決 hydration 帶來的問題)
Resumability
(JavaScript Streaming)
目前主流的前端框架都需要做 hydration (replay),
但 qwik 的做法像是串流平台播放影片的方式,只是傳送的資料是 JS 檔案,只針對需要的檔案下載

hydration 的做法因為 html 是一片空白,所以每次都需要重新執行 hydration 才能知道整個應用程式的狀態Note: 對比 hydration 的作法

Qwik 則在 server 執行 JS 來渲染 html 並把所有的資訊 (狀態) 寫在 html,而不需要由 client 端渲染Dynamic tree shaking

把狀態寫在 html 上面能做到讓使用者只會請求他所需要的部分,幾乎可以把請求的數量與大小最小化 (目前主流框架也有 tree shaking 但僅限於 build 階段)Note: 把狀態寫在 html 上面更能根據 html 提供的資訊來判斷哪些 js 是頁面所需要的,而這些狀態其實就是要執行的 js 的 url
請求 JS,速度??

client 端開啟 worker 來把所有現在頁面上可能會執行的 js 預先放到瀏覽器的 cache 裡面
client 端會有一個 loader (大約 1kb) 來依照需求把 cache 的檔案拿來執行[3] DEMO
Note: https://qwik-app-edge-kevinshu1995.vercel.app/ https://qwik-app-kevinshu1995.vercel.app/