---
# System prepended metadata

title: Vue.js 學習

---

{%hackmd theme-dark %}
# Vue.js 學習
## 2023/2/17
Vue.js 是一個開源的前端框架，具有以下特色:
+ 撰寫良好的官方文件
+ 輕量、高彈性
+ 簡潔的語法
+ 較低的學習曲線
+ 穩定的社群成長

resources:
https://ithelp.ithome.com.tw/users/20129072/ironman/3052
https://vuejs.org/
https://codepen.io/

### data 屬性
當一個vue實體被建立時，它會將在data物件中的所有屬性加入vue的響應系統中(eactivity system)，當data物件中的任何屬性被改變值，我們的畫面(view)會即時重新渲染，讓畫面的內容符合新變動的值，在vue的template中我們可以利用mustache syntax(也就是兩個大括號)使用data物件中的屬性。
```htmlembedded!
<template>
  <div id="app">
    <h1>{{message}}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Welcome to Vue!'
    };
  }
};
</script>
```
### method 屬性
在vue實體中的methods屬性讓我們能定義一些可以綁在該實體上的函數，這些函數可以替我們做到我們想做的事情，就像一般的js函數一樣。像是我們希望點擊按鈕後跳出訊息、使用者輸入密碼時給予提示都可以透過methods達成。
```javascript!
<script>
export default {
  data: {
    message: 'Welcome to Vue!'
  },
  methods: {
    greet() {
      alert('Hello I am Richard!')
    }
  }
};
</script>
```
```htmlembedded!
<template>
  <div id="app">
    <h1>{{message}}</h1>
    <button v-on:click="greet">Click Me</button>
  </div>
</template>
```
假如我要設計一個按鈕，就可利用v-on這樣的指令綁訂了一個click事件，並告訴它click之後要觸發methods中的哪個函數。`v-on:click="greet"` 可以簡寫為 `@click="greet"`