初识Vue-组件化开发(应用实例)

目录

一、任务管理应用

1.介绍

2.代码

1. 任务列表组件 (TaskList.vue)

2. 添加任务组件 (AddTask.vue)

3. 应用入口组件 (App.vue)

4. 主入口文件 (main.js)

 3.效果

4.总结

二、购物车

1.介绍

2.代码

1. 商品列表组件 (ProductList.vue)

2. 购物车组件 (Cart.vue)

3. 主应用组件 (App.vue)

3.总结

三、在线笔记开发应用

1.介绍

2.代码

1. 笔记列表组件 (NoteList.vue)

2. 添加/编辑笔记模态框组件 (NoteModal.vue)

3. 主应用组件 (App.vue)

3.总结


一、任务管理应用

1.介绍

开发一个简单的任务管理应用,其中包含任务列表和添加任务的功能。我们可以使用 Vue.js 来构建这个应用,并将其组件化。

2.代码

1. 任务列表组件 (TaskList.vue)
<template><div><h2>任务列表</h2><ul><li v-for="(task, index) in tasks" :key="index">{{ task }}</li></ul></div>
</template><script>
export default {props: {tasks: Array // 接收任务数组}
}
</script>
2. 添加任务组件 (AddTask.vue)
<template><div><input type="text" v-model="newTask" placeholder="输入新任务"><button @click="addTask">添加任务</button></div>
</template><script>
export default {data() {return {newTask: '' // 存储新任务}},methods: {addTask() {if (this.newTask.trim() !== '') {this.$emit('add', this.newTask); // 发送新任务到父组件this.newTask = ''; // 清空输入框}}}
}
</script>
3. 应用入口组件 (App.vue)
<template><div><task-list :tasks="tasks"></task-list><add-task @add="addTask"></add-task></div>
</template><script>
import TaskList from './components/TaskList.vue';
import AddTask from './components/AddTask.vue';export default {components: {TaskList,AddTask},data() {return {tasks: ['完成Vue.js教程', '开始构建应用']}},methods: {addTask(task) {this.tasks.push(task); // 添加新任务到任务列表}}
}
</script>
4. 主入口文件 (main.js)
import Vue from 'vue';
import App from './App.vue';new Vue({render: h => h(App)
}).$mount('#app');

 3.效果

初始效果

使用效果

4.总结

在这个示例中,我们创建了一个简单的任务管理应用。任务列表组件用于显示任务列表,添加任务组件用于添加新任务。在应用入口组件中,我们将这两个组件组合在一起,并通过 props 和事件进行通信。通过这种方式,我们实现了组件化开发,使得应用的各个功能模块独立、可重用和易于维护。

二、购物车

1.介绍

  1. 显示商品列表
  2. 将商品添加到购物车
  3. 显示购物车中的商品列表
  4. 计算购物车中商品的总价

2.代码

1. 商品列表组件 (ProductList.vue)
<template><div><h2>商品列表</h2><ul><li v-for="product in products" :key="product.id">{{ product.name }} - ¥{{ product.price }}<button @click="addToCart(product)">添加到购物车</button></li></ul></div>
</template><script>
export default {data() {return {products: [{ id: 1, name: 'iPhone', price: 999 },{ id: 2, name: 'iPad', price: 799 },{ id: 3, name: 'MacBook', price: 1299 }]};},methods: {addToCart(product) {this.$emit('add-to-cart', product);}}
};
</script>
2. 购物车组件 (Cart.vue)
<template><div><h2>购物车</h2><ul><li v-for="item in cart" :key="item.product.id">{{ item.product.name }} - ¥{{ item.product.price }} x {{ item.quantity }}</li></ul><p>Total: ¥{{ total }}</p></div>
</template><script>
export default {props: {cart: Array},computed: {total() {return this.cart.reduce((total, item) => total + (item.product.price * item.quantity), 0);}}
};
</script>
3. 主应用组件 (App.vue)
<template><div><product-list @add-to-cart="addToCart"></product-list><cart :cart="cart"></cart></div>
</template><script>
import ProductList from './components/ProductList.vue';
import Cart from './components/Cart.vue';export default {components: {ProductList,Cart},data() {return {cart: []};},methods: {addToCart(product) {const existingItem = this.cart.find(item => item.product.id === product.id);if (existingItem) {existingItem.quantity++;} else {this.cart.push({ product, quantity: 1 });}}}
};
</script>

3.总结

在这个应用中,我们将商品列表和购物车拆分成两个单独的组件,并使用 props 和事件来进行通信。主应用组件 App.vue 作为整个应用的入口,负责管理购物车状态,并将商品列表和购物车组件组合在一起。

三、在线笔记开发应用

1.介绍

  1. 显示笔记列表
  2. 添加新笔记
  3. 编辑笔记
  4. 删除笔记

2.代码

1. 笔记列表组件 (NoteList.vue)
<template><div><h2>笔记列表</h2><ul><li v-for="note in notes" :key="note.id">{{ note.title }}<button @click="editNote(note)">编辑</button><button @click="deleteNote(note.id)">删除</button></li></ul><button @click="showAddNoteModal">添加笔记</button></div>
</template><script>
export default {props: {notes: Array},methods: {editNote(note) {this.$emit('edit-note', note);},deleteNote(noteId) {this.$emit('delete-note', noteId);},showAddNoteModal() {// 显示添加笔记的模态框}}
};
</script>
2. 添加/编辑笔记模态框组件 (NoteModal.vue)
<template><div v-if="showModal"><h2>{{ modalTitle }}</h2><input type="text" v-model="noteTitle"><textarea v-model="noteContent"></textarea><button @click="saveNote">保存</button><button @click="closeModal">取消</button></div>
</template><script>
export default {props: {showModal: Boolean,modalTitle: String,noteTitle: String,noteContent: String},methods: {saveNote() {this.$emit('save-note', { title: this.noteTitle, content: this.noteContent });this.closeModal();},closeModal() {this.$emit('close-modal');}}
};
</script>
3. 主应用组件 (App.vue)
<template><div><note-list :notes="notes" @edit-note="editNote" @delete-note="deleteNote"></note-list><note-modal :show-modal="showModal" :modal-title="modalTitle" :note-title="noteTitle" :note-content="noteContent"@save-note="saveNote" @close-modal="closeModal"></note-modal></div>
</template><script>
import NoteList from './components/NoteList.vue';
import NoteModal from './components/NoteModal.vue';export default {components: {NoteList,NoteModal},data() {return {notes: [],showModal: false,modalTitle: '',noteTitle: '',noteContent: ''};},methods: {editNote(note) {this.showModal = true;this.modalTitle = '编辑笔记';this.noteTitle = note.title;this.noteContent = note.content;},deleteNote(noteId) {// 根据 noteId 删除笔记},saveNote(noteData) {// 保存笔记数据this.closeModal();},closeModal() {this.showModal = false;this.modalTitle = '';this.noteTitle = '';this.noteContent = '';}}
};
</script>

3.总结

  1. 用户身份认证:允许用户注册账号并登录,以便他们可以保存和管理自己的笔记。

  2. 笔记管理:用户可以创建、查看、编辑和删除笔记。每个笔记包括标题、内容、创建时间和最后修改时间等信息。

  3. 笔记分类:用户可以为笔记添加标签或分类,以便更好地组织和管理笔记。

  4. 搜索功能:提供搜索功能,使用户可以快速查找到需要的笔记。搜索可以根据标题、内容、标签等进行过滤。

  5. 实时同步:支持多端同步,用户在任意设备上创建或编辑的笔记会自动同步到其他设备上。

  6. 安全性:保护用户数据的安全,使用加密技术存储用户的账号信息和笔记内容,确保用户隐私不被泄露。

  7. 用户体验:界面简洁友好,操作简单直观,提供良好的用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1410217.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Web APIs 学习归纳6--- BOM浏览器对象

前面几节主要针对DOM进行了学习&#xff0c;现在开始新的内容的学习---DOM浏览器对象。 DOM是更注重页面&#xff08;document&#xff09;内容的设计&#xff0c;但是BOM不仅限于页面&#xff08;document&#xff09;的设计&#xff0c;而是更加全面包括页面的刷新&#xff0…

【数据结构】:链表的带环问题

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 链表的带环问题在链表中是一类比较难的问题&#xff0c;它对我们的思维有一个比较高的要求&#xff0c;但是这一类…

拌合楼管理系统(十六)c#如何实现点击同时启动两个窗体,并且窗体全部关闭后才退出程序

前言&#xff1a; 好长时间没有再写博文了&#xff0c;最近项目有个需求&#xff0c;无人值守程序需要一个client端&#xff0c;主要实现两个功能&#xff0c;一个是显示安装的四个监控的画面&#xff0c;一个是显示地磅称重数量和车牌列表等一些信息。今天主要解决如何显示两个…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作&#xff0c;今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作&#xff0c;有助于更换理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

【目标检测】DEtection TRansformer (DETR)

一、前言 论文&#xff1a; End-to-End Object Detection with Transformers 作者&#xff1a; Facebook AI 代码&#xff1a; DEtection TRansformer (DETR) 特点&#xff1a; 无proposal&#xff08;R-CNN系列&#xff09;、无anchor&#xff08;YOLO系列&#xff09;、无NM…

从一到无穷大 #25 DataFusion:可嵌入,可扩展的模块化工业级计算引擎实现

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言架构总览与可扩展性Catalog and Data SourcesFront End逻辑计划与逻辑计划优化器…

美国零售媒体(广告业)指南:快速增长、不断扩展的业态和新兴机遇

Guide to retail media: Rapid growth, expanding formats, and emerging opportunities --- 零售媒体如何通过CTV和其他合作伙伴关系向上发展 原文作者&#xff1a;Sara Lebow | 2024年2月16日 整理编辑&#xff1a;数字化营销工兵 I 2024年5月2日 ​​​​​​​ &#…

Agent AI智能体:如何借助机器学习引领科技新潮流

文章目录 &#x1f4d1;前言一、Agent AI智能体的基本概念二、Agent AI智能体的技术进步2.1 机器学习技术2.2 自适应技术2.3 分布式计算与云计算 三、Agent AI智能体的知识积累3.1 知识图谱3.2 迁移学习 四、Agent AI智能体的挑战与机遇4.1 挑战4.2 机遇 小结 &#x1f4d1;前言…

python学习笔记B-15:序列结构之字典--字典的创建与删除

字典的创建与删除方法&#xff1a; import random #第1种创建方式 d {10:"cat", 20:"dog", 30:"monkey"} print(d) #第2种创建方式 lst1 [10,20,30] lst2["cat","dog","monkey"] d zip(lst1,lst2) print(dict…

DRF解析器源码分析

DRF解析器源码分析 1 解析器 解析请求者发来的数据&#xff08;JSON&#xff09; 使用 request.data 获取请求体中的数据。 这个 reqeust.data 的数据怎么来的呢&#xff1f;其实在drf内部是由解析器&#xff0c;根据请求者传入的数据格式 请求头来进行处理。 drf默认的解…

还在愁自己该学什么编程?适龄标准来啦(6到14岁的同学看过来哦)

文章目录 前言一、6岁以下1.推荐2.软件 二、6至10岁1.推荐2.软件&#xff08;1&#xff09;6-8:Nemo编程——Scratch图形化编程&#xff08;2&#xff09;8-10岁&#xff1a;Scratch编程——Python编程 三、10岁以后1.推荐2.软件&#xff08;1&#xff09;Python&#xff08;2&…

【二等奖水平论文】2024五一数学建模C题22页保奖论文+22页matlab和13页python完整建模代码、可视图表+分解结果等(后续会更新)

一定要点击文末的卡片&#xff0c;那是资料获取的入口&#xff01; 问题分析 2.1 问题一分析 对于问题一&#xff0c;干扰信号分析&#xff0c;分析干扰信号并识别干扰信号的时间区间。首先对数据集进行数据清洗&#xff0c;判断其异常值以及缺失值。利用matlab的find函数判…

力扣刷题第0天:只出现一次的数字

目录 第一部分:题目描述 ​第二部分:题目分析 第三部分:解决方法 3.1思路1: 双指针暴力求解 3.2 思路2&#xff1a;异或运算 第四部分:总结收获 第一部分:题目描述 第二部分:题目分析 由图片分析可得&#xff0c;该题目对算法时间复杂度有一定的要求时间复杂度为O(N)&a…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 &#xff1f;二、编写Shell脚本1. 基本规则2. shell 变量&#xff08;1&#xff09;创建变量&#xff08;2&#xff09;引用变量&#xff08;3&#xff09;删除变量&#xff08;4&#xff09;从键盘读取变量&#xff08;5&#xff09;特殊变…

《QT实用小工具·五十二》文本或窗口炫酷有趣的滚动条——果冻条

1、概述 源码放在文章末尾 该项目实现了文本或窗口纤细的滚动条——果冻条 一个可以像弓弦一样拉出来&#xff0c;并且来回弹动的普通滚动条。 思路为此&#xff0c;但发现实际效果更像条状果冻&#xff0c;并且略有谐音&#xff0c; 故&#xff0c;称之为——“果冻条”&am…

C/C++开发环境配置

配置C/C开发环境 1.下载和配置MinGW-w64 编译器套件 下载地址&#xff1a;https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 下载后解压并放至你容易管理的路径下&#xff08;我是将其放在了D盘的一个software的文件中管理&#xff09; 2.…

IBM FlashSystem 5300入门级全闪存存储平台解读

IBM FlashSystem 5300作为一款面向入门级市场的全闪存存储平台&#xff0c;其发布标志着IBM在满足不同规模企业对于高性能、高性价比存储解决方案需求方面迈出了重要一步。以下是从技术角度出发&#xff0c;结合市场对比进行的客观分析&#xff1a; 技术亮点解析 高性能与高密度…

C语言 | Leetcode C语言题解之第64题最小路径和

题目&#xff1a; 题解&#xff1a; int minPathSum(int** grid, int gridSize, int* gridColSize) {int rows gridSize, columns gridColSize[0];if (rows 0 || columns 0) {return 0;}int dp[rows][columns];dp[0][0] grid[0][0];for (int i 1; i < rows; i) {dp[i…

启发式搜索算法1 - 最佳优先搜索算法

启发式搜索算法有什么优势&#xff1f; 对于复杂问题的盲目搜索&#xff0c;常用广度优先搜索和深度优先搜索这两种盲目搜索算法&#xff0c;极大极小值和Alpha-beta剪枝算法是在盲目搜索过程中&#xff0c;通过剪枝避开一些不可能的结果&#xff0c;从而提高效率。 如果搜索…

实习面试之算法准备:数学题

目录 1 技巧2 例题2.1 Nim 游戏2.2 石子游戏2.3 灯泡开关 1 技巧 稍加思考&#xff0c;找到规律 2 例题 2.1 Nim 游戏 你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。 你们轮流进行自己的回合&#xff0c; 你作为先手 。 每一回合&#xf…