开发待办事项小程序

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 本教程介绍如何使用阿里云小程序Serverless服务开发一个待办事项的支付宝小程序。

本章内容出自《15分钟打造你自己的小程序》电子书,点击下载完整版

开发待办事项小程序

本教程介绍如何使用阿里云小程序Serverless服务开发一个待办事项的支付宝小程序。

步骤一:开发支付宝小程序

请参考以下步骤,开发支付宝小程序项目:

  1. 下载小程序模板代码,并在本地解压。
  2. 打开小程序开发者工具,然后选择支付宝 > 小程序
  3. 单击打开项目选择已解压的小程序项目。

image.png

  1. 打开本地项目页面,单击打开

image.png

  1. 打开手机支付宝App扫描弹出的登录二维码。登录后,选择已创建的支付宝小程序应用完成关联,然后单击确定
  2. 右键单击左侧的server|未关联目录,然后选择关联Serverless
  3. 在项目文件列表中找到app.js文件,配置以下信息,然后保存。

    • appId是小程序的ID。您可以在蚂蚁金服开放平台的支付宝小程序页面查看App ID。
    • spaceIdclientSecretendpoint小程序Serverless控制台创建服务空间后可以获得。

image.png

步骤二:调试小程序

打开小程序模拟器,在弹出的服务授权框中仔细阅读《用户授权协议》后选择同意
image.png

小程序Serverless代码详解

  • SDK初始化

在使用小程序Serverless服务前,需要您在小程序中安装小程序Serverless客户端SDK并初始化。小程序Serverless客户端SDK的更多信息请参见安装客户端SDK2.2版本

//app.js
const MPServerless = require('@alicloud/mpserverless-sdk');
const mpServerless = new MPServerless({
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,
}, {
  appId: '', // 小程序应用标识
  spaceId: '', // 服务空间标识
  clientSecret: '', // 服务空间 secret key
  endpoint: '' // 服务空间地址,从小程序Serverless控制台处获得
});

App({
  userInfo: null,
  mpServerless,
});
  • 页面数据初始化

在页面渲染时进行用户授权并调用user.getInfo接口获取用户ID信息,通过用户ID向云数据库查询当前用户的待办事项列表。更多获取用户信息接口请参见user.getInfo

async onShow() {
    if (!this.data.user.userId) {
      // 调用user.authorize进行用户授权
      await app.mpServerless.user.authorize({
        authProvider: 'alipay_openapi',
      });
      // 调用user.getInfo获取用户信息
      const res = await app.mpServerless.user.getInfo().catch(console.error);
      if (res.success) {
        this.setData({
          user: {
            userId: res.result.user.userId,
          },
        });
      }
    }
    this.loadTodoList();
  },
  • 获取用户的待办事项列表

调用find方法查询todos数据库中指定用户ID的待办事项信息,并将返回结果按创建时间降序排列。更多数据库查询接口信息请参见find

// 获得数据并加载当前用户 todo 列表
loadTodoList(){
  app.mpServerless.db.collection('todos').find(
    { userId: this.data.user.userId },
    { sort: { createTime: -1 } },
  ).then(({ result: todos }) => {
    this.setData({ todos });
  }).catch(console.error);
},
  • 删除待办事项

根据列表ID和用户ID删除待办事项,更新删除接口信息请参见deleteOne

// 删除当前的列表
deleteById(_id){
  const that = this;
  return new Promise(function (resolve, reject) {
    // 确认和删除图片
    my.confirm({
      title: '删除 todo',
      content: '是否确认删除?',
      confirmButtonText: '删除',
      cancelButtonText: '取消',
      success: (result) => {
        if (result.confirm) {
          app.mpServerless.db.collection('todos').deleteOne({
            _id,
            userId: that.data.user.userId,
          }).then(() => {
            resolve({ success: true });
          }).catch(err => {
            console.error(err);
            reject({ success: false });
          });
        }
      },
    });
  });
},
  • 完成待办事项

根据列表ID将待办事项的状态更新为已完成,并记录完成时间。更多数据更新接口信息请参见updateOne

// 根据 id 改变当前 todo 状态
changeComplate(_id, completed){
  return new Promise(function (resolve, reject) {
    app.mpServerless.db.collection('todos').updateOne(
      { _id },
      {
        $set: {
          completed,
          completeTime: completed ? new Date() : false,
        }
      }
    ).then(() => {
      resolve({ success: true });
  }).catch(err => {
      console.error(err);
      reject({ success: false });
    });
  });
 }
});
  • 新增待办事项

调用insertOne方法向数据库todos中新增一条待办事项。更多新增数据接口信息请参见insertOne

// 写入数据库 obj,当前用户增加一条 todo
addTodo(){
  const that = this;
  return new Promise(function (resolve, reject) {
    app.mpServerless.user.getInfo().then((res) => {
      if (res.success) {
        app.mpServerless.db.collection('todos').insertOne({
          text: that.data.inputValue,
          iconUrl: that.data.iconUrl ? that.data.iconUrl : false,
          userId: res.result.user.userId,
          completed: false,
          createTime: new Date(),
          completeTime: false,
        }).then(() => {
          resolve({ success: true });
        }).catch(err => {
          console.error(err);
          reject({ success: false });
        });
      }
    }).catch(err => {
      console.error(err);
      reject({ success: false });
    });
  });
}
相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
1月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
28天前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
213 1
|
1月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
236 7
|
1月前
|
移动开发 小程序 前端开发
小程序快速开发平台有哪些?
小程序开发并非“一刀切”,需结合技术储备、资金预算、时间规划及功能需求等多维度因素综合考量。以下为您详细拆解五种主流开发方案及其适用场景,助您精准匹配开发路径。
156 3
|
1月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?小程序开发制作软件推荐
小程序开发方案全解析:5种主流方式与选择指南 小程序开发需根据技术能力、预算、时间及功能需求综合决策。以下为5种主流开发方案及适用场景分析:
337 0
|
3月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
167 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
6月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1386 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
7月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
718 12

热门文章

最新文章