当前位置: 首页 > article >正文

青少年编程与数学 02-006 前端开发框架VUE 08课题、列表渲染

青少年编程与数学 02-006 前端开发框架VUE 08课题、列表渲染

  • 一、列表渲染
      • `v-for` 指令
      • `:key` 属性
      • 遍历对象
      • 响应式更新
      • 列表渲染的作用
  • 二、应用示例
      • 项目结构
      • `public/index.html`
      • `src/components/TodoApp.vue`
      • `src/main.js`
      • `package.json`
      • 构建和运行项目

课题摘要:本文介绍了Vue.js中的列表渲染功能,它允许基于数组渲染元素列表,并在数组变化时更新列表。核心是v-for指令,它绑定到数组上,为每个元素渲染一个元素或模板块。使用v-for时,应为每个列表项提供唯一的:key属性,帮助Vue跟踪节点身份,优化DOM更新。v-for也能遍历对象。列表渲染对于动态调整UI、提升性能和响应式设计至关重要。文章提供了一个待办事项应用示例,展示了如何使用Vue 3的组合式API和列表渲染构建应用,包括项目结构、组件代码和运行指南。这个示例允许用户添加和删除待办事项,展示了Vue列表渲染的实际应用。


一、列表渲染

列表渲染是 Vue.js 中的一个核心功能,它允许你基于一个数组来渲染一个元素列表,并在数组发生变化时更新列表。Vue 提供了 v-for 指令来实现列表渲染,使得处理列表数据变得简单和高效。

v-for 指令

v-for 指令可以绑定到数组上,并为数组中的每个元素渲染一个元素或模板块。基本语法如下:

<template>
  <ul>
    <li v-for="item in items" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
</template>

<script setup>
import { ref } from 'vue';

const items = ref([
  { id: 1, name: 'Apple' },
  { id: 2, name: 'Banana' },
  { id: 3, name: 'Orange' },
]);
</script>

在这个示例中,v-for="item in items" 告诉 Vue 为 items 数组中的每个元素渲染一个 <li> 元素。

:key 属性

在使用 v-for 时,建议为每个列表项提供一个唯一的 :key 属性值。key 是一个特殊的属性,用于跟踪每个节点的身份,从而帮助 Vue 确定哪些元素是不同的,哪些元素是相同的,以及哪些元素改变了位置。这有助于 Vue 优化 DOM 更新过程。

遍历对象

v-for 不仅可以遍历数组,还可以遍历对象:

<template>
  <ul>
    <li v-for="(value, key, index) in object" :key="key">
      {{ index }}. {{ key }}: {{ value }}
    </li>
  </ul>
</template>

<script setup>
import { reactive } from 'vue';

const object = reactive({
  name: 'Vue',
  framework: 'JavaScript',
  year: 2014
});
</script>

响应式更新

当原始数组中的数据被修改时,例如添加、删除或排序元素,Vue 会自动更新 DOM 来反映这些变化。Vue 内部使用高效的算法来最小化 DOM 更新,以保持应用性能。

列表渲染的作用

列表渲染在构建现代 Web 应用中非常重要,因为它允许应用动态地根据数据和用户交互来调整 UI。这种方式可以:

  • 提供更丰富的用户体验。
  • 减少不必要的 DOM 操作,提高性能。
  • 根据应用的状态显示或隐藏特定的功能和组件。

列表渲染是响应式编程和声明式 UI 框架的一个核心概念,Vue 提供的 v-for 指令使得在模板中实现列表渲染变得简单而直观。

二、应用示例

下面是一个使用 Vue 3 组合式 API 和列表渲染的完整项目示例。这个示例是一个简单的待办事项(Todo)应用,它允许用户添加新的待办事项,并展示一个待办事项列表。

项目结构

todo-app/
│
├── public/
│   └── index.html
│
├── src/
│   ├── assets/
│   │   └── logo.png
│   │
│   ├── components/
│   │   └── TodoApp.vue
│   │
│   └── main.js
│
└── package.json

