---
# System prepended metadata

title: '第一章:Vue.js 基礎'

---

# 第一章:Vue.js 基礎

## 一、筆記

### 1-1 ： Vue.js 簡介
Vue.js最主要的核心功能有兩個部分：「**宣告式渲染**」與「**元件系統**」

**宣告式渲染**：集中管理，再寫出去
![](https://i.imgur.com/SFZ4hG5.png)

**MVVM**：Model, View, ViewModel三個部分組成。Model層與View層分別代表著狀態與畫面兩個部分，ViewModel層會自動將Model層與View層的狀態自動同步。
![](https://i.imgur.com/QQ7ihqe.png)

---

**安裝與起步**
開始使用Vue.js，最簡單的方式就是在HTML底部加上一行：

Vue2.0
```htmlembedded=
<script src="https://cdn.jsdelivr.net/npm/vue.js"></script>
```
Vue3.0
```htmlembedded=
<script src="https://unpkg.com/vue@next"></script>
```
---
**Hello Vue!**

在HTML準備一個對應的節點，以 **id="app"** 的 **div** 來示範
```htmlembedded=
<div id="app">
    {{message}}
</div>
```
{{  }}的內容是Vue.js實體物件內的狀態


### 1-2 ： Vue.js 的核心：實體
建立Vue物件實體
2.x : new Vue({...})
3.x : createApp({...})

將物件指定到某個變數，例：設到 vm 中 
```jsx=
// Vue 2.x
const vm = new Vue({
    data: {
        message: 'Hello Vue!'
    }
});

//透過 $mount 掛載至指定的網頁節點
vm.$mount('#app');
```
而這個被生成的物件，就被稱為「Vue.js的實體物件」，而裡面的物件參數則被稱為「options 物件」

---

**掛載至DOM**
將這個實體掛載至網頁的DOM節點以取得網頁的控制權

html:
```htmlmixed=
<div id="app"></div>
```
js:
```jsx=
//for Vue 2.x
const vm = new Vue({
    el: '#app'
});
```
```jsx=
//注意：Vue.js 3.0 無法使用el屬性
const vm = Vue.createApp({
    // options
});

vm.mount('#app');
```
### 1-3
### 1-4
### 1-5
### 1-6
### 1-7

## 二、問題
**1. 什麼是 漸進式 JavaScript 框架 (The Progressive JavaScript Framework)?**

**2. 什麼是 MVVM 模式?**

ViewModel層會自動將Model層與View層的狀態自動同步。
![](https://i.imgur.com/QQ7ihqe.png)

**3.什麼是元件(component)系統?**

**4.vue2, vue3 有哪些的差異?**

**5.用 vue3 寫一個 hello world 需要那些程式碼?**

```htmlembedded=
//html
<div id="app"></div>

<script src="https://unpkg.com/vue@next"></script>

<script>
    Vue.createApp({
        data () {
            return {
                message: 'hello world'
            }
        }
    }).mount('#app');
</script>
```

**6.computed/methods 差別在哪?**

**7.html 中 v- 開頭的屬性有什麼用途? 請舉例?**

**8.怎麼實作一個按鈕(button)事件?**

**9.請舉例一個 v-for 的用途?**

**10.請用自己的話解釋 vue 元件的 生命週期 (life cycle) 與更新機制?**

## 三、心得
目前還沒讀透，所以筆記也只做到一半。之後，會陸陸續續補齊，問題的回答也會再補上。就讀到的地方，回想到上禮拜的作業，就稍微了解，網頁製作的原理了，日後應該可以更加明白更多的網頁功能