以下是一份Vue.js的实操教程,包含基础语法和核心功能演示,适合快速上手和实践:

Vue.js 实操教程

一、环境搭建

方式1:CDN引入(快速开始)

<!DOCTYPE html>
<html>
<head>
  <title>Vue Demo</title>
  <!-- 开发环境版本(包含控制台警告) -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
  <div id="app">{{ message }}</div>
  <script src="app.js"></script>
</body>
</html>

方式2:Vue CLI(推荐正式项目)

npm install -g @vue/cli
vue create my-project
cd my-project
npm run serve

二、基础语法实操

1. 创建Vue实例

// app.js
new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

2. 数据绑定与指令

<div id="app">
  <p v-bind:title="hoverText">{{ message }}</p>
  <p v-html="rawHtml"></p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    hoverText: '页面加载于' + new Date().toLocaleString(),
    rawHtml: '<span style="color: red">红色文字</span>'
  }
})
</script>

3. 事件处理

<div id="app">
  <button v-on:click="counter += 1">点击+1</button>
  <p>已点击 {{ counter }} 次</p>
  
  <button @click="reverseMessage">反转消息</button>
  <p>{{ message }}</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    counter: 0,
    message: 'Hello Vue!'
  },
  methods: {
    reverseMessage() {
      this.message = this.message.split('').reverse().join('')
    }
  }
})
</script>

三、核心功能演示

1. 条件与循环

<div id="app">
  <div v-if="showContent">可见内容</div>
  <div v-else>替代内容</div>
  
  <ul>
    <li v-for="(item, index) in items" :key="index">
      {{ index + 1 }}. {{ item.text }}
    </li>
   </ul>
</div>

<script>
 new Vue({
   el: '#app',
  data: {
    showContent: true,
    items: [
       { text: '学习JavaScript' },
      { text: '学习Vue' },
      { text: '整个项目' }
    ]
  }
})
</script>

2. 表单绑定

<div id="app">
  <input v-model="inputText" placeholder="输入内容">
  <p>输入内容:{{ inputText }}</p>
  
  <select v-model="selected">
    <option disabled value="">请选择</option>
    <option>A</option>
    <option>B</option>
    <option>C</option>
  </select>
  <span>选择的值:{{ selected }}</span>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    inputText: '',
    selected: ''
  }
})
</script>

四、组件开发

1. 全局组件

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

new Vue({
  el: '#app',
  data: {
    groceryList: [
      { id: 0, text: '蔬菜' },
      { id: 1, text: '奶酪' },
      { id: 2, text: '其他食品' }
    ]
  }
})

<div id="app">
  <ol>
    <todo-item
      v-for="item in groceryList"
      :todo="item"
      :key="item.id"
    ></todo-item>
  </ol>
</div>

2. 单文件组件(.vue文件)

<template>
  <div class="example">
    {{ msg }}
    <button @click="count++">点击 {{ count }} 次</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'Hello Vue!',
      count: 0
    }
  }
}
</script>

<style>
.example {
  color: #42b983;
}
</style>

五、综合案例:TodoList

<div id="app">
  <input v-model="newTodo" @keyup.enter="addTodo">
  <ul>
    <li v-for="(todo, index) in todos" :key="index">
      <input type="checkbox" v-model="todo.completed">
      <span :class="{ completed: todo.completed }">{{ todo.text }}</span>
      <button @click="removeTodo(index)">×</button>
    </li>
  </ul>
  <p>剩余:{{ remaining }} / {{ todos.length }}</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    newTodo: '',
    todos: [
      { text: '学习Vue', completed: true },
      { text: '练习项目', completed: false }
    ]
  },
  computed: {
    remaining() {
      return this.todos.filter(todo => !todo.completed).length
    }
  },
  methods: {
    addTodo() {
      if (this.newTodo.trim()) {
        this.todos.push({
          text: this.newTodo,
          completed: false
        })
        this.newTodo = ''
      }
    },
    removeTodo(index) {
      this.todos.splice(index, 1)
    }
  }
})
</script>

<style>
.completed {
  text-decoration: line-through;
  color: #999;
}
</style>

六、生命周期示例

new Vue({
  el: '#app',
  data: {
    message: '生命周期演示'
  },
  beforeCreate() {
    console.log('实例初始化前')
  },
  created() {
    console.log('实例创建完成,可访问data')
  },
  mounted() {
    console.log('DOM挂载完成')
    // 此处可进行DOM操作或API请求
  },
  updated() {
    console.log('数据更新导致DOM重新渲染')
  }
})

通过以上示例可以练习以下核心概念:

  • 声明式渲染(数据绑定)
  • 指令系统(v-if/v-for/v-model等)
  • 事件处理(@click)
  • 计算属性(computed)
  • 组件化开发
  • 生命周期钩子

建议按以下步骤实践:

  • 从CDN版本开始体验基础功能
  • 使用Vue CLI创建正式项目
  • 尝试组合各种功能完成复杂组件
  • 结合Vue Router和Vuex进行完整项目开发

后续可扩展学习:

  • Vue Router实现页面路由
  • Vuex进行状态管理
  • Vue Devtools调试工具
  • 组合式API(Vue3特性)
  • 服务端渲染(Nuxt.js)

玩篮球的煎鸡蛋仔
1 声望0 粉丝