Vue.js——一个todolist的小尝试

基于Vue的新拟态ToDoList(待办事项添加) 简介 基于Vue半全家桶的新拟态板ToDoList,一个todolist而已,用几乎Vue全家桶是不是有点小题大做,是的,必须的,因为要巩固的知识,并且功能也相应的增加了,你可以打卡想看的书或者电影,以及小小的改变了todolist的相应逻辑,当天未完成的ToDo会累计到待完成任务,看着一天天积下来的待办,多多少少会减少你的惰性吧(希望目的达到),从而激发你一天满满的动力哈哈哈 注意:所使用的是localStorage存储数据(没用服务器),所以,如果你一不小心用了什么清垃圾软件或者手动清掉浏览器数据的话, 阅读详情

前言:

至此为止,还仍然是跟着Vue.js的官方文档,对照网络上的一些教程进行较为分散的学习。大部分还停留在理论性的表面学习与对于官方文档中示例代码的理解。因为缺少实战,还是有些云里雾里。所以这一篇,准备对Vue来一个小小的实战。

演示示例

todolist-demo

实现功能:

  1. 实现浏览器的本地存储,刷新页面后获取数据缓存。
  2. 在每个item前显示序号,实现单个item的finish,delete。
  3. 实现一键删除所有items。

虽然说所实现的功能非常简单,只是一个很简单的数组遍历与显示。但对于我这个小白来说还是遇到了各种奇奇怪怪的问题。尤其是Vue1.0和2.0的变更,踩了很多坑。
下面列举一下所遇到的问题以及我的尝试过程。

1.关于Vue里的数组循环遍历

在这个demo里,通过建立数组,将todolist中的每一个item通过this.items.push()加入到数组中。
并通过v-for按照顺序排列显示。
刚开始的代码是这样的

<ul>
  <li v-for='item in items'>
    <h3 @mouseenter='itemEnter(item)' @mouseleave='itemLeave(item)'>
      <p class="item-label" :class="{'line-through':item.checked}">{ { $index+1 } } . { { item.label } }</p>
      <label class='item-status' v-if='!item.checked' @click='item.checked=true'>Finished</label>
      <p class="item-delete" v-if='item.showDelete' @click='deleteClick(index)'>delete</p>
    </h3>
  </li>
</ul>

会发现虽然Vue不会报错,但是在input之后,每一个item会显示成NaN.itemName,并且按下delete后,todolist删除的永远是排列在最上面的那个item。

错误原因:

  1. v-for使用有误。
    我使用了{ { $index + 1 } } 来显示每一个item的序号,但在v-for指令中并未引入index这个第二参数。

    在 v-for 块中,我们拥有对父作用域属性的完全访问权限。v-for 还支持一个可选的第二个参数为当前项的索引。也可以用 v-for 通过一个对象的属性来迭代。更可以通过index,key,item分别对对象的索引,键名,数据值进行遍历。

    <div v-for="(value, key, index) in object">
        { { index } }. { { key } }: { { value } }
    </div>
    
  2. $index使用错误
    在Vue 1.x 中,$index表示数组的索引值,但在 Vue 2.x 中,该变量已被迁移。

    已经移除了 $index 和 $key 这两个隐式声明变量,以便在 v-for 中显式定义。这可以使没有太多 Vue 开发经验的开发者更好地阅读代码,并且在处理嵌套循环时也能产生更清晰的行为。

    除此之外,还有v-for便利对象时的参数变更

    当包含 key 或者 value 时,之前遍历对象的参数顺序是 (key/index, value)。现在是 (value, key/index),来和常见的对象迭代器 (例如 lodash) 保持一致。

2.使用localStorage存储todolist

对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStorage

  • sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载
  • localStorage(长期存储) :与 sessionStorage 一样,但是浏览器关闭后,数据依然会一直存在

示例代码如下

//store.js
...
  save: function(items){
    window.localStorage.setItem(STORAGE_KEY,JSON.stringify(items));
  }
  ...

  //app.vue
  ...
  watch:{
    items: {
      handler:function(items){
        Store.save(items)//每次加入了新的item之后,都会save一次。
      },
      deep: true
    }
  }

3.对于css的各种问题

