一, 介绍
HotApp云笔记是基于HotApp小程序统计云后台提供的api接口开发的一个微信小程序
功能有: 离线保存笔记、云端数据同步、数据统计分析
项目地址: https://github.com/hotapp888/hotapp-notepad
截图如下:
二, 功能分析
需要数据库
对于一个功能非常简单的小程序来说, 自己去开发一套后台需要话费蛮多时间和精力的, 而且很多小程序开发者不会写后台.
hotapp 提供了key-value形式的免费接口, 支持get, post, delete和searchkey, 使用起来非常简单, 对于一个简单的笔记本来说完全够用了!需要云同步
在离线情况下可以写笔记, 这些笔记应该保存到本地缓存中. 在有网络的时候, 需要把本地的数据上传到hotapp 云后台, 在更换设备之后, 还可以从hotapp 云后台把数据同步到新设备. 在新设备上新增笔记、修改笔记和删除笔记之后, 也可以及时同步到旧设备上需要数据统计
需要知道每日新增用户, 活跃用户, 启动次数, 用户留存率, 增删改笔记的次数等. hotapp 提供了这些免费的接口, 一行代码就接入进去后就可以知道这些数据
三, 技术实现细节
1, key-value的设计
hotapp云笔记有两种数据类型: 笔记和反馈
对于笔记
, 我设置的key是item_openid_rand, 对于反馈, 我设置的key是feedback_openid_rand
这样设计的好处是: 看到item就知道是笔记, 看到feedback就知道是反馈, 如果需要知道是哪个用户的笔记, 就查找item_openid_开头的key就可以了
hotapp云笔记 提供了这些接口, 让我实现起来非常地方便.
获取用户所有的笔记
/** * 获取所有数据 */ getItems: function(cb) { var that = this; // 首先从缓存中获取, 如果缓存中有就直接返回 var items = wx.getStorageSync('items'); if (items) { return typeof cb == 'function' && cb(items); } else { // 如果缓存中没有, 就通过hotapp.searchkey去云后台获取 var filters = { prefix: hotapp.getPrefix('item'), pageSize: -1 // -1表示不需要分页, 一次性获取所有的数据 }; hotapp.searchkey(filters, function(res) { if (res.ret == 0) { res.data.items.forEach(function(item) { // 把获取的数据格式稍作处理, 以便在前端显示 item = that.formatItem(item); // state: 1表示未同步, 2表示已同步, 3表示本地已删除. // 数据同步的内容在下面介绍 item.state = 2; }); // 为了提高速度, 把数据都存入缓存, 下次取的时候就直接从缓存中获取而不需要从云后台获取 wx.setStorageSync('items', res.data.items); return typeof cb == 'function' && cb(res.data.items); } else { return