背景

TodoList应用,是面向零基础同学的快速入门应用。你可以一行代码完成TodoList的本地化搭建,如果你想要网络同步你的Todo数据,在多个设备之间实时同步共享,云开发构建仅需100行。

体验地址:https://acc.cloudbase.vip/todo/

此项目适用于零基础用户体验使用,通过一定的模块手段集约了整体编码。如果想要深入学习请掌握js、html、css等编程技术,自主解析模块中的代码(均为入门原生代码)

如果你不想执行以下步骤翻看代码,可以直接点击下方按钮一键部署

一、构建本地化TodoList

在本地任意地方新建文本文件,在文件中填入如下内容:

<script src="https://acc.cloudbase.vip/todo/src/todo.js" charset="utf-8"></script>

保存,并将后缀改为html,命名为index.html【注意:mac用户推荐使用无格式文本编辑】

使用浏览器打开此html文件,浏览器显示如下,即为正常。

如此,你就通过一行代码完成了本地化Todo应用的构建。通过此应用,你可以回车新增一条待办,也可以以勾选已完成,修改事项内容,删除事项;当页面关闭再次加载时仍然保留待办事项。

二、将本地TodoList发布,给其他人使用

我们只在本地构建了这个应用网站,如何将这个应用分享给其他人呢?

我们需要将这个应用网站发布到云开发静态网站托管中

打开云开发控制台,新建一个按量计费环境(如果已有按量计费环境则直接使用,跳过此步)

按量计费环境创建完毕后,一般自动开通静态网站托管服务,如果未开通点击开通即可。

点击上传文件,将上一步的index.html选择上传

上传完毕后,点击上图配置信息中的【默认域名】,即可在公网环境下访问Todo应用网站。

默认域名可供您快速验证业务,如您需要对外正式提供网站服务,请绑定您已备案的自定义域名。

三、为Todo应用构建后台服务

以上一行代码实现的单一应用网站只能做到在本地进行Todo记录,当更换设备时,无法做到同步,接下来,我们来构建后台服务,实现同步需求。

打开云开发控制台,找到上一步操作的环境,打开数据库,新建todo集合,如下图所示:

打开环境-登录授权,开启邮箱登录,如下图所示:

开启后点击右边【配置发件人】,参考配置QQ邮箱进行配置。

随后,点击右边【应用配置】,填写一下应用名称,如下图所示

配置完成后,将你的云环境ID复制保存,填入下步骤代码中

打开之前本地构建的index.html,填充内容如下所示

<script src="https://acc.cloudbase.vip/todo/src/todo.js" charset="utf-8"></script>
<script src="https://acc.cloudbase.vip/todo/src/login_util.js" charset="utf-8"></script>
<script src="https://imgcache.qq.com/qcloud/tcbjs/1.10.8/tcb.js"></script>
<script>let uid = null;const app = tcb.init({env: "替换自己的云开发环境ID"})const auth = app.auth({persistence: "local"});const db = app.database();window.onload = function () {LO.init();TODO.init();}LO.Done = function () {uid = app.auth().hasLoginState().user.uid;db.collection('todo').doc(uid).get().then(res => {if (res.data.length == 0) {db.collection('todo').add({_id: uid,list: TODO.todo,time: new Date()}).then(res => {console.log(res);watchtodo();})}else {console.log(res);TODO.todo = res.data[0].list;TODO.todoinit();watchtodo();}})app.callFunction({name:'todo_getNumber'}).then(res=>{document.getElementById('model').innerHTML+=`<p class='bottom-des'>共${res.result}人使用云开发TODO</p>`})}TODO.itemChange = function (id, type, des) {if (type === 'add') {if (des != null) {app.uploadFile({cloudPath: `todo/${uid}/${TODO.todo[id].file}`,filePath: des}).then((result) => {console.log(result)TODO.todo[id].file = result.fileIDupdatetodo()});} else {updatetodo()}} else if (type === 'delete') {if (TODO.todo[id].file != null) {app.deleteFile({fileList: [TODO.todo[id].file]}).then((result) => {delete TODO.todo[id]console.log(result)updatetodo()});} else {delete TODO.todo[id]updatetodo()}} else {updatetodo()}}TODO.downLoadfile = function (file) {app.downloadFile({fileID: file})}function updatetodo() {db.collection('todo').doc(uid).update({list: db.command.set(TODO.todo),time: new Date()}).then(res => {}).catch(e => {console.log(e);})}function watchtodo() {db.collection('todo').where({ _id: uid }).watch({onChange: (snapshot) => {if (snapshot.msgType != "INIT_EVENT") {TODO.todo = snapshot.docs[0].list;TODO.todoinit();}},onError: (error) => {alert('远端数据库监听失败!');}});}
</script>