public/index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Todo App</title>
</head>
<body>
  <div id="app"></div>
</body>
</html>

src/components/TodoApp.vue

<template>
  <div class="todo-app">
    <h1>Todo App</h1>
    <input type="text" v-model="newTodo" @keyup.enter="addTodo" placeholder="Add a new todo" />
    <ul>
      <li v-for="todo in todos" :key="todo.id">
        {{ todo.text }}
        <button @click="removeTodo(todo.id)">Remove</button>
      </li>
    </ul>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const newTodo = ref('');
const todos = ref([
  { id: 1, text: 'Learn Vue' },
  { id: 2, text: 'Build something' },
]);

function addTodo() {
  if (newTodo.value.trim()) {
    todos.value.push({ id: todos.value.length + 1, text: newTodo.value });
    newTodo.value = '';
  }
}

function removeTodo(id) {
  todos.value = todos.value.filter(todo => todo.id !== id);
}
</script>

<style scoped>
.todo-app {
  max-width: 600px;
  margin: 0 auto;
  padding: 20px;
}

input[type="text"] {
  padding: 10px;
  margin-bottom: 20px;
  width: 100%;
}

ul {
  list-style-type: none;
  padding: 0;
}

li {
  margin: 10px 0;
}
</style>

src/main.js

import { createApp } from 'vue';
import TodoApp from './components/TodoApp.vue';

createApp(TodoApp).mount('#app');

package.json

{
  "name": "todo-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
  },
  "dependencies": {
    "vue": "^3.0.0"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^4.0.0",
    "@vue/cli-service": "^4.0.0"
  }
}

构建和运行项目

  1. 使用 Vue CLI 创建项目:

    vue create todo-app
    
  2. 进入项目目录:

    cd todo-app
    
  3. 替换 src/components/TodoApp.vuesrc/main.js 中的内容为上述代码。

  4. 运行项目:

    npm run serve
    

    打开浏览器访问 http://localhost:8080 即可看到待办事项应用。

这个示例展示了如何使用 Vue 3 的组合式 API 和列表渲染来构建一个简单的待办事项应用。用户可以在输入框中输入新的待办事项,并按下 Enter 键添加到列表中。同时,可以点击每个待办事项旁边的按钮来删除对应的待办事项。


http://www.kler.cn/a/469184.html

相关文章:

  • idea项目导入gitee 码云
  • js复制数据到剪切板
  • 遗传学的“正反”之道:探寻生命密码的两把钥匙
  • GitLab集成Runner详细版--及注意事项汇总【最佳实践】
  • 使用 Optimum Habana 在 Intel Gaudi 上加速模型训练与推理
  • 轻量级通信协议 JSON-RPC 2.0 详解
  • 偏振测量——典型光学元件的穆勒矩阵
  • 使用Python实现健康跟踪应用:打造智能健康管理助手
  • 基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
  • sqlserver数据库备份和还原
  • 计算机网络(第8版)第3章--PPP课后习题
  • ESP32-C3 入门笔记08:多帧数据解析
  • Linux网络命令
  • 网络安全技能试题总结参考
  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(24):椭圆曲线密码学
  • Kotlin 协程基础知识总结七 —— Flow 与 Jetpack Paging3
  • 如何实现一个充满科技感的官网(二)
  • AWS DMS基础知识
  • 第27天:PHP应用原生语法全局变量数据接受身份验证变量覆盖任意上传
  • 人工智能深度学习物体检测之YOLOV7源码解读
  • 【C语言】_野指针
  • 利用DHCP自动分配IP
  • 手工专项测试--接口测试(jmeter)--单接口与关联接口与断言
  • 百度Android最新150道面试题及参考答案 (中)
  • 《Vue进阶教程》第三十四课:toRefs的使用
  • 【开源免费】基于SpringBoot+Vue.JS作业管理系统(JAVA毕业设计)