我爱编程

Vue 构建单页应用 1

2018-06-05  本文已影响46人  那就远走

简介和对比

安装脚手架

创建和启动项目

命令都是是从 ./package.json 文件中的 "scripts" 属性中找到的。

基本目录结构

只列出了重点

了解第一个组件

<!-- 模板 -->
<template>
  <!-- 所有组件元素必须被一个根元素包含起来 -->
  <div id="app">
    <!-- 这里导入了Vue的Logo -->
    <img src="./assets/logo.png">
    <!-- 这里导入了组件HelloWorld -->
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<!-- js -->
<script>
// 这里引用了组件
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'app',
  // 这里声明了组件
  components: {
    HelloWorld
  }
}
</script>

<!-- css -->
<style>
 ...
</style>
<template>
  <div class="hello">
    <!-- 在模板上显示接收的数据 -->
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  // 声明接收的数据
  props: {
    // 接收叫 msg 的变量,类型为 String 字符串。
    msg: String
  }
}
</script>

<!-- 在style标签上添加 "scoped" 属性来声明以下css只对当前组件有效 -->
<style scoped>
 ...
</style>

根组件定义数据,子组件显示

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'app',
  components: {
    HelloWorld
  },

  // 这里定义数据
  data() {
    return {
      // 字符串
      msg: "测试",

      // 对象
      person: {
        name: "张三",
        age: 18
      },

      // 数组(对象集合)
      students: [
        {id: 1, name: "张三", age:18},
        {id: 2, name: "李四", age:18},
        {id: 3, name: "王五", age:18},
      ]
    }
  }
}
</script>

这里 v-bind: 可以 简写为 :

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String,
    person: Object,
    students: Array,
  }
}
</script>
<!-- 任何组件必须有一个根元素包起来(不能有两个最大的元素,可以把这个div理解为普通 html 中的 body 标签) -->
<div class="hello">
  <!-- 展示字符串 -->
  <h1>{{ msg }}</h1>
  
  <!-- 展示对象 -->
  <span>姓名 - {{ person.name }}</span>
  <br>
  <span>年龄 - {{ person.age }}</span>
  
  <!-- 遍历数组 -->
  <ul>
    <!-- 在遍历数组时,必须告诉 Vue 这个数组的“主键” -->
    <li v-for="student of students" :key="student.id">
      {{ student.id }} - {{ student.name }} - {{ student.age }}
    </li>
  </ul>
</div>

根组件 script 中使用 data() { return { //定义数据 } } 定义数据 -> 根组件模板中,使用:key="value"传递数据 -> 子组件 script 中使用 props 接收数据 -> 子组件使用 {{ string }} , {{ object.prop }}, v-for="data of datas" 显示数据。

上一篇下一篇

猜你喜欢

热点阅读