使用 background 顯示圖片
background
本質雖然是定義背景圖片,但也可用來取代 <img>
,讓我們以 CSS 設定圖片。
失くすものさえない今が強くなるチャンスよ
background
本質雖然是定義背景圖片,但也可用來取代 <img>
,讓我們以 CSS 設定圖片。
VAD 亦可搭配 Vue 與 Webpack 使用,唯 VAD 除了 JavaScript 外,還需要其他 WASM 檔案,需在 Webpack 做額外的設定。
Vue 提供了 reactive()
建立 Reactive Object,但卻無法使用 ES6 的 Object Destructure 將其解構,因此另外提出了 toRefs()
彌補此缺憾。
若原本使用 reactive()
建立 Reactive Object,之後因需求不同想根據其 Property 建立 Reactive Reference 並維持其 Reactivity,可使用 toRef()
加以轉換。
由 Vue Router 所定義的 Route,可透過 <RouterLink>
或 push()
切換。
當切換 URL 時,Vue Router 會避免對 Server 發出 Request ,直接由 JavaScript 去 render HTML,在 HTML 5 之前會使用 Hash Mode,現在會使用 HTML 5 Mode。
將 Todo List 以 Vue Router 實現,將更接近實務上的使用。
Vue Router 基於 SPA,相較於傳統 MPA 有些本質上的差異。
若一開始建立專案時沒有選擇 Vue Router,也可以日後手動加入 Vue Router,也可藉此了解 Vue Router 的架構。
由於並不是所有的應用都會使用 Vue Router,因此 Vue 本身並不包含 Vue Router,而是以獨立 Package 形式存在,由 Vite 建立專案時可選擇是否使用 Vue Router。
將 Todo List 以 Component 實現,將更接近實務上的使用。
在 Component Tag 間只能傳送一筆 HTML,若要傳遞多筆 HTML,則要透過 <template>
使用 Named Slot。
對於 JavaScript 的資料,我們可透過 Prop 傳進 Component;但若要將 HTML 傳進 Component,則要使用 Slot。
為了讓 Component 的 Reusability 更高,我們不會將呼叫 API 部分寫在 Component 內,而會將呼叫 API 部分寫在 Component 外部,如此我們必須從 Component 內傳出 Data。
從 Vue 3 開始,Vue 經過多次語法演進,到目前 Vue 3.2 所提供的 Script Setup 後,Vue 的寫法總算穩定下來,改用 defineEmits()
定義 Event,也是目前 Vue 官網範例的正式寫法,但還是有不少網路上範例或書籍用的是 Vue 3 早期寫法,雖然不再建議這樣寫,但還是得看得懂,並藉此了解 Vue 語法的演變軌跡。
由於 Prop 是以 Object 形式呈現,會直覺想用 Object Destructure 將其解構,但這會使得 Prop 喪失 Reactivity,必須透過 toRefs()
再 Destructure。
若希望外部對 Component 不只提供初始值而已,還能繼續與外部 State 連動,則要使用 defineProps()
+ computed()
組合完成。
有時我們只希望外部對 Component 提供初始值,並不需要與外部 State 連動,此時可使用 defineProps()
+ ref()
組合完成。
從 Vue 3 開始,Vue 經過多次語法演進,到目前 Vue 3.2 所提供的 Script Setup 後,Vue 的寫法總算穩定下來,改用 defineProps()
定義 Prop,也是目前 Vue 官網範例的正式寫法,但還是有不少網路上範例或書籍用的是 Vue 3 早期寫法,雖然不再建議這樣寫,但還是得看得懂,並藉此了解 Vue 語法的演變軌跡。
針對一些 HTML Element 的共用 CSS Style,Vue 並不鼓勵使用 Global CSS,而是建議這些 HTML Element 包成 Component,然後各 page 都使用此 Component,此時可在 Component 使用 v-model
,讓使用體驗與原生 HTML Element 無異。
Vue 2 一個 Component 最多只能有一個 v-model
,但 Vue 3 可同時使用多個 v-model
。
defineModel()
為 Vue 3.4 的新 API,針對 Two-way Binding 的 v-model
有更簡單的寫法。
axios.delete()
可簡單呼叫 DELETE REST API。
axios.put()
可簡單呼叫 PUT REST API。
axios.get()
可簡單呼叫 GET REST API。
axios.post()
可簡單呼叫 POST REST API。
使用 Axios 搭配 API 實作 Todo List,並將存取 API 部分重構成 API Function。
Pico CSS 為著名的 Classless CSS,有別於 Tailwind CSS 的 Utility First CSS,他為 Semantic HTML 提供了 Default Style,讓我們在開發時專心於 HTML 與 Vue。
Vue 3 提供 Composition API 後,將以完全不同型態實作 Todo List。
Vue 3 的 Composition API 其實可以使用更 FP Style 實作 Todo List。
除了 watchEffect() 能同時追蹤多個 State 外,事實上 watch()
也能同時追蹤 State。
多個 Select 連動也是實務上常見需求,傳統 jQuery 必須搭配複雜的 Event 與重組 HTML 才能達成,使用 Vue 的 Reactivity API 將可輕鬆達成需求。
Vue 提供了三個 Reactivity API:computed()
、watch()
與 watchEffect()
,三者很類似,但又不完全相同。
watch()
可追蹤特定 State 處理 Side Effect, 若需求是一開始要先執行 Side Effect,或同時追蹤多個 State,則可改用 Vue 3 新的 watchEffect()
。
除了使用 computed()
為特定 State 加工外,Vue 還提供 watch()
可追蹤特定 State 處理 Side Effect,尤其 呼叫 API
就是典型的 Side Effect。
除了使用 computed()
為特定 State 加工外,Vue 還提供 watch()
可追蹤特定 State 處理 Side Effect。
mounted
Hook 為 Vue 已經準備好 HTML 的 DOM Nodes,可以開始處理 HTML 時觸發,可在此 Hooks 初始化 State,如讀取 JSON 檔寫入 State,讀取 API 寫入 State … 等。
了解 Vue 的 Lifecycle 可讓我們更了解 Vue 的運作原理,更可在適當的 Lifecycle Hooks 加入自己的代碼。
v-model
不僅僅只能綁定到 Textbox,也可以綁定到多列 Select,當在 HTML 改變 Select 狀態時,JavaScript 也會連動改變 State。
v-model
不僅僅只能綁定到 Textbox,也可以綁定到單一 Select,當在 HTML 改變 Select 狀態時,JavaScript 也會連動改變 State。