保存文件,重新上传至静态网站托管中,如此一个有后台服务的Todo应用便构建完成了,仍然打开配置信息中的【默认域名】(如果有缓存,可以在链接后加 ?123 等随机数),打开后如下图所示:

应用中引入的登录模块自动展示登录框,输入邮件地址和密码,如果未注册会直接发送注册邮件。

此时,前往邮箱中查看注册邮件,如下图所示:
点击验证链接,将跳转到云开发验证页,验证成功后,显示如下:

此时,返回应用网站,10s后按钮变为可点击状态,直接点击登录,即可登录成功,登录框消失。

之后,通过邮箱地址和密码即可完成之后登录。

如果你想展示多少人使用TODO应用,可以将项目目录functions里todo_getNumber文件夹上传为云函数

写在最后

本实战项目通过模块化方式构建,直接突出云开发的开发步骤,更加直观。如果你想探寻Todo模块的内容,可以自行解压缩读代码。

login_util模块,是作者构建的一个简易登录插件,可以实现简单的登录操作,提供自定义方法,默认是云开发的邮件登录方式,所以在无自定义时请保证邮件登录配置正确并打开。

todo.js暴露接口:

TODO.todo;             //待办事项内容json,可按照规则直接改变
TODO.todoinit();                    //刷新显示待办事项
TODO.itemChange(id,type,des);  //监听待办列表变化[id,类型,描述]
TODO.downLoadfile(file)             //下载文件触发,可以在上传时修改todo列表file的值

login_util简易登录窗口插件,默认邮件登录,暴漏接口:

LO.custom                         //是否自定义登录方法,默认为false为邮件登录LO.init()                         //初始化方法调用打开登录框,默认邮件登录时则会自动判断,如果登录则触发LO.done(),不会初始化登录框LO.done()                         //当登录完毕时触发,默认登录时可用,自定义无效LO.close()                        //关闭登录框LO.onClose()                      //监听关闭LO.onLogin(obj)                   //监听登录按钮,需LO.custom=true才可生效LO.setBtn(text,disable)           //设置登录按钮LO.setDes(text,style)             //设置描述

产品介绍

云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等serverless化能力,可用于云端一体化开发多种端应用(小程序,公众号,Web 应用,Flutter 客户端等),帮助开发者统一构建和管理后端服务和云资源,避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
开通云开发:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite
产品文档:https://cloud.tencent.com/product/tcb?from=12763
技术文档:https://cloudbase.net?from=10004
技术交流加Q群:601134960
最新资讯关注微信公众号【腾讯云云开发】