对于我自己来说,CSS是学习前端时的一大难题,虽然从理论上来说,css并没有什么难度,只要仔细阅读了文档,熟悉之后,应该是得心应手才对。但是CSS中的属性实在是太多,并且需要很大的耐心一次一次调试。我自己本身对CSS不够熟悉,再加上总是有问题马上查资料,并没有静下心来仔细阅读文档,所以在这里花费了很长时间。

总结

此次demo,虽然是个简单的不能再简单的小实例,但也认识到了自己的短板。一个是对最基础的属性与语法不熟悉,这一部分应该静下心来多多学习巩固;另一个是在遇到问题时,总是会急于针对这一个小问题查找答案,结果就是查询的过程比较繁杂,会花费较多时间。所以在以后遇到问题的时候,应该先查询相关文档,在自己对相关知识点已经明白了之后再去针对小问题查找答案。

【ODOO OWL】第四课 标准JavaScript项目实现TodoList 第三课 标准JavaScript项目实现TodoList 阅读详情

相关推荐

SAP MM自动化进阶:STO交货单自动创建的配置与优化

本文深入解析了SAP MM模块中实现公司间库存调拨订单(STO)交货单自动创建的完整配置流程与优化策略。通过激活自动交货与绑定发货点两大核心配置,打通自动化链路。重点探讨了如何集成ATP可用性检查以智能处理库存不足等异常场景,确保自动化流程的可靠性与业务贴合度,并提供了进阶监控与问题排查方法,助力企业显著提升供应链效率。

weixin_29206669的博客 124

todolist实现刷新关闭页面内容不变,下次打开时上次的内容仍然存在

todolist 今天做了一个Vue的小程序 分享一下

前后端杂货铺 601

ffmpeg中av_read_frame阻塞的原因与解决方案

最近用到ffmpeg,想要av_read_frame立即返回,但是看网上的博客,都没有详细的解说,那就自己看源码。 两种方法: 设置回调打断函数和设置超时 超时,但是如果只设置该参数,依然会在av_read_frame中阻塞, av_dict_set(&inputDic, "stimeout", "2*1000*1000", 0); // milliseconds //打断回调 m_avformatCtx->interrupt_callback.callback = interru

weixin_43360707的博客 1万+

Vue3+vite+ts实现TodoList(详)

呜呜呜这个ToDoList真的很好看

weixin_73810008的博客 954

YOLOv11改进策略【Neck】| 替换RT-DETR中的CCFF跨尺度特征融合颈部结构,优化计算瓶颈与冗余问题

RT-DETR中的CCFF模块用于优化多尺度特征融合,解决传统方法的计算瓶颈与冗余问题,提升模型速度与精度,以适应实时检测需求。

Limiiiing的博客 1830

【QGIS】软件下载安装及GIS4WRF插件使用

【QGIS】软件下载安装及GIS4WRF插件使用

WW、forever的博客 1800

VUE-TODULIST(失败案例演示)

序:这是一个使用TODOLIST的反面教程!完全没明白怎么回事,繁琐而又闹心! //这个是APP.vue文件里面的! <template> <div class="todo-container"> <div class="todo-wrap"> <Header/> //这里有个列表,代表作的事情! <List :todos="todos"/> <Footer/

weixin_45799003的博客 219

第1讲|AI产品经理全景图谱:不是“会用AI工具”,而是能对AI产品结果负责

本文从岗位本质出发,系统拆解 AI 产品经理的职责、岗位类型与能力模型,帮助读者理解 AI PM 与传统 PM 的核心差异,明确自己适合的转型方向,并建立“对 AI 产品结果负责”的产品认知。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1016

Vue 数组对象修改时被替换

vue数组对象修改时不能添加进去新的对象,而是被替换掉了

weixin_61000863的博客 778

使用 MATLAB/Simulink 对风光互补发电系统进行建模

随着全球对清洁能源的需求日益增长,风力发电和光伏发电作为两种主要的可再生能源形式,在电力供应中的占比越来越高。然而,由于风电和光伏的间歇性和不确定性,单独依赖其中任何一种能源都会给电网带来挑战。因此,风光互补发电系统(Wind-PV Hybrid System)应运而生,通过合理配置风力发电机和光伏电池板的数量,可以有效提高系统的稳定性和可靠性。此外,为了确保整个电力系统的安全稳定运行,还需要研究风光互补发电系统与主网之间的协调调度策略。本教程将详细介绍如何使用。

