點燈坊

失くすものさえない今が強くなるチャンスよ

タグ : Vue

Vuex 使用 Functional API

傳統 Vuex 都以 this 使用,這使得 Extract Function 時還必須將 Vue Instance 傳進 Function,事實上 Vuex 也能不使用 this,直接 Import Store 使用,甚至更近一步 Point-free。

Vue Router 使用 Functional API

傳統 Vue Router 都以 this 使用,這使得 Extract Function 時還必須將 Vue Instance 傳進 Function,事實上 Vue Router 也能不使用 this,直接 Import Router 使用,甚至更進一步 Point-free。

使 Prop 也能 Reactive

若 Prop 只用來對 Component 傳入初始值設定,只要在 mounted hook 接受並寫入 data 即可;但若日後還會將改變 Data 傳入 Prop,且希望 Component 能 Reactive 根據 Prop 改變,則要搭配 Computed 或 Watch。

Vue 之 v-for 搭配 Object

當使用 v-for 顯示重複資料時,直覺都會想到 Array,事實上 ECMAScript 的 Object 也是一種 Container,而 v-for 也支援 Object,在有些情境使用 Object 會比 Array 方便。

Vue 之 Self Event Modifier

DOM Event 天生具有 Event Propagation 特性,且是由內向外觸發 Event,若想只有特定 Element 不接受 Event Propagation 所傳出 Event,可使用 self Event Modifier。

Vue 之 Capture Event Modifier

DOM Event 天生具有 Event Propagation 特性,且是由內向外觸發 Event,若想由外向內觸發,則稱為 Event Capturing,Vue 提供了 capture Event Modifier,讓我們在 HTML Template 就能以 Declarative 形式使 Event 往內層傳遞。

Vue 之 Stop Event Modifier

DOM Event 天生具有 Event Propagation 特性,Vue 提供了 stop Event Modifier,讓我們在 HTML Template 就能以 Declarative 形式阻止 Event 往外層傳遞。

在本機以 HTTPS 測試 Vue

如詢問是否開啟 Camera 只有在 HTTPS 才會發生,因此在本機開啟 HTTPS 模式成為開發測試所必須,Vue CLI 並沒有內建 HTTPS,需另外加已設定。

如何對其他 Page 傳遞多值 ?

傳統對其他 Page 傳遞資料時,會以 Query String 形式,除了會暴露資料遭 Hacker 嘗試破解外,也不適合傳遞太多資料,若能將這些資料整合成 Object 傳遞,且不必出現在 URL,那就非常完美。

Component 基礎概念

Component 概念為 React 所發明,讓我們可以將 HTML、CSS 與 JavaScript 封裝成 Component,Vue、Angular 也使用 Component ,至此 3 大 Framework 都採用 Component-based 架構。

Vue 之 Event

Vue Component 的 Prop,只能解決資料由外層 Component 傳給內層 Component,若要將資料從內層 Component 傳到外層 Component 呢 ? 此時就要使用 Event。

使用 TailwindCSS 處理 Global CSS

雖然在 Vue 儘量在 Component 內使用 Scoped CSS 避免 CSS 互相影響,但若各 Component 都套用,還是無法避免使用 Global CSS,原本 Vue 有多種方式使用 Global CSS,若使用 TailwindCSS 則有不同方式。

Vue 之 Prop

Component 若只有一層,那問題不大,若牽涉到 Component 包含 Component,就會牽涉到一個基本問題:該如何將 Model 由外層 Component 傳給內層 Component ? 此時就要使用 Prop。

SweetAlert2 之 Error Handling

一般來說呼叫 API 的 Asynchronous 才會遇到 Promise,也才需要 Error Handling,但 SweetAlert2 按下 Confirm 時回傳 Fulfilled Promise,按下 Cancel 時回傳 Rejected Promise,此時會進入處理 API 的 Error Handling,這該如何解決呢 ?

如何對 API 回傳資料加上 Cache ?

若 API 每次傳入的 Query String 相同,所回傳的結果也相同,對於這類 API 可以加上 Cache,當參數相同時,就不再發起 API Request,如此不但節省後端資源,使用者體驗更佳。事實上 ECMAScript 的 Closure + IIFE 就能實作出 Cache,並不需要依賴其他 Library。

如何管理 JWT Token ?

管理 JWT Token 是前端不可避免的課題,若只透過 Vuex 或 Local Storage 都有其缺憾,唯有同時結合 Vuex 與 Local Storage 才是最完美方案。