Vue3快速入門教程
學某個新技能時,大多數人傾向於一開始就從頭到尾完整學一遍, 甚至有人來來去去學了很多遍想達到熟記於心的目的, 我個人認為這沒太大必要.
我的建議的是:面向需求
or面向問題
來學習. 最開始你想實現什麼效果你可能暫時不太瞭解會涉及到哪些知識點, 那麼先列出你的PRD吧, 就像產品經理那樣, 下一步才是根據PRD尋找解決方法, 完成你的作品, 最後你會發現, 你已經通過這些"點"逐步形成"面", 學Vue達到了事半功倍的效果~
---------本次我們就用這種方式一起來看看Vue3
目錄
PRD-01:我想做一個類似廣告螢幕一樣的東西, 支援動態修改, 以便我可以隨時控制它的內容
Data Property模板, 俗稱: 變數模板
- 第一種: 在<>內的,屬於HTML attribute
- 第二種: 普通的Mustache語法 : 雙大括號-> {{number}} 的文字
1.模板實際演練: 每秒改變1次msg
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>學學Vue的動態模板01</title>
</head>
<body>
<div id="app">
<span>Message: {{ msg }}</span>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
Vue.createApp({
data() {
return {msg: 0}
},
methods: {
add() {
this.msg++;
console.log(this.msg);
}
},
mounted() {
//在生命週期走完mounted之後, 開始執行: 每秒重新整理一次msg值
setInterval(this.add, 1000);
}
}).mount('#app')
</script>
</body>
</html>
msg
有2種訪問方式, 同樣用定時器例子來說明:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>學學Vue的動態模板02</title>
</head>
<body>
<div id="app">
<span>Message: {{ msg }}</span>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
const app = Vue.createApp({
data() {
return {msg: 1}
}
})
const vm = app.mount('#app')
//用原生JS定時器執行: 2種方式修改msg的值
setInterval(function () {
vm.$data.msg = 10
}, 500);
setInterval(function () {
vm.msg = 20
}, 1000);
</script>
</body>
</html>
</script>
</body>
</html>
2.模板實際演練: 例如把id
做成動態的
下面是一個普通的帶id的div, 做過UI自動化的鐵子不陌生吧? 常常會用元素的id來做Xpath定位
<div id="Lee"></div>
那麼, 從開發的角度來看, 可以使用v-bind來"動態定義"元素的id
<div v-bind:id="dynamicId"></div>
Vue官方推薦-------將
v-bind
省略掉,簡約又美觀, 所以上面這句html中的v-bind
去掉就變成
<div :id="dynamicId"></div>
那麼在控制邏輯裡就可以設定id的名稱了, 而不是寫死它
完整程式碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>學學Vue的動態id</title>
</head>
<body>
<div id="app">
<div :id="dynamicId"></div>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
Vue.createApp({
data() {
return {msg: 0}
},
methods: {
//click觸發執行add函式, 即可將msg自增1
add() {
this.msg++
}
}
}).mount('#app')
</script>
</body>
</html>
此時你可能覺得, 這有啥用, 沒什麼需求會涉及到動態id的吧?
– 沒錯, 下一步我們改個樣式
玩玩?
PRD-02: 我想做一個動態style, 隨機切換div的顏色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>學學Vue的動態style</title>
</head>
<body>
<div id="app" style="text-align: center;">
<div :style="default_style">
目標div
</div>
<button v-on:click="modify_class_color">點我換個心情</button>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
Vue.createApp({
data() {
return {
default_style: {
"background-color": "rgba(21, 199, 100, 0.408)",
"fontSize": '50px'
},
}
},
methods: {
//click觸發執行這個class修改函式
modify_class_color() {
this.default_style["background-color"] = this.randomColor();
},
//隨機生成一個rgba顏色
randomColor() {
let color = "#";
for (let i = 0; i < 8; i++) color += parseInt(Math.random() * 16).toString(16);
console.log(color)
return color;
}
}
}).mount('#app')
</script>
</body>
</html>
怎麼樣, 找到黃色 了嗎? ๑乛◡乛๑ 手動滑稽~
在PD-01章節你已經學會了用按鈕控制style了, 以此類推, 如果你也想給某個東西設定一個開關, 當你觸發開關時才做某些事, 也很簡單
1.v-on實際演練: 點一下按鈕, msg增加1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>學學Vue的v-on</title>
</head>
<body>
<div id="app">
<button v-on:click="add">Message: {{ msg }}</button>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
Vue.createApp({
data() {
return {msg: 0}
},
methods: {
//click觸發執行add函式, 即可將msg自增1
add() {
this.msg++
}
}
}).mount('#app')
</script>
</body>
</html>
Vue官方推薦-------將
v-on
縮寫為@
簡約又美觀, 所以上面案例裡的html中button可以改為
<button @click="add">Message: {{ msg }}</button>
PRD-03:我想做一些條件判斷,減少程式碼量
還有一些常用的v-指令
:
1.v-if實際演練:
<p v-if="seen">現在你看到我了</p>
//這裡,v-if 指令將根據表示式 seen 的值的真假來插入/移除 <p> 元素
v-for
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<p v-for="(item,i) in list">資料是{{item}},它在陣列裡的下標是{{i}}</p>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
Vue.createApp({
data() {
return {list:[1,2,3,4,5]}
}
}).mount('#app')
</script>
</body>
</html>
PRD-NN:用Vue用的越深入時, 就會有一些需求要用到鉤子, 什麼是鉤子我們先不管, 先看作用, 知道作用之後自然就理解了~
比如想在她初始化的時候就附帶幫你做好一些事
下圖是Vue3官方的生命週期圖
彙總一下, 我們在建立vm例項時, 常用的鉤子函式有:
created(){}
mounted(){}
//TODO 未完待續
相關文章
- vue3 快速入門系列 —— vue3 路由Vue路由
- Materialize快速入門教程
- vue3 快速入門系列 —— 其他APIVueAPI
- vue3 快速入門系列 —— 元件通訊Vue元件
- Jupyter notebook快速入門教程
- vue3 快速入門系列 —— 狀態管理 piniaVue
- 快應用快速入門教程
- go語言快速入門教程Go
- 全面的Docker快速入門教程Docker
- gitbook 入門教程之快速體驗Git
- 30 分鐘快速入門 Docker 教程Docker
- 《C#快速入門教程》目錄C#
- C#快速入門教程(16)—— 介面C#
- C#快速入門教程(6)——方法C#
- Oka Mirror for Any Device快速入門教程dev
- C#快速入門教程(26)—— 繪圖C#繪圖
- C#快速入門教程(21)—— 泛型C#泛型
- C#快速入門教程(15)—— 繼承C#繼承
- C#快速入門教程(8)——整數C#
- Python快速入門,附詳細影片教程Python
- .Net5 WPF快速入門系列教程
- C#快速入門教程(28)—— ADO.NETC#
- C語言快速入門教程1快速入門 2指令 3條件選擇C語言
- 快速排序快速入門排序
- Spring Boot 2.x基礎教程:快速入門Spring Boot
- C#快速入門教程(25)—— 日期與時間C#
- C#快速入門教程(22)—— 常用集合型別C#型別
- Spring Boot -01- 快速入門篇(圖文教程)Spring Boot
- C#快速入門教程(30)—— 繼續學習C#
- C#快速入門教程(18)—— 異常處理C#
- C#快速入門教程(12)—— if語句結構C#
- Pytorch DistributedDataParallel(DDP)教程二:快速入門實踐篇PyTorchParallel
- Flutter小白教程系列(三) --- Dart語言快速入門FlutterDart
- 2020年Python基礎教程,Python快速入門教程(非常詳細)Python
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- Vue3語法快速入門以及寫一個倒數計時元件Vue元件
- C#快速入門教程(27)—— SQL Server資料庫C#SQLServer資料庫
- 線上PS入門教程:如何對人像快速摳圖