Vue.js 簡介與實作範例

閱讀時間約 13 分鐘

Vue.js 是一個靈活且高效的 JavaScript 框架,專注於構建用戶界面。它使用虛擬 DOM 技術,能夠有效地更新界面。無論是初學者還是專業開發者,Vue.js 都提供了多種API供選擇,如 Options API 和 Composition API,Vue 2使用options API,Vue 3則是options API、composition API都可以使用。


網站性質

在 Vue.js 中,渲染的過程如下:

  1. HTML/CSS 渲染:將基本結構和樣式展現出來。
  2. JavaScript 交互:通過 Vue.js 進行交互式操作。

虛擬 DOM vs. 實際 DOM

Vue.js 的優勢在於它的虛擬 DOM 機制。當數據發生變更時,Vue 會首先更新虛擬 DOM,然後再將變更應用到實際 DOM,這樣可以大幅提升性能。

基本示範:Vue 實作

Options API 示例

<div id="app">
<button type="button" @click="message='Hello Vue!'">改變Message</button>
{{ message }}
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
message: 'Hello World',
}
},
// 處理資料前(data,methods)觸發
beforeCreate(){
console.log('beforeCreate',this.message);
},

// 當資料(data,methods)處理完後觸發
created(){
console.log('created',this.message);
},

// 當DOM掛載完成觸發
mounted(){
console.log('mounted',this.message);
},

// 當畫面有更新時觸發
updated(){
console.log('updated');
},
});

app.mount('#app');
</script>

表單輸入示例

<div id="app">
<input v-model="message" type="text" placeholder="請輸入">
<p>{{ message }}</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
message: '',
}
},
});

app.mount('#app');
</script>

雙向綁定

使用 v-model 指令可實現雙向綁定,input的值會和綁定的變數同步,可以簡化數據更新流程。

<input v-model="message" type="text" placeholder="請輸入">

練習 1:動態表單輸入

<div id="app">
<div v-for="member in members" :key="member.id">
<label>
姓氏: <input v-model="member.lastName" type="text">
</label>
<label>
名字: <input v-model="member.firstName" type="text">
</label>
</div>
<div v-for="member in members" :key="member.id">
<p>{{ member.lastName }} {{ member.firstName }}</p>
</div>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
members: [
{ id: 1, lastName: '', firstName: '' },
{ id: 2, lastName: '', firstName: '' },
{ id: 3, lastName: '', firstName: '' },
],
}
},
});

app.mount('#app');
</script>

監聽器示例

使用監聽器watch來響應數據變化。

<div id="app">
<button type="button" @click="count++">Count++</button>
{{ count }}
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
count: 0,
}
},
watch: {
count(newValue, oldValue) {
console.log(`Count from ${oldValue} changed to ${newValue}`);
}
},
});

app.mount('#app');
</script>

練習 2:異步數據獲取

<div id="app">
<button @click="fetchData">獲取資料</button>
<pre v-if="todoData">{{ todoData }}</pre>
<p v-else>Loading...</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
todoData: null,
};
},
methods: {
fetchData() {
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(data => this.todoData = data);
}
},
});

app.mount('#app');
</script>

計算屬性示例

計算屬性可以用來進行數據的計算和過濾。

<div id="app">
<input v-model="lastName" type="text" placeholder="姓名">
<p>{{ fullName }}</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
lastName: '王',
firstName: '大明',
};
},
computed: {
fullName() {
return `${this.lastName} ${this.firstName}`;
}
},
});

app.mount('#app');
</script>

單選與多選下拉選單

在 Vue 中,單選、多選和下拉選單的製作都非常快速。

<div id="app">
<label>
<input v-model="gender" type="radio" value="男">
</label>
<label>
<input v-model="gender" type="radio" value="女">
</label>
<p>{{ gender }}</p>

<label>
<select v-model="time">
<option value="" hidden>請選擇聯絡時間</option>
<option value="早上">早上</option>
<option value="中午">中午</option>
<option value="晚上">晚上</option>
</select>
</label>
<p>{{ time }}</p>

<label>
<input v-model="food" type="checkbox" value="排骨飯"> 排骨飯
</label>
<label>
<input v-model="food" type="checkbox" value="鴨肉飯"> 鴨肉飯
</label>
<p>{{ food }}</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
gender: '',
time: '',
food: [],
};
},
});

app.mount('#app');
</script>

總結

