EP58 - 使用Vue的方法

更新於 2024/11/04閱讀時間約 6 分鐘
Ways of Using Vue,接下來七篇是官網的Extra Topoics
看完這七篇就會暫停更新摟~
接下來就是實作摟~

我們相信網頁開發沒有「一刀切」的解決方案。因此,Vue 被設計成靈活且可逐步採用的框架。根據您的使用情境,Vue 可以以不同的方式使用,以達到技術棧複雜度、開發者體驗和最終性能之間的最佳平衡。

獨立腳本 - Standalone Script

Vue 可以作為獨立的腳本文件使用,不需要構建步驟!如果您已有後端框架來渲染大部分 HTML,或者您的前端邏輯並不複雜到需要構建步驟,那麼這是將 Vue 集成到您的技術棧中最簡單的方法。在這種情況下,您可以將 Vue 視為更具宣告性替代 jQuery 的工具。

此外,Vue 還提供了一個名為 petite-vue 的替代發行版本,專門針對漸進式增強現有 HTML 進行了優化。它的功能集較少,但非常輕量,並使用了在無構建步驟場景中更高效的實現方式。

嵌入式 Web 組件 - Embedded Web Component

您可以使用 Vue 構建標準的 Web 組件,這些組件可以嵌入到任何 HTML 頁面中,無論它們如何渲染。這個選項允許您以完全與消費者無關的方式利用 Vue:生成的 Web 組件可以嵌入到舊版應用程序、靜態 HTML,甚至是使用其他框架構建的應用程序中。

單頁應用程式 (SPA) - Single-Page Application (SPA)

有些應用程式需要豐富的互動性、深層次的會話深度,以及在前端處理複雜的有狀態邏輯。構建此類應用程式的最佳方法是使用一種架構,讓 Vue 不僅控制整個頁面,還能處理資料更新和導航,而不需要重新載入頁面。這種應用程式通常稱為單頁應用程式 (SPA)。

Vue 提供了核心庫和全面的工具支援,以驚人的開發者體驗來構建現代 SPA,包括:

  • 客戶端路由
  • 極速的構建工具鏈
  • IDE 支援
  • 瀏覽器開發工具
  • TypeScript 整合
  • 測試工具

SPA 通常需要後端提供 API 端點,但您也可以將 Vue 與 Inertia.js 這類解決方案搭配使用,既獲得 SPA 的好處,又保留伺服器中心的開發模式。

全端 / 伺服器端渲染 (SSR) - Fullstack / SSR

純客戶端的 SPA 在應用程式對 SEO 和內容展示時間敏感時會出現問題。這是因為瀏覽器接收到的 HTML 頁面大多是空的,必須等到 JavaScript 加載完成後才能渲染內容。

Vue 提供了優質的 API 來將 Vue 應用程式「渲染」成伺服器上的 HTML 字串。這使伺服器能夠返回已經渲染好的 HTML,讓終端用戶在 JavaScript 下載期間能立即看到內容。之後,Vue 會在客戶端「水合」應用程式,使其具有互動性。這稱為伺服器端渲染 (SSR),它大大改進了如最大內容繪製 (LCP) 等核心網頁性能指標。

基於這種範式之上的更高級的 Vue 框架,如 Nuxt,允許您使用 Vue 和 JavaScript 開發全端應用程式。

JAMStack / 靜態網站生成 (SSG) - JAMStack / SSG

如果所需數據是靜態的,那麼伺服器端渲染可以提前完成。這意味著我們可以將整個應用程式預渲染為 HTML,並作為靜態文件提供服務。這改善了網站性能並簡化了部署,因為我們不再需要在每個請求時動態渲染頁面。Vue 仍然可以為這類應用程式注入豐富的互動性。這種技術通常被稱為靜態網站生成 (SSG),也被稱為 JAMStack

SSG 有兩種形式:單頁和多頁。兩種形式都將網站預渲染為靜態 HTML,其區別在於:

  • 在初次加載頁面後,單頁 SSG 將頁面「水合」為 SPA。這需要更多的前端 JS 負載和水合成本,但隨後的導航會更快,因為它只需部分更新頁面內容,而不是重新加載整個頁面。
  • 多頁 SSG 在每次導航時加載一個新頁面。其優點是可以輸送最少的 JS —— 或者如果頁面不需要互動,甚至可以不使用 JS!一些多頁 SSG 框架如 Astro 還支持「部分水合」,這允許你使用 Vue 組件在靜態 HTML 內創建互動「島嶼」。

如果你期望非平凡的互動性、深度會話時間或跨導航的持久化元素 / 狀態,單頁 SSG 更適合。否則,多頁 SSG 是更好的選擇。