amy_mhd的博客 118

执行任务赚积分

接下来N行,每行两个空格分隔的整数(SLA和V),SLA表示任务的最晚处理时间,V表 示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第2个时间单位内,处理任务4,获得5个积分。输入描述:第一行为一个数N,表示有N个任务,1

面试高手的博客 4695

vuejs入门:简单的ToDoList

一、工具 具备html、css、js的基础知识 chrome浏览器 vscode文本编辑器 vuejs的官方文档 二、我理解的vuejs vue(读/vju:/,与view同音)是一套用于构建用户界面的js框架,它是轻量级的,易上手(作为一个前端小白本人用事实证明确实易上手) 官方提供了webpack等脚手架工具,提供了一整套前端集成框架,所有依赖都已经包办,只需要下载好然后根据要求在...

Yvettre的博客 3188

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box。

成长需要沉淀。 397

使用TS写一个Vue版todolist

说实话,之前虽然简单学习过TS,但是一直没在项目中使用过。今天,就尝试了一把,虽然一开始使用有各种不适应,但是不得不说,使用TS写代码确实比用JS写会少很多bug。 话不多说,先了解一下TS是什么东东? TypeScript是什么? TS是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TS有什么好处? TypeScript能从可维护性、...

guxin_duyin的博客 1302

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

学好vue需要多久,vue.js需要学多久

新手学web前端开发的小技巧:第1步,学前预习,时长1个小时,分为3次预习,这步需要你拿到即将要学习的这块内容的预习资料,ppt也好,代码也好,首次预习,时间10分钟左右,快速的预览一下大致会讲点什么内容,再次预习,时间20分钟左右,细看相关资料,最后一次预习,时长30分钟,把自己前2次看懂和看不懂的东西,自己用相关编辑器操作一下。第2步,学习中,学习前的预习已经让你有目标的去学习,去吸收知识点了,学习中的你需要做到的就是认真听,做好笔记,有疑问的地方立即提问并解决掉,有想法的多沟通。

wenangou的博客 8610

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TodoList案例

在vue脚手架的基础上做案例, 在src文件夹下 新建文件main.js,App.vue。新建文件夹components,里面新建Header.vue,List.vue,Item.vue,Footer.vue,(分别代表不同的组件)编写组件的结构,样式。 这里面的List相当于Item的父组件 组件之间的层级结构图 组件使用步骤 1、引入 2、注册 分别为全局注册和局部注册 3、写组件标签 main.js // 引入Vue import Vue from 'vue'; // .

m0_45219210的博客 2086

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

用Vue实现TodoList,并使用localStorage

TodoList项目总结 主要功能: 增加Todo项 删除Todo项 修改Todo项 筛选Todo项 清除已完成项 使用localStorage存储 支持回车修改、添加Todo项 项目设计图 项目结构: ├── node_modules/ # 依赖包,通常执行npm i会生成 ├── public/ ├── src/ # 源码目录(开发的项目文件都在此文件中写) │ ├── assets/

一只蒻蒻的博客 445

手摸手从零到一开发一个灵活的Todolist便签项目

带你从零开始开发一个完整的效率工具,详细的开发思路配上完整的源码,看完就可以自己动手完成一整个项目的开发,手摸手系列文章,看了就会!!!

青柠的博客 2172

七周七种前端框架四:Vue.js 构建大型应用

真正的模块化前端模块化很早就开始了,无论是 require.js,browserify 进行模块化打包, 还是 Angular 进行依赖注入,我们都可以把JS代码分成一个个小的模块并组装起来。然后我们还会通过 less 或者 sass 来把CSS文件也拆成一个个小的模块来写,甚至我们在CSS代码中感受到了 封装,继承,多态 等面向对象的特性。然而,在 webpack 出来之前,我们所谓的模块化根本不

言川的博客 9735

Vue 3 入门实战:从组合式API到TodoList应用开发