Vue.js 提供了簡單易用的寫法,使得前端開發變得更加高效和靈活。從基本的數據綁定到複雜的計算屬性和事件監聽器,Vue.js 的特性可以幫助開發者快速構建動態和響應式的應用程序。接下來會介紹一些偏理論的知識以及其他應用。


對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!

 

提醒,文章僅供正當的知識參考,文章不負任何責任。


avatar-img
0會員
11內容數
有軟體開發相關文章。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿棋的沙龍 的其他內容
前言 Vue.js 是一個流行的 JavaScript 框架,專為構建單頁應用程序(SPA)而設計。它讓我們能夠更簡潔、更直觀地開發前端應用,和原生的 JavaScript 相比,Vue 的語法和結構有很多不同的地方,大家可能要花一些時間適應vue的寫法。這篇文章將帶您一步步了解 Vue.js 的
前言 Vue.js 是一個流行的 JavaScript 框架,專為構建單頁應用程序(SPA)而設計。它讓我們能夠更簡潔、更直觀地開發前端應用,和原生的 JavaScript 相比,Vue 的語法和結構有很多不同的地方,大家可能要花一些時間適應vue的寫法。這篇文章將帶您一步步了解 Vue.js 的
你可能也想看
Google News 追蹤
Thumbnail
我很鼓勵投資人不要只投資台股,對股市有一點熟悉度後,建議範圍擴況大到美股,甚至是投資全球。因為台股僅是單一國家/市場,如果能將資產投資到其他國家,風險會更分散,機會也更多,特別是美國股市。 美股會很難懂嗎?我相信你認識的美國企業可能會比台灣企業多,我從標普500成分股前15大企業裡隨便抓十
Thumbnail
美股因多家熱門話題與龍頭企業市值快速增長受到關注,本文介紹如何透過國泰世華CUBE App 開設台股及美股複委託帳戶、定期理財的便利性。 定期投資適合單筆資金有限、經驗不多的理財小白、上班族,或者忙碌、沒時間研究基本面的朋友,國泰世華CUBE App美股定額投資功能,操作便利性幾乎完勝海外券商。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
Quasar Dialog 的 Invoking custom component 很好用,但是有些困擾的地方,一起來看看有甚麼辦法吧。
Thumbnail
切換頁面卡卡有很多種原因,這裡舉的例子只針對元件太大的情境。 除了想辦法拆分外,還有一個方法就是利用 Vue 的 Async Component。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
※ 視圖模板 視圖模板(View Templates) 是在 MVC 架構中負責展示數據的 HTML 文件,包含模板語法,用於在渲染時插入實際數據。它們的主要目的是分離數據與展示邏輯,讓代碼更加模塊化和易於維護。 視圖模板設計和使用的核心理念,就是「重複的事情不要重複做、效益最大化、有效利用資源
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
Vocus 新增了沙龍功能,目的是為了取代原本的「專題」,我這篇就來分享一下我目前摸索沙龍的經驗
Thumbnail
我很鼓勵投資人不要只投資台股,對股市有一點熟悉度後,建議範圍擴況大到美股,甚至是投資全球。因為台股僅是單一國家/市場,如果能將資產投資到其他國家,風險會更分散,機會也更多,特別是美國股市。 美股會很難懂嗎?我相信你認識的美國企業可能會比台灣企業多,我從標普500成分股前15大企業裡隨便抓十
Thumbnail
美股因多家熱門話題與龍頭企業市值快速增長受到關注,本文介紹如何透過國泰世華CUBE App 開設台股及美股複委託帳戶、定期理財的便利性。 定期投資適合單筆資金有限、經驗不多的理財小白、上班族,或者忙碌、沒時間研究基本面的朋友,國泰世華CUBE App美股定額投資功能,操作便利性幾乎完勝海外券商。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
Quasar Dialog 的 Invoking custom component 很好用,但是有些困擾的地方,一起來看看有甚麼辦法吧。
Thumbnail
切換頁面卡卡有很多種原因,這裡舉的例子只針對元件太大的情境。 除了想辦法拆分外,還有一個方法就是利用 Vue 的 Async Component。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
※ 視圖模板 視圖模板(View Templates) 是在 MVC 架構中負責展示數據的 HTML 文件,包含模板語法,用於在渲染時插入實際數據。它們的主要目的是分離數據與展示邏輯,讓代碼更加模塊化和易於維護。 視圖模板設計和使用的核心理念,就是「重複的事情不要重複做、效益最大化、有效利用資源
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
Vocus 新增了沙龍功能,目的是為了取代原本的「專題」,我這篇就來分享一下我目前摸索沙龍的經驗