Vue 團隊還維護了一個靜態網站生成器 VitePress,目前你正在閱讀的網站就是由 VitePress 驅動的!VitePress 支持兩種形式的 SSG。Nuxt 也支持 SSG。你甚至可以在同一個 Nuxt 應用中為不同路由混合使用 SSR 和 SSG。

超越網頁應用​ - Beyond the Web

雖然 Vue 主要是為構建網頁應用設計的,但它絕不限於僅在瀏覽器中使用。你可以:

這篇還是蠻觀念的~慢慢熟悉這些觀念吧
avatar-img
2會員
71內容數
分享生活趣事~
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
卡關的人生 的其他內容
項目 API 涉及整體應用的全局屬性及配置,通常透過 TypeScript 的模組擴充來增強全局屬性,如 app.config.globalProperties。
在使用 Vue 組件 API 和 TypeScript 的開發中,通常會遇到類型錯誤和需要 debug 的情況。組件 API 下的 TypeScript 提供了更強的型別檢查和類型推斷功能,這有助於減少錯誤。
使用 TypeScript 開發 Vue 的好處包括:靜態類型檢查可減少運行時錯誤,提升代碼重構的安全性。TypeScript 提供更好的開發體驗,因為 IDE 支持類型自動完成功能。
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
網站可及性(a11y)是指創建任何人都能使用的網站,無論是殘障人士、網速緩慢的用戶、使用過時或損壞硬體的人,還是處於不利環境中的人。例如,為視頻添加字幕能幫助聾人和聽力受損者,也能幫助處於嘈雜環境中的人。設計考慮應包括色彩對比、字體選擇、文本大小和語言。
頁面加載性能可透過PageSpeed Insights、WebPageTest等工具測量,而更新性能則需使用Chrome DevTools、Vue DevTools等進行分析。提升頁面加載性能的技術包括選擇合適架構(SSR或SSG)、(tree-shaking)、(code splitting)等。
項目 API 涉及整體應用的全局屬性及配置,通常透過 TypeScript 的模組擴充來增強全局屬性,如 app.config.globalProperties。
在使用 Vue 組件 API 和 TypeScript 的開發中,通常會遇到類型錯誤和需要 debug 的情況。組件 API 下的 TypeScript 提供了更強的型別檢查和類型推斷功能,這有助於減少錯誤。
使用 TypeScript 開發 Vue 的好處包括:靜態類型檢查可減少運行時錯誤,提升代碼重構的安全性。TypeScript 提供更好的開發體驗,因為 IDE 支持類型自動完成功能。
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
網站可及性(a11y)是指創建任何人都能使用的網站,無論是殘障人士、網速緩慢的用戶、使用過時或損壞硬體的人,還是處於不利環境中的人。例如,為視頻添加字幕能幫助聾人和聽力受損者,也能幫助處於嘈雜環境中的人。設計考慮應包括色彩對比、字體選擇、文本大小和語言。
頁面加載性能可透過PageSpeed Insights、WebPageTest等工具測量,而更新性能則需使用Chrome DevTools、Vue DevTools等進行分析。提升頁面加載性能的技術包括選擇合適架構(SSR或SSG)、(tree-shaking)、(code splitting)等。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如何在 Vite 專案中安裝和設置 TypeScript 及路徑別名的步驟,包括安裝必要的依賴、配置 vite.config.js、tsconfig.json 的設置,及如何創建類型聲明文件來正確識別 .vue 文件。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
Quasar Dialog 的 Invoking custom component 很好用,但是有些困擾的地方,一起來看看有甚麼辦法吧。
Thumbnail
切換頁面卡卡有很多種原因,這裡舉的例子只針對元件太大的情境。 除了想辦法拆分外,還有一個方法就是利用 Vue 的 Async Component。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
我們在實作中,難免會遇到在不同組件中,卻有需求相同的資料格式,因此 mixins 可以達到我們的需求,除了 data 以外也包含了 methods 可以共用,舉例來說,學生資料可能會在,班級跟社團內被使用,當我們要撰寫元件時,就可以省略多餘的 data 定義。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如何在 Vite 專案中安裝和設置 TypeScript 及路徑別名的步驟,包括安裝必要的依賴、配置 vite.config.js、tsconfig.json 的設置,及如何創建類型聲明文件來正確識別 .vue 文件。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
Quasar Dialog 的 Invoking custom component 很好用,但是有些困擾的地方,一起來看看有甚麼辦法吧。
Thumbnail
切換頁面卡卡有很多種原因,這裡舉的例子只針對元件太大的情境。 除了想辦法拆分外,還有一個方法就是利用 Vue 的 Async Component。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
我們在實作中,難免會遇到在不同組件中,卻有需求相同的資料格式,因此 mixins 可以達到我們的需求,除了 data 以外也包含了 methods 可以共用,舉例來說,學生資料可能會在,班級跟社團內被使用,當我們要撰寫元件時,就可以省略多餘的 data 定義。