现代前端开发中,响应式编程和组件化是构建交互式用户界面的核心概念。其原理在于通过数据绑定和依赖追踪,实现数据变化时视图的自动更新,从而提升开发效率和用户体验。这一技术价值在于简化了状态管理,使得代码更易维护和复用。在应用场景上,它广泛用于构建单页面应用、管理后台和动态网站等。Vue 3作为主流框架,通过引入组合式API和基于Proxy的响应式系统,提供了更灵活的逻辑组织方式。本文以TodoList实战为例,结合Vite工具链,演示了如何使用ref、reactive等核心API,以及组件通信模式,帮助开发者快

weixin_30564901的博客 333

vue+webpack实现一个todolist

一,webpack 的基本配置 地址:https://gitee.com/ling-xu/vue-webpack/tree/master/ 分支:init 第一步:项目的初始化 安装vue和webpack npm install webpack webpack-cli -D npm install vue vue-loader npm install css-loader 安装相关的依赖: npm install postcss 第二步:新建app.vue文件 但是,它作为vue的一个组件,它是

weixin_42349568的博客 263

尝鲜vue3.x+typeScript(toDolist)案例

尝鲜vue3.x+typeScript(toDolist)案例 是借鉴了大佬的demo代码,然后在其基础上进行改写了一些方法。就是感受了下ts的一些语法以及vue3.x的一些新特性。 参考博客:https://blog.csdn.net/qq_44812835/article/details/113195479 拉下来学习了下,简单尝试解读一下代码逻辑。大佬还用了数据库,node,我就是简单的想看下vue3.x新的一些特性以及使用方法,所以就直接屏蔽掉了接口调用那一块,改为localStorage+vueX

_小郑有点困了的博客 681

拥抱Vue3 (五) 组件通信 provide与inject 附Vue3版本TodoList源代码

看完了前面四篇文章后我们就可以尝试做一下传统的TodoList案例了。接下来的内容基于你曾经写过或者听说过TodoList这个案例,如果还没有手动实现过,建议先试试在Vue2中练练手。我认为这一个案例的经典程度不亚于原生js写轮播图。 创建静态样式、抽离组件等过程在这里就先跳过,这些内容和Vue2无甚差别,在文章的最后我将贴出全部代码。 当写到todo-item组件中根据checkbox修改待办/完成状态时,按照传统的思路,我们会在数据的拥有者组件中放置todos数据,然后创建一个函数,将函数名传递给子

黑猫几绛的博客 483

从零开始:使用Vue3构建你的第一个Todo List应用

在现代的前端开发中,Vue.js作为一款流行的前端框架,有着极大的用户基础和众多的应用实例。特别是Vue 3引入的Composition API和setup语法糖,让我们在构建组件时更加灵活和简洁。在本文中,我们将引导你从零开始,构建一个简单的Todo List应用,并使用Vue 3的setup语法糖来实现功能。

有我更精彩的博客 1608

Vue入门学习笔记:TodoList(十一):vue-cli的简介与使用

目录: Vue入门学习:TodoList(一):HelloWorld Vue入门学习:TodoList(二):挂载点、模板、实例 Vue入门学习:TodoList(三):实例中的数据、事件和方法 Vue入门学习:TodoList(四):属性绑定和双向数据绑定 Vue入门学习:TodoList(五):计算属性和侦听器 Vue入门学习:TodoList(六):v-if, v-show, v-for指令 Vue入门学习:TodoList(七):todolist功能开发 Vue入门学习:TodoList(八):t.

... 674

vue实现ToDoList待办事项/清单

1、这个功能运用的知识点比较多,computed计算,watch监听,directives自定义指令和methods定义事件,还有一些属性绑定,列表渲染,表单绑定指令,按键修饰符,表单修饰符等... 2、部分知识点 3、效果展示 功能说明: 1.在头部输入框内输入内容按回车键即可待办事项 2.单击待办项的前面选择框可实现未完成或已完成切换 3.双击待办内容可以修改里面的内容,修改完成后点击空白处或enter键都可实现修改,如果不想修改按Esc键可恢复初始内容。 4.单击待办

努力变好 5941
上一篇: Vue.js框架学习笔记之三
下一篇: 利用Vue.js2.0实现购物车和地址选配功能
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值