我们开发了一款待办事项分享平台——待办库(Todo Store)

从另一个方向思考

说起“待办事项”或Todo-List,由于这类型的App基本没有什么技术含量,开发周期短,面向用户广泛,所以各个平台都有很多这类软件,这些软件的核心功能无非就那几个:快速添加待办事项、多设备同步、复杂的统计功能、美观的UI、重复提醒、高级点的还有团队协作、公司内部行事历之类的。
还有一个方向值得探讨,那就是共享知识库。有时候我们使用待办事项App,是因为我们已经认识到有一些事情需要去做,我们会把要做的事情列出来,而在一些特定的场合下,不一定能够想到那么周到,比如说养猫,让你列出养猫所需要准备的事情,对于经常养猫的人来说,你可能会脱口而出:猫粮、猫砂、猫窝、猫碗、打疫苗、绝育、驱虫…而对于养猫新手来说,他可能就不会想得那么周到。在一些较为专业的领域,就拿我们技术人员经常接触的来说吧,建设网站、域名备案要准备哪些事情?小程序审核并上架要准备哪些材料?林林总总的条目,最好是一开始就清除每一步要做什么,要准备什么。这些事情,都要靠自己花时间去百度、翻文档,整理出来,或者见机行事,到时候再准备,往往会浪费时间。如果我们把这些事情,全部列出来,分享到一个共享平台上面,只要搜索,就能列出所有的待办事项和步骤,岂不美哉?这就是我们今天要介绍的——待办事项分享平台。

链接

App Store - 待办库
小程序-敬请期待
安卓-敬请期待

功能介绍

搜索

既然我们是一个分享平台,搜索功能是必不可少的,我们实现了搜索官方合集、待办或两者同时搜索,后台使用Elasticsearch提高检索效率,同时我们还添加了二维码识别功能,可以扫码由本应用产生的二维码快速进入相应的待办事项列表。
在这里插入图片描述

官方合集

我们会定期整理出好评度较高的待办事项列表并添加到官方推荐中:

在这里插入图片描述

支持树状关系

我们考虑到,对于一个待办事项来说,他总会有更小的子待办,比如说去政务中心办事,需要准备一份材料,而材料上需要签名、盖章之类的,这样就形成了一个二层结构,我们支持无限层级的子结构。
在这里插入图片描述

一键添加到日历

挑选好你所需要的待办事项之后,你可以将其一键添加到手机日历中,支持时间、重复、优先度、重要度等。
在这里插入图片描述

分享自己的经验

如果你觉得有什么自己的经验可以分享出来,就使用发布功能,支持设置父级、标题、备注、图标、重要性、标签、优先级、开始时间、结束时间、重复、结束重复、子待办…
在这里插入图片描述

查看自己的数据

在这里插入图片描述

一些技术上的

结构

  • iOS App:SwiftUI
  • 后台:PHP

使用内嵌网页登录

此App没有做登录页面,而是采用内嵌网页登录方案,此方案有以下优点:

  • 前端无版本限制,所有版本都可以登录
  • 后台可随时修改登录逻辑
  • 无需修改前端即可在后期支持更多的第三方登录

此方案的逻辑如下:

Created with Raphaël 2.3.0 加载登录页面 检测页面跳转 检测cookie是否登录成功 完成 yes no

在这里插入图片描述

生成海报

实际上这个功能实现起来不容易,其一是因为SwiftUI这个语言出现得太晚,可参考的资料不多:

SwiftUI将特定的view(非UIView)转为图片并分享(截图海报功能)

在这里插入图片描述
在这里插入图片描述

不足与展望

  • 完善公共Api
  • 优化动画
  • 优化错误提示
  • 优化UI
  • 推出商用版本(公司内部版)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我是语言模型AI,无法为您编写代码,但我可以提供思路和指导,希望对您有帮助。下面是一个待办事项页面的示例代码: 首先,我们需要安装 Vue.js 和 Element UI: ```bash npm install vue npm install element-ui npm install vuex ``` 然后,我们创建一个 TodoList 组件,它包含一个输入框和一个待办事项列表: ```html <template> <div class="todo-list"> <el-input placeholder="请输入待办事项" v-model="newTodo" @keydown.enter.native="addTodo"></el-input> <el-list v-if="todos.length" v-for="(todo, index) in todos" :key="index"> <el-list-item> <span>{{ todo }}</span> <el-button type="text" icon="el-icon-delete" @click="deleteTodo(index)"></el-button> </el-list-item> </el-list> <p v-else>暂无待办事项</p> </div> </template> ``` 在这里,我们使用了 Element UI 的 el-input 和 el-list 组件。我们将输入框的值绑定到了组件的 data 属性中的 newTodo 变量,并且在用户按下 Enter 键时调用 addTodo 方法添加待办事项待办事项列表使用了 v-for 指令渲染,每个待办事项都有一个删除按钮,点击按钮时调用 deleteTodo 方法。 接下来,我们在组件的 script 标签中定义 data 和 methods: ```js <script> import { mapActions, mapGetters } from 'vuex' export default { data () { return { newTodo: '' } }, computed: { ...mapGetters(['todos']) }, methods: { ...mapActions(['addTodo', 'deleteTodo']) } } </script> ``` 这里,我们使用了 Vuex 中的 mapActions 和 mapGetters 辅助函数,来将 store 中的数据和方法映射到组件的 props 和 methods 中。 最后,我们需要将 TodoList 组件注册到 Vue 实例中,并且创建一个 store 对象来管理应用的状态: ```js import Vue from 'vue' import Vuex from 'vuex' import TodoList from './TodoList.vue' Vue.use(Vuex) const store = new Vuex.Store({ state: { todos: [] }, mutations: { addTodo (state, todo) { state.todos.push(todo) }, deleteTodo (state, index) { state.todos.splice(index, 1) } }, actions: { addTodo ({ commit }, todo) { commit('addTodo', todo) }, deleteTodo ({ commit }, index) { commit('deleteTodo', index) } }, getters: { todos: state => state.todos } }) new Vue({ render: h => h(TodoList), store }).$mount('#app') ``` 在这里,我们使用了 Vuex 的 state、mutations、actions 和 getters 来管理应用的状态。我们在 state 中定义 todos 数组来存储待办事项,然后使用 mutations 中的 addTodo 和 deleteTodo 方法来添加和删除待办事项。在 actions 中,我们将 addTodo 和 deleteTodo 方法封装成了异步的操作,并且在调用时使用了 commit 方法来触发 mutations 中的方法。最后,我们将 store 对象注册到 Vue 实例中,使得组件可以通过 mapActions 和 mapGetters 辅助函数来访问 store 中的数据和方法。 这样,我们就完成了一个简单的待办事项页面。当用户输入待办事项时,它会被添加到列表中,当用户点击删除按钮时,它会从列表中删除。所有的状态管理都交给了 Vuex 来处理,使得应用更加有条理和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值