iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Modern Web

Svelte 的奇妙冒險系列 第 15

[Svelte 的奇妙冒險] Day 15 - SvelteKit 介紹

  • 分享至 

  • xImage
  •  

為什麼我們需要 SvelteKit?

先說回 SPA

在 SPA 流行之前,前端主要是出現在 MPA (Multi Page App)裡的 template 的地方。這代表著當使用者進入一個頁面時,所有的資料和畫面基本上已經在 server side 就確定,並跟著頁面一同傳送過來。若使用者想要得到不同的資料,就必須到另一個頁面並且整個畫面會需要刷新。

事後補充一下,其實我想指的是「後端MVC」框架中的 V ,但其實這樣講也不太精確就是了畢竟 MVC 跟 SPA 也不是互斥的概念。

隨著 AJAX 技術的出現,前端可以透過動態請求來從後端取得資料,實現了前後端分離架構,也造就了 SPA 的興起。在 SPA 中,應用程式只需要載入一次,接下來的互動全部在頁面內進行,避免了頁面需要一直全部刷新,進而提高了使用者體驗。

SPA 的問題

如果讀者曾經接觸過對 SEO 分數或者載入速度有所要求的產品,應該能體會 SPA 的一些問題。

由於 SPA 的大部分資料都是等到 JavaScript 載入後才開始動作,理論上 SPA 的 HTML 文件在初次載入時幾乎沒有任何內容,這樣直到 JavaScript 渲染完成後畫面才會真正顯示出來,導致搜索引擎無法有效地對頁面進行 index。

雖然一些搜尋引擎說它們可以解析 JavaScript,但實際效果並不理想。

也因為 SPA 必須在初次渲染時載入大量的 JavaScript 檔案,進而導致 bundle size 較大,也就影響初次載入速度和頁面渲染時間。種種原因使得 SPA 很難在 SEO 優化方面獲得高分數。

SSR (Server-side Rendering)

為了解決 SPA 的一些缺點,SSR 可以讓使用者在發出請求後即時獲取完整 HTML 。當使用者進入網站時,伺服器會在後端產生 HTML並將其傳遞給前端,這樣使用者可以立即看到完整的畫面。與傳統的 MVC 模型不同的是,SSR 的頁面在加載後仍然可以使用 CSR(Client-side Rendering)來進行互動,這提供了更好的使用者體驗。

SSG (Static Site Generation)

SSG 則是讓開發者在 build time 生成靜態 HTML 文件,這些文件可以在使用進入網站時直接獲得,使用者不需要每次都跟伺服器發出動態請求。可以讓網站擁有較好的性能,因為所有的內容已經事先準備好,無需等待後端生成頁面。

那 SvelteKit 是什麼?

SvelteKit 是一個基於 Svelte 的全端框架可以把它想成 Next.js 之於 React 的關係,它同時支援 SSR 以及 SSG 這兩種方案,也內建了方便的 routing、data load 機制以及 API endpoint,讓我們可以非常方便且靈活地開發產品。


參考資料


上一篇
[Svelte 的奇妙冒險] Day 14 - TanStack Query
下一篇
[Svelte 的奇妙冒險] Day 16 - SvelteKit 中的路由
系列文
Svelte 的奇妙冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言