实战丨Web云开发项目—TodoList待办事项相关推荐

  1. 微信小程序云开发项目-个人待办事项-02今日模块开发

    上一篇: 微信小程序云开发项目-个人待办事项-01介绍 https://blog.csdn.net/IndexMan/article/details/124485626 模块开发步骤 本篇介绍今日模块 ...

  2. 实战丨用云开发快速构建最美AI毕业照小程序

    项目背景 为什么要做这个小程序 疫情原因,2020年的毕业季也不同了.很多毕业生没有举办正式的毕业典礼,也没有照毕业照,觉得这是人生的一大遗憾.为了弥补这一遗憾,我尝试用云开发快速实现一个云毕业照小程 ...

  3. cli3解决 ie11语法错误 vue_使用 VueCLI 3.x 快速搭建Vue + TS + Kbone + KboneUI + 云开发 项目...

    Vue CLI:一个基于 Vue.js 进行快速开发的完整系统.TS:TypeScript,一种由微软开发的开源.跨平台的编程语言.它是JavaScript 的超集,最终会被编译为 JavaScrip ...

  4. 视频教程-【三月】微信小程序云开发项目实战课程 - T3租机械-微信开发

    [三月]微信小程序云开发项目实战课程 - T3租机械 宁夏酷申科技有限公司技术总监,计算机专业毕业后一直从事技术开发和架构工作 袁永刚 ¥366.00 立即订阅 扫码下载「CSDN程序员学院APP」, ...

  5. 搭建开发环境——Python实战:Web App 开发 Day 01

    1. 背景介绍 Python 的功能十分强大,因其强大而丰富的开源包,让其可以实现高级爬虫,可以实现机器学习算法,可以应用到深度学习中,也可以开发Web App 项目. 本次的Python实战就是We ...

  6. 云开发项目如何管理资产下的设备?

    在开发 SaaS 应用前,开发者需要先在 涂鸦 IoT 开发平台 上创建云开发项目并进行必要的配置.下面我将为大家介绍管理资产的详细操作方法. 云开发支持以资产为维度,对不同资产下的设备进行权限分隔和 ...

  7. 【第三篇】微信小程序云开发项目总结

    上篇文章:[第二篇]微信小程序云开发项目总结 功能点2:答疑解惑 这个功能点的实现基本与用户填写简历相同,都是用户上传数据到数据库,不加说明. 功能点3:消息回复 这个板块是用户查看管理员的回复消息的 ...

  8. 小程序云开发详解(附开源云开发项目)

    云数据库,云函数,云储存(附开源云开发项目) 欢迎点击: 个人官网博客. github源码: 多功能记账本 扫码体验: 云数据库基本操作(增删改查,链表) 云开发极大的方便了前端开发者,是前端工程师的 ...

  9. 如何云同步敬业签待办事项任务?

    如何云同步敬业签待办事项任务? 敬业签待办事项支持Windows电脑.Android安卓手机.iPhone苹果手机分别下载安装敬业签,然后使用同一个敬业签帐号分别登录.在任意一端记录的待办事项任务将云 ...

  10. 微信小程序云开发项目实战之商城开发日记 04

    今天是愉快开发商城项目的第四天了,相信如果大家跟着我能把前两天的前端内容敲完,相信你是有比较大的收货的. 今天的内容是完成购物车的前端代码. 购物车的设计还是比较常规的UI,展示商品的信息,提供选中按 ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之隐写
  2. 分支结构,循环结构,for循环,九九乘法表
  3. java web视频_超全面的JavaWeb视频教程
  4. nginx,tomcat,apache三者分别用来做什么,有何区别
  5. OCR算法识别率怎么评估?
  6. python gui 自动化_python GUI测试自动化
  7. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...
  8. c++ signal 信号退出
  9. Spark解决的问题与体系结构
  10. [独库骑行之我们路过高山]玉希莫勒盖达坂顶上的震撼
  11. [转载] 七龙珠第一部——第050话 海盗的陷阱
  12. css整理-03 文本
  13. GRPC入门使用及测试用例源码
  14. 浪曦struts2学习笔记2
  15. 文档数据库mongodb与列式数据库hbase详细比较
  16. 计算机管理储存u盘无法使用,小编教你无法格式化u盘怎么解决
  17. 米家摄像头显示服务器错误,米家摄像头云服务器
  18. linux下硬件检测工具,Linux硬件检测工具
  19. 9.Vue中mounted的简单理解
  20. 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题

热门文章

  1. 分享一篇前端大佬关于前端职业规划的建议
  2. 简单的WOW DKP系统
  3. Bias-variance trade off
  4. in comment after two dashes (--) next character must be not - (position: START_TAG seen ...
  5. 文献阅读笔记 《具有目标定位和边界保持的基于个人注视的目标分割》
  6. NB-IoT物联网技术
  7. 【机器学习】可决系数R^2和MSE,MAE,SMSE
  8. 蓝桥杯「鲁卡斯队列」
  9. 图森面试官| 图森未来首席科学家王乃岩:播下去的种子,早晚会开花
  10. VRF-Virtual Routing Forwarding