从0开始学vue:实现一个简单页面

从零开始学Vue实现简单页面

Vue.js 是一个渐进式JavaScript框架,用于构建用户界面。下面我将带你从零开始学习Vue.js并创建一个简单的可运行页面。

1. 准备工作

首先,你需要了解几种学习Vue.js的方式:

方式一:使用CDN引入(最简单的方式)

<!DOCTYPE html>
<html>
<head>
    <title>我的第一个Vue应用</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        {{ message }}
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'Hello Vue!'
            }
        });
    </script>
</body>
</html>

方式二:使用Vue CLI创建项目(推荐方式)

  1. 首先安装Node.js(包含npm)
  2. 安装Vue CLI:
    npm install -g @vue/cli
    
  3. 创建项目:
    vue create my-first-vue-app
    
  4. 进入项目目录并运行:
    cd my-first-vue-app
    npm run serve
    

2. 创建一个简单的待办事项应用

创建Todo组件

在src/components目录下创建TodoList.vue文件:

<template>
  <div class="todo-app">
    <h1>我的待办事项</h1>
    
    <div class="add-todo">
      <input 
        type="text" 
        v-model="newTodo" 
        @keyup.enter="addTodo"
        placeholder="输入待办事项..."
      >
      <button @click="addTodo">添加</button>
    </div>
    
    <ul class="todo-list">
      <li 
        v-for="(todo, index) in todos" 
        :key="index" 
        class="todo-item"
        :class="{ completed: todo.completed }"
      >
        <input 
          type="checkbox" 
          v-model="todo.completed"
        >
        <span>{{ todo.text }}</span>
        <button @click="removeTodo(index)" class="delete-btn">删除</button>
      </li>
    </ul>
    
    <p v-if="todos.length === 0">暂无待办事项,添加一个吧!</p>
    <p v-else>已完成 {{ completedCount }} / {{ todos.length }} 项</p>
  </div>
</template>

<script>
export default {
  name: 'TodoList',
  data() {
    return {
      newTodo: '',
      todos: [
        { text: '学习Vue.js', completed: false },
        { text: '完成项目', completed: false },
        { text: '购物', completed: true }
      ]
    }
  },
  computed: {
    completedCount() {
      return this.todos.filter(todo => todo.completed).length;
    }
  },
  methods: {
    addTodo() {
      if (this.newTodo.trim() === '') return;
      this.todos.push({
        text: this.newTodo.trim(),
        completed: false
      });
      this.newTodo = '';
    },
    removeTodo(index) {
      this.todos.splice(index, 1);
    }
  }
}
</script>

<style scoped>
.todo-app {
  font-family: Arial, sans-serif;
  max-width: 600px;
  margin: 0 auto;
  padding: 20px;
}

.todo-list {
  list-style: none;
  padding: 0;
}

.todo-item {
  display: flex;
  align-items: center;
  padding: 10px;
  border-bottom: 1px solid #eee;
}

.todo-item.completed {
  color: #888;
  text-decoration: line-through;
}

.todo-item input {
  margin-right: 10px;
}

.add-todo {
  display: flex;
  margin-bottom: 20px;
}

.add-todo input {
  flex-grow: 1;
  padding: 8px;
  margin-right: 10px;
}

.add-todo button {
  padding: 8px 16px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

.delete-btn {
  margin-left: auto;
  background-color: #ff5252;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 4px 8px;
  cursor: pointer;
}
</style>

修改App.vue

更新src/App.vue文件以包含我们的Todo组件:

<template>
  <div id="app">
    <TodoList />
  </div>
</template>

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

export default {
  name: 'App',
  components: {
    TodoList
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

运行项目

npm run serve

4. 下一步学习建议

  1. 组件系统:学习如何创建可复用的Vue组件
  2. Vue Router:学习如何实现单页应用(SPA)的路由
  3. Vuex:学习状态管理
  4. 生命周期钩子:了解Vue实例的生命周期
  5. Vue 3:了解Vue的最新版本及其新特性

5. 完整项目结构(使用Vue CLI创建)

如果你使用Vue CLI创建项目,典型的项目结构如下:

my-project/
├── public/
│   ├── index.html
│   └── favicon.ico
├── src/
│   ├── assets/
│   ├── components/
│   │   └── HelloWorld.vue
│   ├── App.vue
│   └── main.js
├── package.json
└── README.md

希望这个简单的教程能帮助你开始Vue.js的学习之旅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有梦想的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值