Vue.js-Hello world

透過CDN,NPM 和 Vue CLI 安裝Vue 2

  • 透過CDN 使用 Vue
<!-- development -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- production -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
  • 安裝 Vue CLI
npm install -g vue-cli

如何建構基本的 Vue 2 應用程式

vue init pwa my-vue-app   // 建立專案
cd ./my-vue-app
npm install
npm run dev

Hello World

<div id="app">
  {{ message }}
  <p>ng-bind-html: <span v-html="message"></span></p>
</div>

<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})
</script>
  • 元件顯示與不顯示(ng-show)
<div id="app-3">
  <p v-if="seen">现在你看到我了</p>
</div>

<button v-bind:disabled="isButtonDisabled">Button</button>

var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true  // false
  }
})
  • 迴圈
<div id="app-4">
  <ol>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ol>
</div>

var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: '学习 JavaScript' },
      { text: '学习 Vue' },
      { text: '整个牛项目' }
    ]
  }
})

// 增加新內容
app4.todos.push({ text: '新项目' })

雙向綁定 Two-way binding

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>

var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

使用者資料輸入

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆转消息</button>
</div>

var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

元件

  • 定義元件
Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

var app7 = new Vue({
  el: '#app-7',
  data: {
    groceryList: [
      { id: 0, text: '蔬菜' },
      { id: 1, text: '奶酪' },
      { id: 2, text: '随便其它什么人吃的东西' }
    ]
  }
})

// 網頁輸出
<div id="app-7">
  <ol>
    <todo-item
      v-for="item in groceryList"
      v-bind:todo="item"
      v-bind:key="item.id">
    </todo-item>
  </ol>
</div>

參考資料