5 分鐘帶你搞懂 Vue、Vuex、Vuetify、Nuxt.js 之間的關係

林鼎淵
Dean Lin
Published in
5 min readApr 1, 2021

--

有了框架後做什麼都很方便,但因為太方便導致有時連工具負責哪一塊都功能有點霧颯颯,如果你搞不太懂 Vue、Veux、Vuetify、Nuxt.js 之間的關係、具體各自負責什麼事情的話可以參考這篇文章釐清自己的觀念喔!

Vue.js
過去只有 Javascript、HTML、CSS 時有什麼問題?
框架的優勢
Vuex
Vue過去傳值時面臨什麼問題?
如何解決這個問題?
Vuetify
提供前端工程師豐富的 MD component
強大的社群支持並穩定更新
自由決定導入 component
Nuxt.js
Vue.js 的應用框架
SSR 伺服器端渲染

Vue.js

一個優秀的 Javascript 框架

➤ 過去只有 Javascript、HTML、CSS 時有什麼問題?

  • 難以維護:專案結構龐大時 Javascript、HTML、CSS 維護難度會成幾何式上升,各式各樣的邏輯都集中在 Javascript 裡面導致程式可讀性極低
  • 效能低落:如果 Javascript 頻繁操作 DOM 元素時會不斷觸發 Reflow & Repaint 的流程,頁面重複渲染的過程會消耗大量效能

➤ 框架的優勢

  • 資料與 UI 分離:過去 Javascript 要動態的去更新 DOM 來塞入資料,但框架透過資料雙向綁定,工程師可以專注處理資料的邏輯面
  • 模組化的 UI:一個網站會有許多重複出現的元素(按鈕、表單、表格…),在框架中可以這些常用的元素設計成 component,要使用時再根據實際需求填入資料及參數即可,大幅提升工程師理解與維護的能力。
  • 更好的效能:採取 Virtual DOM 概念,當資料變動時先計算好要變動的地方,以此抵銷無意義的變更,並且重複使用已存在的 DOM 元素

Vuex

➤ Vue過去傳值時面臨什麼問題?

過去 Vue 裡面 component 的參數傳遞都是採用 emitprops ,但如果 component 的關係並非 parent/child 而是像下圖想要將 Component B 的資訊傳到 Component C ,這種操作不但需要很多 emitprops 還會造成程式碼閱讀困難

➤ 如何解決這個問題?

根據上面的問題,官方推出專門用來『狀態管理』的工具,你可以把它想像成 Vue 裡面的全域變數,將狀態(state)全部放在倉庫(store)來進行管理。

更新 state:在 Vuex 裡面,儲存狀態的為 State,component 需要更動 State 時,需要透過 Actions 發出一個 Commit 去呼叫 Mutations,再由 Mutations 去更改 State

取得 state:而 component 的資料更新可以在 compute 裡面使用 mapGetters 使用 getters 的 function 或是用 mapState 直接取用 state 的資料

Vuetify

➤ 提供前端工程師豐富的 MD component

你可以把 Vuetify 當成 Vue 的 Material Design framework,他不但省去了你自己手工打造 UI component 的時間,還為每個 component 提供許多可以自由定義的 property 讓版型更加靈活。

➤ 強大的社群支持並穩定更新

截至今天在 Github 上有高達 30K 的星星,如果你在開發上遇到問題在他們 discord社區上發問也能很快得到解答。

官方每個禮拜都會穩定更新版本,相比於其他 Vue 的 framework 是非常穩定的

image from:https://vuetifyjs.com/en/introduction/why-vuetify/#why-vuetify3f

➤ 自由決定導入 component

官方稱為 Auto treeshaking,在使用 Vuetify 時你可能覺得他非常『肥』,裡面包了一堆你專案中用不到 component,但因為有 Auto treeshaking 的機制所以只會導入你有使用的 component

Nuxt.js

➤ Vue.js 的應用框架

把 webpack、vue loader、vuex、router 的設定都集中在一起,減少使用者的配置成本

➤ SSR 伺服器端渲染

因為由 server 端組成 HTML 後回傳,所以 Google 在 SEO 解析時可以很好的分析 DOM 元素,藉此提升網站的 SEO 水平

Nuxt.js 也是能做 SPA(無SSR)、產生靜態網頁

▶︎ 如果這篇文章有幫助到你1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻
你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼▶︎ 如果你對工程師的職涯感到迷茫1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯

--

--

林鼎淵
Dean Lin

職涯中培育過多名工程師,🧰 目前在外商公司擔任 Software Specialist |✍️ 我專注寫 (1)最新技術 (2)團隊合作 (3)工程師職涯的文章,出版過 5 本專業書籍|👏🏻 如果對這些主題感興趣,歡迎點擊「Follow」來關注我~