Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
從輕前端視角進入 Vue 3.0 的世界 Vue.js Taiwan / Kuro Hsu
Slide 2
Slide 2 text
自我介紹 • Kuro Hsu • 前端開發者 • Vue.js Taiwan 社群管理員 • https://kuro.tw • Kurotanshi [at] gmail.com
Slide 3
Slide 3 text
社群宣傳 – vue.tw
Slide 4
Slide 4 text
統計一下,現場有多少人寫過 jQuery ?
Slide 5
Slide 5 text
現場又有多少人寫過 Vue / Angular / React ?
Slide 6
Slide 6 text
所謂前端開發…
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
從入門到入土
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
還好,可以從輕前端開始 !
Slide 12
Slide 12 text
Vue.js 簡介
Slide 13
Slide 13 text
Vue.js • 音同「 View 」 • 輕量的 JS 漸進式框架,也能與其他前端框架與函式庫並存共用。 • 以操作物件模型為基礎的開發模式 • 直接描述 狀態 與 DOM 的對應關係 • 改變的是資料,而不是直接操作 DOM
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
Vue.js 3.0
Slide 16
Slide 16 text
漸進式框架
Slide 17
Slide 17 text
安裝與起步
Slide 18
Slide 18 text
安裝與起步
Slide 19
Slide 19 text
Vue.js 的核心 - MVVM
Slide 20
Slide 20 text
指令式渲染 vs 聲明式渲染 https://jsfiddle.net/kurotanshi/n8tc5fk1/
Slide 21
Slide 21 text
建立 Vue 實體物件
Slide 22
Slide 22 text
定義映射至網頁/UI的狀態 (內容)
Slide 23
Slide 23 text
建立 template 模板屬性
Slide 24
Slide 24 text
將元件掛載至網頁上
Slide 25
Slide 25 text
也可直接將 HTML 作為模板
Slide 26
Slide 26 text
指令 ( directive ) • 指令是一種特殊的屬性,通常以 「v-xx」的形式存在。 • Vue 內建提供了多種指令,開發者可以利用這些指令來操作網頁。
Slide 27
Slide 27 text
v-text / v-html 內容渲染
Slide 28
Slide 28 text
v-model 與表單元素雙向綁定
Slide 29
Slide 29 text
v-bind 屬性綁定
Slide 30
Slide 30 text
v-on 事件綁定
Slide 31
Slide 31 text
v-if 條件渲染
Slide 32
Slide 32 text
v-show 條件渲染
Slide 33
Slide 33 text
v-for 迭代渲染
Slide 34
Slide 34 text
Vue 元件生命週期 hook function
Slide 35
Slide 35 text
Vue 元件生命週期
Slide 36
Slide 36 text
Vue 實體物件基本屬性
Slide 37
Slide 37 text
Vue.js 組件系統
Slide 38
Slide 38 text
Component system UI 結構 組件樹
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
組件的註冊
Slide 41
Slide 41 text
父子組件狀態的傳遞
Slide 42
Slide 42 text
透過 props 傳遞資料給子層
Slide 43
Slide 43 text
透過 emit 發送事件至父層
Slide 44
Slide 44 text
透過 slot 傳遞 DOM 模板給子組件
Slide 45
Slide 45 text
Vue.js 3.0 新特性
Slide 46
Slide 46 text
App.vue UserProfile.vue (setup style) UserProfile.vue (options style)
Slide 47
Slide 47 text
組件加上 v-model 雙向綁定父子資料
Slide 48
Slide 48 text
模板編譯:靜態節點優化 https://bit.ly/3cpwGOt
Slide 49
Slide 49 text
模板編譯:靜態節點優化 • 模板內容改由動態指令 ( v-if / v-for / slot) 來切分為獨立的區塊 • 每個動態的節點內容、位置是固定的 • Virtual DOM 更新時只需要遍歷動態的節點, 更新效率與實際 DOM 數量脫鉤,減少不必要的效能浪費 • 與 Vue 2.x 效能相比 可提升 2-5 倍
Slide 50
Slide 50 text
Vue 2.x 的更新偵測
Slide 51
Slide 51 text
Vue 3.x with Proxy API Object Proxy get (target, key) { return .... } set (target, key, value) { return .... } console.log(proxy.name) proxy.name = “Kuro”
Slide 52
Slide 52 text
Vue 2.x Data
Slide 53
Slide 53 text
Vue 3.0 Data
Slide 54
Slide 54 text
效能的比較 https://kuro.tw/vue-functional-demo/index.html
Slide 55
Slide 55 text
Compositions API • 並非為了取代原有的 Options style • 為了解決大型應用的痛點 (狀態、邏輯管理、複用) • 模板的資料來源明確 • 沒有 「this」 • 易於切分管理,開發彈性大、效能更佳
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
還想看更多? https://book.vue.tw
Slide 60
Slide 60 text
結語
Slide 61
Slide 61 text
選擇 Vue 2.x 或 3.x ? • 建議學新不學舊 • Vue 2.x 與 3.x 有九成以上語法相容 • 需要考量的點: • IE 不能動,還有什麼值得我心痛 • 目前使用的 plugin 尚未支援 Vue 3.x
Slide 62
Slide 62 text
別擔心,至少還有 Vue.js 2.7 • 預計將於 2021 Q1 推出 • 預計是 Vue 2.x 分支最後一個版本 • 有 18 個月的 LTS • 移植部分可相容 Vue 3.0 的 API 至 2.7 版本
Slide 63
Slide 63 text
更多… • 輕前端很好,但是 善用前端開發工具你可以獲得更多 • ES Module 的 import / export 組織功能更有效率 • Vue SFC (單一組件檔) 讓你的檔案更好管理 • 打包編譯時的 tree shaking 能讓檔案更小,執行效能更好 • Vue-CLI 命令列腳手架、各種方便的語法糖
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
Thanks for joining! Ask questions on Twitter using #dotNETConf
Slide 66
Slide 66 text
特別感謝