V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ifanr2016
V2EX  ›  微信

我用 BaaS 开发了一个小程序

  •  
  •   ifanr2016 · 2017-08-21 15:03:33 +08:00 · 3612 次点击
    这是一个创建于 2644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    Hello,各位知晓程序的读者们,我是犯迷糊的小羊,目前是 ifanr 的一只前端攻城狮,同时也是知晓云团队的一员。

    hydrogen

    8 月 8 日,ifanr 旗下品牌——知晓云正式上线,得到业内许多开发者的密切关注和积极支持,在此我代表知晓云团队表示万分感谢哈( ̄▽ ̄)~*

    言归正传,可能和许多童鞋一样,小羊在使用知晓云时其实是第一次开发小程序的,并且开发过程百转曲折。

    因此,小羊希望通过这篇文章的分享,和各位童鞋进行思想的碰撞与知识的交流,因为大家的学习历程是相似的,遇到的困惑也有一定的共通性。

    本文结构大致如下:

    • 首先,简明扼要谈谈如何成为小程序开发者
    • 其次,大体说说如何创建我的第一个小程序
    • 最后,以知晓云官方的一个 demo 详细分享一下如何在小程序中接入和使用知晓云的 SDK

    成为一名小程序开发者

    申请成为小程序开发者是一件再简单不过的事儿,仅需 2 步,比把大象放进冰箱还简单哈~~

    1. 登录微信公众平台,注册成为小程序开发用户。此过程微信要你依次完成账号信息、邮箱激活和信息登记等流程。

    注册流程:信息登记

    1. 完成上述操作后,就能进入小程序管理后台,进入设置模块,获取开发小程序的 AppID。恩,现在小羊已经是一枚准小程序开发者拉。

    AppID

    如何创建我的第一个小程序

    获得了准入资格后,小羊开始参照小程序官方文档,下载官方的开发者工具并创建了一个初始化的小程序。

    minapp: creation

    Welldone,小羊的第一个初始化小程序诞生了,喜大普奔有木有╰( ̄▽ ̄)╭。

    接下来,拿瓶益力多一边吮吸一边看看小程序官方的简易教程文档,熟悉一下小程序代码组织方式和开发特性。 minapp: initialization

    有了开发工具和基础知识积累,好吧,可以表演 freestyle 咯。

    选择什么类型的小程序开发呢?

    因为当时小羊开发的第一个小程序是作为知晓云的 demo 给各位童鞋熟悉产品的接口使用的,因此小羊心目中的小程序应该是精简的。

    • 「简」是像小羊这样的小白开发者一看就懂,
    • 「精」 是能够尽可能在有限的代码中体现知晓云功能的强大性

    于是,我整了个经典的 TodoMVC 的小程序——「我的书架」。

    「我的书架」这个 demo 基本将知晓云的核心模块之一——数据管理的 CRUD 操作基本予以展示,通过这个 demo 能够让各位童鞋学会常见的数据增删改查功能。

    「我的书架」演示如下:

    bookshelf

    如何在小程序中接入和使用知晓云的 SDK

    正式使用 SDK 前的一些事儿

    在正式使用知晓云的 SDK 前,首先确保走完以下 2 个流程:

    第一步,在知晓云创建的应用后,完成小程序的授权。

    目前,知晓云在注册模块和设置模块都有提供小程序授权操作,二者的授权流程大体一致; 下面演示设置模块的小程序操作:

    点击应用标签,进入应用的管理面板

    进入应用

    进入管理面板后,切换到设置模块并进入小程序设置 tab 页,点击授权小程序按钮即可完成授权

    完成授权.jpg

    第二步,授权成功后,在「小程序后台」配置安全域名

    服务器域名.jpg

    阅读开发文档

    接下来的工作就是,看看知晓云的 SDK 的使用说明文档,老夫掐指一算,约莫花费 10 分钟时间将 SDK 的接入小程序的方法和数据表操作看了一遍。

    毕竟 demo 只涉及数据操作嘛,所以要做到有的放矢,要啥看啥。

    导入 SDK 和初始化

    下载知晓云提供的 SDK 后,将其引入小程序的 app.js 中,并通过在前面的设置模块的小程序设置 tab 页中获取当前应用的 ClientID

    // app.js
    App({
      onLaunch: function() {
    
        // 引入 BaaS SDK
        require('./utils/sdk-v1.0.10.js')
    
        // 从 BaaS 后台获取 ClientID
        let clientId = 'xxx' // 从 baas 后台获取
    
        // initialize
        wx.BaaS.init(clientId)
      }
    })
    

    设计数据结构和创建数据表

    完成上述操作后,小羊就可以使用 SDK 提供的各种接口,接下来思考一下「我的书架」将用到什么数据及其结构。

    由于是第一个 demo,本着精简的原则,小羊在此就只设计了一个 bookName 的字段

    字段 | 类型 | 示例 --- | --- | --- bookName | string | ‘傲慢与偏见’

    Tips:知晓云的数据管理模块会为每张数据表自动创建 idcreate_bycreate_atupdate_atacl 等字段 。

    根据文档提示,在使用知晓云的数据管理模块时,需要首先提供存放数据的 tableID

    因此,首先要在知晓云开发者平台创建数据表从而获取 tableID

    获取 tableID 后,小羊将其放在了 pages/index/index.js 文件的 data 对象上,以供后面各种数据操作接口的参数调用; create table

    // pages/index/index.js
    Page({
      data: {
        tableID: 747, // 从 https://cloud.minapp.com/dashboard/ 管理后台的数据表中获取
      }
    })
    

    使用知晓云的 SDK

    小羊在这里不会细谈「我的书架」是如何编写的,因为不同的童鞋的对这个 demo 的实现方式可能不一,小羊只谈谈在哪些控件当中使用到知晓云提供的接口来实现小羊的需求。

    1. 创建书目的一条记录

    小羊的需求很简单,「我的书架」首要功能就是可以添加一本书。

    翻查了文档,发现创建一条记录很简单,只需要调用 wx.BaaS.createRecord 接口,并传入特定数据结构的参数即可;

        // create a book
        let tableID = this.data.tableID
        let bookName = this.data.creatingBookName
    
        if (!bookName) return
        
        let data = {
          bookName: bookName,
        }
    
        let objects = {
          tableID,
          data
        }
    
        // create a record
        wx.BaaS.createRecord(objects).then((res) => {
          // some code here...
        }, (err) => {})
    

    createBook

    2. 更新一条记录

    有时,小羊手抖,在输入书目的时候填写了错别字,那么理应提供一个更新记录的功能吧;

    知晓云提供了 wx.BaaS.updateRecord 接口让更新数据 so easy ;

        let tableID = 747
        let recordID = 88
        let bookName = '黑客与画家'
    
        let data = {
          bookName: bookName,
        }
    
        let objects = {
          tableID,
          recordID,
          data
        }
        wx.BaaS.updateRecord(objects).then((res) => {
          // some code here...
        }, (err) => { })
    

    updateBook

    • 删除一条记录

    最后,当小羊的书架不再存在某本书时,必然需要一个删除操作,通过调用 wx.BaaS.deleteRecord 就可以实现一条记录的删除操作

       let tableID = 747
        let recordID = 88
    
       let objects = {
          tableID,
          recordID
        }
    
       wx.BaaS.deleteRecord(objects).then((res) => {
          // some code here...
        }, (err) => {})
    

    deleteBook


    后记

    以上就是小羊用知晓云烹调出的第一个小程序——「我的书架」,最主要就是用到了知晓云的数据管理功能模块。

    当然,知晓云还提供作为 BaaS 产品的基础 文件上传数据统计功能等,同时具备贴切小程序的特性功能,譬如 微信支付富文本编辑功能。

    除了「我的书架」的 demo 外,知晓云官方还提供 lbs-demo 用于演示稍微复杂的业务实现,以及 payment-demo,用于展示 SDK 的在线支付的特性支持,代码开源已开源在 github上,有兴趣的童鞋可以 star 或是 fork。

    Anyway,耐着性子听完小羊的聒噪的童鞋还有问题的话,可以第一时间咨询知晓云团队的温柔、可爱的知晓妹(微信号:minsupport ),她会为你一一解答哈。

    小云妹子注:如果你在看完这篇文章后,仍然不知道怎么操作的话,可以在添加我时备注「SDK」,我会把你拉入新手群,由小羊同学教你如何快速接入 SDK 噢~

    知晓妹二维码-SDK.jpg

    实践证明,用了知晓云,王者农药小羊多 A 了 几 局,可以有空看看"中国有嘻哈",学几段 freestyle 啦。

    最后,还有一个好消息要告诉各位:

    现在开始,每天前 100 名注册知晓云(cloud.minapp.com)的新用户,即获 90 元账户礼金(可抵扣 1 个月个人版套餐费用),动动手指,躺赚 90,这波不亏啊!马上申请注册吧!

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 02:44 · PVG 10:44 · LAX 18:44 · JFK 21:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.