## 第一章問題 ### 1. 什麼是 漸進式 JavaScript 框架 (The Progressive JavaScript Framework)? 就是你想要用哪部分都可以自行決定。有點像是你買一個可拆式工具箱,可以依照自己的需求選擇工具。 ### 2. 什麼是 MVVM 模式? 這個模式可以允許只需處理資料內容,畫面就會即時更動。 ### 3. 什麼是元件(component)系統? 元件系統是一個前端網頁模組化的方式,它允許每個元件有自己的scope,以及方法,使網頁個元件大的例如像 header, footer 至小的到任何一個可覆用的元件有了重複利用的機會,也讓團隊開發有了更好的切入方式。 ### 4. vue2, vue3 有哪些的差異? 引自文章: 1. 引進了 "Fragment" 特性,不再限制元件必須只能是單一根節點 2. 狀態的響應式偵測由 Object.defineProperty 改為 Proxy API,執行時的效能更好,也解決了過去 Vue 2.x 在物件、陣列更新偵測的問題 3. 模板編譯:靜態節點優化,新的 Virtual DOM 更新時只需要遍歷動態的節點,更新時與實際 DOM 數量脫鉤,減少不必要的效能浪費 4. 內建新增 "Teleport"、"Suspense" 等功能型元件,擴充了更多可能性 5. 新的 Composition API 提供了另一種對程式碼、邏輯甚至是狀態的共用管理方式,擺脫過去 mixins 的混亂 6. 新增 setup、ref 等語法糖,開發時的體驗更好 ### 用 vue3 寫一個 hello world 需要那些程式碼? const { createApp, ref } = Vue; const vm = createApp({ setup () { const message = ref('Hello Vue 3.0!'); return { message } } }); vm.mount('#app'); ### computed/methods 差別在哪? methods 是方法,而 computed 是由各個data經由一個自訂的算法而得出的一個新的屬性 ### html 中 v- 開頭的屬性有什麼用途? 請舉例? 最常用的 v-bind (:) => 可直接於 template 中使用 vm 內的屬性 ex: 例如傳入 sub component 的 props v-model => v-bind & @input 的語法糖 ex: 表單 v-on (@) => 事件定義 ex: 按鈕 v-for => 可利用陣列渲染不定長度的頁面 ex: 表格 tr & td 等等 ### 怎麼實作一個按鈕(button)事件? <template> <div> <button @click="() => {}">btn</button> </div> </template> ### 請舉例一個 v-for 的用途? 一個很常見的案例為 mounted 時,先去後端 DB 撈不固定長度的資料,才因此需要 v-for 來幫助渲染,常常用來條列資料庫內的東西 ### 請用自己的話解釋 vue 元件的 生命週期 (life cycle) 與更新機制? beforeCreate: 只有 vm,還沒有數據代理 created: 可以獲得 data & method beforeMount: 還在解析模板,這時候對 DOM 的操作都不奏效 mounted: 前置工作均已完成,可以開始初始化及送 http request beforeUpdate: 頁面是舊的,數據是新的 updated: 都是新的 beforeUnmount: 可以做取消計時器、解除事件 ## Vue.js 筆記與心得報告 ### 前記 我擁有 7 年的網頁前端設計經驗,曾接觸過的框架有 React、Vue、Jquery,其中包含網頁模組化、打包部屬、專案管理等等的範疇,而我目前所在職公司內部也是使用 Vue.js 做開發,我認為我擁有足夠的經驗,和大家分享 Vue.js 的使用心得,以及看完這篇文章所帶給我的感受。 ### 1-1 ~ 1-2 React、Vue 兩者都是一個基於為 MVC 的架構開發,其文章內部也有提及。我認為使用前端框架的思維跟以往撰寫其他領域的程式非常不同,其思考的方向應為**資料導向**,程式內部無需做太多的 control,作為 Vue 的開發者,我認為只要定義好資料與視圖呈現的規則就好,訂定好規則,Vue就會自動地根據所讀入的資料,做頁面的刷新、渲染。而我認為這兩個框架最大的區別,是對於模組封裝的嚴謹程度。React 完整的呈現了物件導向的撰寫思維(雖然現在大多已轉向為 Function Component),然而在 Vue 中,可以很輕易的,直接獲取到 vm 實體內部的 data (應該說,那些 data 早已經由 Vue constructor的呼叫,直接變為該實體的公有變數),這只是其中一環,雖然不嚴謹,但另一面是他的方便性,因此,我認為 Vue 的開發較 React 簡單,但是,卻沒有了物件導向的sense。 ### 1-3 ~ 1-6 這篇文章 3 到 6 章,介紹了基本的 Vue 撰寫方式。文章一開始,介紹了computed,進一步帶出了 getter & setter 的概念,這個概念便是 Vue 做數據代理的基本原理 ( 這裡指的不是 computed 裡的 setter ),藉由 setter 的設定,Vue 就有了監聽資料變化的能力。再來,這篇文章利用事件處理、條件渲染,進一步的說明了基本指令的用法,我認為非常淺顯易懂。 ### 1-7 我認為這篇文章在生命週期的部分沒有說明這麼詳細,對於每個生命周期的期間,Vue 分別完成了哪些事情,以及對於其所造成的結果、開發人員在各個時候能做的事情,有部分並沒有詳細的說明。例如在Update的部分,我不清楚在 beforeUpdated 時,數據、頁面的狀況是新是舊?created 和 beforeMounted 中間,做了什麼事情?這部分是我認為可以補充說明的部分。 ### 後記 我認為整體來說,這篇文章寫得很詳細,跟其他論壇的文章比起來,確實進階了一些,有些眉角作者也都有提點出來,我覺得如果是一名想要學習 Vue 的人,這本書非常值得入手。