---
# System prepended metadata

title: 第二週 ES6 必學語法
tags: [Vue 實戰班]

---

---
tags: Vue 實戰班
---


# 第二週 ES6 必學語法

獎勵活動：
- 幫幫忙組：
    - [加入幫幫忙組](https://hackmd.io/@hexschool/HJDbvkFqU/%2F_zwYYNnsSXO0PW7BCpJwQQ)
    - [許願區](https://docs.google.com/spreadsheets/d/1DOk5jCqnz-y_z6M_aFaoNn3n-ayheFhQ6h2LLDzYaXg/edit#gid=1084713188)
- 艱難的第二週作業挑戰，沒交的準備被騷擾
    - 課程 API 說明：https://courses.hexschool.com/courses/924133/lectures/21092725
    - 主線作業：https://hackmd.io/iMJpvRn3SwSTUjx9DlcXSQ

![](https://i.imgur.com/CvmmZLS.png)

- 課程預習：https://hackmd.io/@hexschool/S1DJeKTdL/%2Fd-oyhhRoRPSvL1uoM1BGJw
- 團隊任務：https://hackmd.io/SOd1i-R-SjORbFzfqPIr0Q

## 本週重點

- 物件、this
- import、export
- 非同步 Promise


## 物件、This

物件 this 與模組
```js
var component = {
  data: {
    name: '元件...'
  },
  render() {
    var string = `渲染 ${ this.data.name } 資料到畫面上...`;
    document.querySelector('#app').innerHTML = string
  }
}
component.render();
```

## import、export

- 主流瀏覽器可直接運行，標籤需要加上 `type="module"`
    - 傳統瀏覽器需要先進行編譯（課程會介紹到）
- 先掌握匯出方法，怎麼匯出決定如何匯入
	- default
	- named
	- Side Effect

結合 this 的觀念

```jsx=
export default {
  data: '我是小明',
  render(dom) {
    document.querySelector(dom)
      .innerHTML = `<div>${ this.data }</div>`
  }
}
```

### Promise 與 Ajax

- 非同步運作概念
- 使用 Promise 解決非同步問題
- 使用 Axios 串接遠端資料

Promise 函式（參考函式，實戰中不太需要自行建構，如有興趣可[參考](https://wcc723.github.io/development/2020/02/16/all-new-promise/)）
```js
var promiseSetTimeout = function(status) {
  return new Promise(function(resolve, reject) {
    setTimeout(() => {
      if (status) {
        resolve('promiseSetTimeout 成功')
      } else {
        reject('promiseSetTimeout 失敗')
      }
    }, 10);
  })
}
```

![](https://i.imgur.com/K1Nh4p4.png)


## 作業說明

本週作業說明：
- 主線任務
	- 提交任務注意事項
- 下週預習：https://hackmd.io/@hexschool/S1DJeKTdL/%2FCHGTC0zPT4efLjbmoR9hqw
- 團隊任務