第六期:如何通过知晓云将数据表导出为 Excel 文件

作者:知晓云 - 小程序开发快人一步
来源:知晓课堂

在日常的工作中,常常需要根据运营需求对数据进行各种格式的处理和导出。导出后,不少人偏爱将数据放入 excel在进行处理。

一般来说,处理数据导出时需要对数据进行一些运算整理。在以前,处理的方式是在一台独立的服务器上跑脚本。

而现在有了知晓云,不再需要维护服务器,直接写代码就能把相关事都都丢给云函数。 本文将介绍通过知晓云云函数来实现将数据表导出为 excel 文件的功能,并使用 webpack 和 mincloud 将代码打包上传到知晓云。

技术栈:

  • 打包工具:webpack@4.22.0
  • 部署工具:mincloud@1.0.4
  • Excel 处理:node-xlsx@0.14.1
  • 其他:知晓云 SDK

一、项目搭建

项目文件结构:

export-excel-file
├── index.js
├── package.json
├── src
│ └── index.js
├── webpack.config.js
└── yarn.lock

项目搭建与云函数代码打包示例文档基本一致。项目搭建好后,还需要安装以下依赖(两种安装方式选其一即可):

// 使用 yarn 安装  
yarn add node-xlsx mincloud  
// 使用 npm 安装  
npm install --save node-xlsx minclou ` 

修改 deploy 脚本,如下:

// package.json  
...  
"scripts": {   "build": "webpack --mode production",  
   "predeploy": "npm run build",  
   "deploy": "mincloud deploy export-excel-file ../"  
 },  
 ...  

最终我们会使用以下两个命令来部署和测试:

npm run deploy  // 部署到知晓云  
mincloud invoke export-excel-file  // 测试已经部署到知晓云上的云函数 

二、将数据表导出为 excel 文件

我们需要准备两张表:

  • order: 订单表 (新建字段:name, price)
  • export_task:导出任务记录表 (新建字段:file_download_link)

知晓云的云函数调用有同步和异步两种方式,同步调用的最大超时时间为 5 s,异步调用的则为 300 s。

假定 order 订单表有十万条数据,由于知晓云单次拉取数据的最大限制为 1000 条,所以需要分批获取数据,加上后续可能需要对数据进行处理,所花费的时间将会超过 5 s,因此对该云函数的调用将采用异步的方式。这时候就需要 export_task 导出任务记录表来对导出任务进行管理了。

export_task 表对导出任务进行管理的流程如下:

  1. 调用云函数时在 export_task 表中创建一条记录 A,此时记录 A 中的 file_download_link 字段值为空,同时拿到记录 A 的 id,记这个 id 为 jobId

  2. 进行 order 表数据查询,excel 文件生成,文件上传等操作,拿到文件下载链接

  3. 之后根据 jobId 来更新第一步创建的记录,保存文件下载链接到 file_download_link 字段中

  4. 更新完后就能在 export_task 表中拿到文件下载链接

通过上面的准备和分析,对导出 excel 文件操作分为以下 4 个步骤:

  1. order 订单表数据获取

  2. 使用获取的数据在云函数环境下创建 excel 文件

  3. 将创建出的 excel 文件上传到知晓云

  4. 保存文件下载链接到 export_task 表中的 file_download_link 字段

完整代码如下:

const fs = require('fs')
const xlsx = require('node-xlsx')


const EXPORT_DATA_CATEGORY_ID = '5c711e3119111409cdabe6f2'    // 文件上传分类 id
const TABLE_ID = {
  order: 66666,         // 订单表
  export_task: 66667,   // 导出任务记录表
}


const TMP_FILE_NAME = '/tmp/result.xlsx'  // 本地临时文件路径,以 /tmp 开头,具体请查看:https://doc.minapp.com/support/technical-notes.html (云函数的临时文件存储)
const ROW_NAME = ['name', 'price']        // Excel 文件列名配置
const MAX_CONNECT_LIMIT = 5               // 最大同时请求数
const LIMIT = 1000                        // 单次最大拉取数据数
let result = []


/**
 * 更新导出记录中的 file_download_link 字段
 * @param {*} tableID 
 * @param {*} recordId 
 * @param {*} fileLink 
 */
function updateExportJobIdRecord(tableID, recordId, fileLink) {
  let Schame = new BaaS.TableObject(tableID)
  let schame = Schame.getWithoutData(recordId)


  schame.set('file_download_link', fileLink)
  return schame.update()
}


/**
 * 创建数据导出任务
 * 设置初始 file_download_link 为空
 * 待导出任务执行完毕后将文件下载地址存储到 file_download_link 字段中
 * @param {*} tableID 
 */
function createExportJobIdRecord(tableID) {
  let Schame = new BaaS.TableObject(tableID)
  let schame = Schame.create()
  return schame.set({file_download_link: ''}).save().then(res => {
    return res.data.id
  })
}


/**
 * 获取总数据条数
 * @tableId {*} tableId
 */
function getTotalCount(tableId) {
  const Order = new BaaS.TableObject(tableId)
  return Order.count()
    .then(num => {
      console.log('数据总条数:', num)
      return num
    })
    .catch(err => {
      console.log('获取数据总条数失败:', err)
      throw new Error(err)
    })
}


/**
 * 分批拉取数据
 * @param {*} tableId 
 * @param {*} offset 
 * @param {*} limit 
 */
function getDataByGroup(tableId, offset = 0, limit = LIMIT) {
  let Order = new BaaS.TableObject(tableId)
  return Order.limit(limit).offset(offset).find()
    .then(res => {
      return res.data.objects
    })
    .catch(err => {
      console.log('获取分组数据失败:', err)
      throw new Error(err)
    })
}


/**
 * 创建 Excel 导出文件
 * @param {*} sourceData 源数据
 */
function genExportFile(sourceData = []) {
  const resultArr = []
  const rowArr = []


  // 配置列名
  rowArr.push(ROW_NAME)


  sourceData.forEach(v => {
    rowArr.push(
      ROW_NAME.map(k => v[k])
    )
  })


  resultArr[0] = {
    data: rowArr,
    name: 'sheet1',    // Excel 工作表名
  }


  const option = {'!cols': [{wch: 10}, {wch: 20}]}    // 自定义列宽度
  const buffer = xlsx.build(resultArr, option)
  return fs.writeFile(TMP_FILE_NAME, buffer, err => {
    if (err) {
      console.log('创建 Excel 导出文件失败')
      throw new Error(err)
    }
  })
}


/**
 * 上传文件
 */
function uploadFile() {
  let MyFile = new BaaS.File()
  return MyFile.upload(TMP_FILE_NAME, {category_id: EXPORT_DATA_CATEGORY_ID})
    .catch(err => {
      console.log('上传文件失败')
      throw new Error(err)
    })
}


module.exports = async function(event, callback) {
  try {
    const date = new Date().getTime()
    const groupInfoArr = []
    const groupInfoSplitArr = []
    const [jobId, totalCount] = await Promise.all([createExportJobIdRecord(TABLE_ID.export_task), getTotalCount(TABLE_ID.order)])
    const groupSize = Math.ceil(totalCount / LIMIT) || 1


    for (let i = 0; i < groupSize; i++) {
      groupInfoArr.push({
        offset: i * LIMIT,
        limit: LIMIT,
      })
    }


    console.log('groupInfoArr:', groupInfoArr)


    const length = Math.ceil(groupInfoArr.length / MAX_CONNECT_LIMIT)


    for (let i = 0; i < length; i++) {
      groupInfoSplitArr.push(groupInfoArr.splice(0, MAX_CONNECT_LIMIT))
    }


    console.log('groupInfoSplitArr:', groupInfoSplitArr)


    const date0 = new Date().getTime()
    console.log('处理分组情况耗时:', date0 - date, 'ms')


    let num = 0


    // 分批获取数据
    const getSplitDataList = index => {
      return Promise.all(
        groupInfoSplitArr[index].map(v => {
          return getDataByGroup(TABLE_ID.order, v.offset, v.limit)
        })
      ).then(res => {
        ++num
        result.push(...Array.prototype.concat(...res))
        if (num < groupInfoSplitArr.length) {
          return getSplitDataList(num)
        } else {
          return result
        }
      })
    }


    Promise.all([getSplitDataList(num)]).then(res => {
      const date1 = new Date().getTime()
      console.log('结果条数:', result.length)
      console.log('分组拉取数据次数:', num)
      console.log('拉取数据耗时:', date1 - date0, 'ms')


      genExportFile(result)


      const date2 = new Date().getTime()
      console.log('处理数据耗时:', date2 - date1, 'ms')


      uploadFile().then(res => {
        const fileLink = res.data.file_link
        const date3 = new Date().getTime()
        console.log('上传文件耗时:', date3 - date2, 'ms')
        console.log('总耗时:', date3 - date, 'ms')


        updateExportJobIdRecord(TABLE_ID.export_task, jobId, fileLink)
          .then(() => {
            const date4 = new Date().getTime()
            console.log('保存文件下载地址耗时:', date4 - date3, 'ms')
            console.log('总耗时:', date4 - date, 'ms')


            callback(null, {
              message: '保存文件下载地址成功',
              fileLink,
            })
          })
          .catch(err => {
            callback(err)
          })
      }).catch(err => {
        console.log('上传文件失败:', err)
        throw new Error(err)
      })
    })
  } catch (err)

三、部署并测试

跟 npm 一样,部署前需要先登录,请参照文档配置。

使用以下命令即可将云函数部署到知晓云:

 run deploy  

执行结果如下:

使用以下的命令来测试:

mincloud invoke export-excel-filebr  

执行结果如下:

export_task 表记录:

上传到知晓云的 excel 文件如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8xgPW2iK-1588065248145)(https://cloud-minapp-11491.cloud.ifanrusercontent.com/1h3eeGNECR14zCdk.png)]

文件内容:

四、参考文档

知晓云开发文档:https://doc.minapp.com/

node-xlsx 文档:https://www.npmjs.com/package/node-xlsx

五、源码

仓库地址:https://github.com/ifanrx/export-excel-file

相关阅读

第一期:快速实现图片爬虫
第二期:快速生成分享海报
第三期:处理微信卡券消息
第四期:自动回复客服消息
第五期:生成带参数的二维码

关注「知晓云」公众号,点击菜单栏「知晓云」-「知晓课堂」,获取更多开发教程。

相关推荐

小程序的第六年,我们还能怎么玩?

2022 年是微信小程序上线以来的第五年。在今年的微信公开课 Pro 公开数据得知,微信小程序数量 300 万+(占全网小程序数量 43%),DAU(日均活跃用户数量)4.5 亿,同比增长 32%。活跃小程序稳步增长 41%,有交易的小程序数持续增长 28%。去年,微信小程序的生态趋于稳步发展趋势,生态能力也在不断扩建,甚至延伸到微信外,补足更多营销和服务场景,助力商家实现交易增长。支持短信、邮件、App、网页外部链接跳转到微信小程序上线微信客服,提供微信内(小程序、网页、公众号、搜一搜、支付)和

cloud_minapp的博客 2599

小程序外链,实现桌面图标、短信和邮件外链跳转到小程序的工具

近期微信小程序上线新功能,将流量生态延伸到微信以外渠道,进一步补足了小程序的营销场景。除了之前上线过 app 跳转小程序,小程序再跳转回 app 的功能,这次新上线的功能有:支持邮件中文本链接跳转到小程序支持短信中链接跳转到小程序支持二维码识别跳转到小程序支持 iOS 桌面小程序图标跳转到小程序这对于小程序运营者而言,绝对是个好消息。全渠道召回用户,仿佛刚刚定下的 2021 年运营 kpi 就要提前完成了!开发者通过服务端接口可以获取打开小程序任意页面的 URL Scheme,后台支持生成的

cloud_minapp的博客 3123

开发实战教学视频|快速实现微信小程序视频弹幕功能

知晓云正式上线于 2017 年 8 月 8 日,即将迎来三周年庆。在这三年里,知晓云始终秉承「打造人人可用的后端云服务」的理念,在产品上进行了数百次迭代,闷声打磨产品,以更好的产品服务满足更多企业及开发者的需求。目前,知晓云已成功点亮各大主流小程序平台,同时也支持 Web 、iOS、Android 的开发,帮助企业将业务拓展至互联网的每一个角落。知晓云让小程序开发,轻松又简单,省时省力还省钱。在 2020 的上半年,我们干了一件很重要的事情 —— 知晓云平台对 WebSocket 的支持。实时数.

cloud_minapp的博客 1394

把 B 站的视频弹幕搬到小程序中,这项技术可以轻松搞定

作者|知晓云2019 年 12 月,Bilibili( B 站)公布了 2019 年度弹幕,「AWSL」荣登榜首。此外,「泪目」、「名场面」、「妙啊」等弹幕也入选了十大弹幕热词。弹幕,日本弹幕视频分享网站( niconico 动画)的舶来品,由 AcFun(A 站)和 Bilibili ( B 站)引进到国内并盛行。今天,中国各大视频网站都开始增加弹幕功能,弹幕已然成为年轻人需要的一种观影体验。awsl 源于「啊,我死了」的拼音缩写,是对幸福、喜欢、兴奋等各种喜爱之情的情绪表达弹幕的应用弹幕是悬浮

cloud_minapp的博客 1288

「苹果小程序」App Clips 和微信小程序区别在哪?我们做了一次上手实操

作者|何世友、彭权华阅读原文6 月 23 日,Apple Park 的观众席上空无一人,但此时一场特别的「科技春晚」正在上演。在 2020 年的 WWDC 大会中,自 iOS 7 以来变动最大的一次更新——iOS 14 来了,AirPods Pro 有了黑科技,ARM Mac 也来了。但对小程序开发者来说,他们最关心的应该还是此次 WWDC 发布的 App Clips 了。「一个无需下载应用,就能使用 app 的功能。」这听上去是不是和小程序有点相似,但这是 App Clips,也被一部分人称为「

cloud_minapp的博客 959

两天,这家公司就搞定了一款可以查看全球实时疫情的小程序

作者:知晓云疫情期间,有不少开发者都在用小程序为隔离的用户服务,「疫小搜」也是其中之一。「疫小搜」是爱范儿推出的疫情服务小程序,它可以让你第一时间查询身边几百米的疫况,远离风险。「疫小搜」内置了最新的疫情地图,只需设置好定位,即可查看周边实时疫情进展。紧急立项2020 年初,新型冠状病毒开始传播,哪发现了确诊或疑似病例,什么时候发现的,病人去过哪儿,成了全国人民最关心的问题。简而言之...

cloud_minapp的博客 2156

升级微信订阅消息必知的 5 个细节 | 附实战教程

前言微信官方为提升小程序模板消息的使用体验,调整了模板消息的下发条件。原有的模板消息将升级为「订阅消息」,而模板消息接口于 2020 年 4 月 10 日下线(在 2020 年 1 月 10 日以后新发布的小程序只能使用订阅消息),届时将无法再使用原接口推送模板消息,因此需要开发者及时进行调整。△ 微信官方最新消息模板消息与订阅消息的区别无论是模板消息,还是现在新的订阅消息,发送小程序...

cloud_minapp的博客 1710

重磅 | 小程序模板消息能力调整,长期性订阅消息终于来了

原创: 冷思真 蒋鸿昌首发:「知晓程序」公众号 - 最好的微信新商业媒体尽管部分运营者还在传授如何运用模板消息召回用户的运营技巧,但对部分开发者而言,模板消息已经成了食之无味弃之可惜的存在。与其再在模板消息上下功夫,不如好好研究一下如何从「用户分享」和「最近使用」这些更重要的入口召回用户。微信当然不会等着模板消息最终成为一个用户心烦、运营者头痛的存在。刚刚,微信发布了小程序模板消息能力调...

cloud_minapp的博客 2万+

如何领取 2022 元小程序开发基金

知晓云是国内首家专注于小程序开发的后端云服务,为开发者提供最低门槛的 Serverless 无服务架构接入体验。知晓云「1 元拼盲盒」活动重磅上线 ,购买盲盒并拼团成功,即可开启随机盲盒,将有机会获得 2022 元开发基金,即 1 元可换 2022 元,但还不止于此……使用这 2022 元开发基金注册知晓云账号并创建一个「个人版」的知晓云应用,你可以在不用招聘后端开发工程师和运维工程师、不用购买服务器、不用注册和备案域名的情况下,花 1-5 天的时间上线小程序/APP/网站。在未来的一年里,资源.

cloud_minapp的博客 635

2021 年的技术总结与趋势分析,我们访谈了几位开发者

2021 年已接近尾声,这一年似乎有很多新的技术、新的概念正影响着大家的工作方式、开发设计方案。时刻关注、了解、应用新技术,也许可以帮助我们提高工作效率、降低开发成本、创造更好用更有魅力的产品。近期我们邀请了几位开发者、产品经理,复盘他们自身领域的技术发展以及探讨 2022 年的技术趋势。一起来看看,他们分享的内容吧~Chil(糖纸开发负责人)今年最受争议的概念就是元宇宙,尚未落地就被打上炒作的标签,很多没搞清楚状况的朋友们上网一搜,总少不免能看见各种嘲笑和谩骂的声音。但是作为开发人员,我们应该静.

cloud_minapp的博客 1460

实战教程|如何制作一个简单的博客网站(上)

我们在向大家征集开发课程大纲后,便陆续收到了很多建议。大家是热情与支持,是我们持续更新的动力。由于大家的课程建议比较散,需要结合实际案例进行讲解,因此我们先从最简单的开始。本文将会跟大家介绍,如何通过 React 和知晓云快速制作一个简单的个人博客。适用人群:????刚接触编程的大学生(中小学生有多余精力也可,知晓云用户最小年龄 14 岁喔)????有兴趣学习前端开发的产品、测试和运营人员????业余爱好,有大量的学习时间,希望通过掌握基础开发知识,未来将开发应用作为副业如果你有兴趣分享你的

cloud_minapp的博客 755

Serverless 云服务的十问十答

近期,我们在与多家项目外包开发团队的沟通交流中,发现有几个问题经常被问到,比如:类似知晓云这样的 Serverless 云服务适用于什么场景?已有后端团队还需要用 Serverless 吗?爱范儿的项目也用知晓云吗,能应对百万级流量的冲击吗?为此,我们对部分问题进行统一的解答。如果你还有其他疑问,可以随时提出。????「知晓云开发者联盟」空间正式上线,下拉到文末,微信扫码进入小程序,即可参与首期福利活动。Serverless 云服务的十问十答1. Serverless 是什么?Serverles

cloud_minapp的博客 1046

实战教程|使用知晓云快速制作一个简单的个人博客

我们在向大家征集开发课程大纲后,便陆续收到了很多建议。大家的热情与支持,是我们持续更新的动力。由于大家的课程建议比较散,需要结合实际案例进行讲解,因此我们先从最简单的开始。本文将介绍如何通过知晓云的内容库以及数据表,快速制作一个包含评论功能的个人博客。适用人群:????刚接触编程的大学生(中小学生有多余精力也可,知晓云用户最小年龄 14 岁喔)????有兴趣学习前端开发的产品、测试和运营人员????业余爱好,有大量的学习时间,希望通过掌握基础开发知识,未来将开发应用作为副业如果你有兴趣分享你

cloud_minapp的博客 506

摄影师教你开发小程序,「龟斯的风光摄影助手」的设计与开发思路详解

作者|陆尧作为一名风光摄影师,会拍摄一场壮丽的日出日落是基本功。精力充沛一点的,在日落之后便会继续守候,期待能有漫天繁星。在这看似简单的拍摄计划背后,实践起来,一定会遇到几个问题:应该去哪里拍摄?什么时候日落?太阳会在哪个方向落下?星空会在几点出现?银河在哪?这些问题都是初入风光摄影时必然会踩到的坑。我是一名风光摄影师,同时又是一名个人开发者,既了解摄影师的需求,也能通过技术满足摄影师的需求,「龟斯的风光摄影助手」便是为了解决这些问题而诞生。「龟斯的风光摄影助手」提供了日月时间、月相、银河起落

cloud_minapp的博客 1891

QQ 邀你上线小程序,官方生态能力持续赋能你的小程序

你身边总有一些朋友,他们的表情包极其丰富,能时刻应对各种聊天场景。表情包奇奇怪怪,可可爱爱,非常形象生动体现我们当下的心情,逐渐成为社交平台中不可或缺的一门「语言」。无论是微信还是 QQ,不仅支持添加你所收藏和制作的表情,更是支持表情包创作者上架专辑,满足爱好的同时,偶尔还可以赚点赞赏费。假如在聊天窗口上点击表情,跳转到对应的小程序,可以把所有社群的流量转化到自己的小程序上,进一步将流量变现,这操作听起来是不是很给力?是的,这正是 QQ 小程序正在做的事情,开放生态能力赋能小程序,而且远不止这一个能

cloud_minapp的博客 674

广汽传祺的创意营销模式剧透,带你了解大型车企的数字化升级之路

汽车行业在经历 2019 年经济下行和 2020 年的突发疫情,遭遇双重冲击。销售额大幅下滑、库存压力大、市场竞争激烈、新车利润下滑、成本上涨、盈利困难、人员流失严重等一系列的问题正在考验每一家经销商。为了走出当下困境,提高企业生存能力,汽车企业努力寻找变革求存的产业新格局。广汽传祺是这些探索者中的领先者和开创者,正在借助数字化能力获得新的商业模式、营销模式,并在践行中不断了解消费者的需求,以此提供更符合现阶段消费者需求的高品质产品和服务。广汽传祺联合爱范儿及旗下技术服务平台知晓云,通过数字化技术和创

cloud_minapp的博客 896

开发一个 App Clip 并不难!我们立马上开发教程

作者|何世友、彭权华在 2020 年 6 月 23 日的 WWDC 大会中,苹果发布了 App Clips 。App Clip(官方翻译:轻 App;民间翻译:「苹果」小程序),是主 app 轻量级的版本,旨在在特定场景为用户提供快速便捷的体验。如果你在上班路上经过一家咖啡店想购买一杯咖啡,但发现排队下单付款的人很多,此刻你只需要使用 iPhone 自带的扫码工具扫描咖啡商店的 App Clip 二维码或 NFC 标签,就可以购买一杯咖啡,无需下载安装咖啡商店的 app。*图片来源:苹果官网 *

cloud_minapp的博客 1822

开发实战|知晓云 Flutter SDK 已发布,助力 200 万开发者极速上云

作者|严嘉俊Flutter 是 Google 发布的一个用于创建跨平台、高性能移动应用的框架。随着 Google 在 IO19 宣布 Flutter 支持 Web 平台,就标志着 Flutter 已经全面持所有平台。Flutter 提供了非常友好的文档,开发过程中遇到的问题都可以在 Stackoverflow 或其 github issue 中找到答案,帮助各端的同学迅速地进入到 Flutter 中。同时它的完全开源也让其有了更快的迭代,更好的生态。根据谷歌官方 2020 年 4 月的统计数据,Flu

cloud_minapp的博客 807

如何在微信小程序上开发一个「蚂蚁森林」和「蚂蚁庄园」结合体?

你在蚂蚁森林中种了几棵树?你在蚂蚁庄园中捐赠了几颗蛋?「蚂蚁森林」和「蚂蚁庄园」是支付宝分别在 2016 年 8 月和 2017 年 8 月上线的两个网上公益活动,通过游戏互动和激励来培养用户的低碳环保运营活动。今天,这两个功能已经成了支付宝的热门功能,不仅能为支付宝拉好感,还能为支付宝生态内的小程序导流。用户步行、在线缴纳水电煤、网络购票、捐赠旧衣物、捐赠废品……这些行为可以减少用户的碳排放量,将被转化为虚拟的「绿色能量」。当能量累计到一定值就能「种树」,支付宝蚂蚁森林和公益合作伙伴就会帮你在沙.

cloud_minapp的博客 4201

Flutter 实战:增删查改功能示例代码

知晓云 Flutter SDK 已进入测试阶段,很快就可以跟大家见面了。Flutter SDK 的使用比较简明易懂,例如对数据表的增删查改,在指定数据表后,对数据项进行对应操作即可,例如新增(create)、查找(get)、修改(update)和删除(delete)。以下是对 Flutter 增删查改功能进行展示: TableObject product = new TableObject('product'); // 获取名为 product 的数据表 // 新增数据 TableRecord

cloud_minapp的博客 1123

五个小程序用户增长技巧

目前除了微信小程序,还有支付宝小程序,百度小程序,字节跳动小程序、京东小程序等,各大流量平台都希望借助小程序的服务连接能力,为企业和用户提供更好的服务。企业在小程序赛道上的战略布局,可以借助平台的流量,获得更多的用户和变现。有些人会认为小程序用户增长是运营的事情,与产品和开发无关,实则不然。对于全栈工程师来说,他们不仅能做好小程序,还能玩溜小程序,真正全方位、无死角实现用户增长最大化。小晓云近期采访了几位开发者,他们的小程序有些已经突破百万用户,在自己的领域中获得持续性的发展。开发者围绕用户增长中的拉新

cloud_minapp的博客 1558

一个内嵌全国高校地图的小程序,走到哪导航到哪

目前,全国 31 省区市 2020 年高考分数线已全部公布,考生们也已完成志愿填写,陆续收到录取通知书。在各位学子金榜题名时,微博、朋友圈等各个社交渠道也开始了晒录取通知书的 battle 名场面。▲新版清华大学研究生录取通知书▲上海交通大学本科录取通知书各所大学的录取通知书充分融合校园建筑景色、历史文化、专业特点等元素,通过数字插画、立体纸雕、盲盒设计、音乐盒等极具创意和富有设计感的方式,向新生展示美丽校园、美好学习生活和对他们热烈的欢迎和期望。包含校园景色和地图的录取通知书,更多是一种收藏留

cloud_minapp的博客 1445

用好知晓云,从此不再「网抑云」

近期在多个社交平台上,都能看到一些打着「网抑云」标签的视频或文章,引起大家的关注。「网抑云」最开始来自网友对音乐 APP 里的矫情式评论的调侃,是指到夜深时刻,在我们最敏感的时候,打开音乐 APP ,听着悲伤的歌曲,再浏览充满悲伤抑郁的评论,从而感同身受,越发抑郁。无论什么风格的歌,似乎都能让人听出一股淡淡的忧伤。作为一名传统企业的老板,你是否因为「企业该如何效率高、成本低、效果好完成数字化转型」的问题陷入「网抑云」了?作为一名 996 工作制的优秀程序员,你是否因为「开发工作复杂且繁琐、第三方服务.

cloud_minapp的博客 525

直播预告|电商小程序的新玩法,实时数据库能搞定

电商小程序围绕着拉新、转化、留存等目标,有很多玩法,如何玩好常见的积分、拼团、社群?还有哪些玩法值得我们借鉴的?玩法一:积分通过制定积分规则,以积分兑换现金或奖品吸引用户参与。商家应尽可能多将领取积分覆盖到所有版块中,才能更好的提高用户活跃度和激励消费。「好物商店」小程序的金币(即积分)获取方式多达九种,包括签到、购物、分享商品、评价、邀请好友、阅读文章、关注公众号、完善信息、添加到我的小程序。「好物商店」小程序的玩币规则,丰富多样的方式提高了用户的参与度玩法二:拼团消费者在优惠价格的吸引下,自

cloud_minapp的博客 520

给国企定制小程序,这家「云服务商」 1 个月搞定

知晓云高效、稳定的知晓云云服务 + 企业定制化服务,已成为各行业上云的首选。近期,知晓云帮助国企单位党支部顺利上线「智慧政企党建小程序」,为内部员工提供一个集「宣传、管理、教育、服务、沟通、考核」于一体的智能党建平台,打破组织内部信息壁垒、提高党务工作效率、促进党员学习与成长。党建小程序的发布,标志着该国企部门响应国家号召,顺应时代潮流,完成了数字化转型。在过去的党务工作中,存在以下几个痛点:没有线上交流平台,信息不对称,内部交流不足党务依赖传统的工作方式,效率低下,不智能党员教育方式和

cloud_minapp的博客 587

【新能力】京东小程序已加入知晓云 SDK 全家桶

知晓云 - 小程序开发快人一步在京东小程序还需要要邀请码才能体验的时候,我们已经发布了 SDK 支持,查看接入指南。目前,知晓云已成功点亮各大主流小程序平台,同时也支持 Web 、iOS、Android 的开发,帮助企业将业务拓展至互联网的每一个角落。用知晓云开发小程序,轻松又简单,省时省力还省钱。更多支持平台的接入,请查看开发文档。此外,对 WebSocket 和 Flutter 的支持也进入了紧锣密鼓的开发阶段,很快就会很大家见面啦 。如果你有其他需求,可以通过文末留言、在知晓云产品路线图

cloud_minapp的博客 527

掌握小程序十个运营技巧,实现用户阶梯式增长

功能优化1、用户习惯引导在小程序中设置明显的「添加」文案,引导用户添加到桌面、添加到我的小程序。这是在培养用户的使用习惯,达到二次使用的效果。2、优化运营功能优化产品功能,提高用户的转化,例如通过团购、助力、砍价、打卡、分销、红包奖励等实现留存和转化效果的运营手段。3、增加分享引导功能可以结合小程序的使用场景,引导用户分享,产生裂变效果。例如微信读书中分享可以获得免费阅读天数;生成成绩单引导分享。渠道宣传4、公众号宣传利用公众号庞大的粉丝基数,在推文中分享小程序,在自定义

cloud_minapp的博客 1529

第七期:用云函数快速实现小程序支付

作者:知晓云- 小程序开发快人一步来源:知晓课堂本文主要侧重于讲述小程序在线支付功能中的编程思想和编程模式,并在必要的地方提供关键代码示例。为方便演示,这里将实现一个最简单的虚拟商品的订单支付功能,订单略去了收货地址和多规格、多数量的情况,示例中仅讨论在商品详情页中直接创建订单并发起支付的情况。需要分别定义 Product 表和 Order 表进行数据存取,在 BaaS 后台中创建两张数据表。一、数据表结构设计Product 表:数据表录入权限:所有人数据行读写权限:创建者可写,所有人可读

cloud_minapp的博客 537

【能力更新】React Native SDK 内测版发布

来源|知晓云全平台定制化支持。知晓云团队一直为这个目标努力着,这不,在已经支持了各大主流小程序平台、Android、iOS、Web 之后。为了提升用户多平台开发的开发效率,我们又开始了对 React Native、Flutter 等开发框架的支持。价格还是那么便宜,服务却越来越丰富,我都快把自己感动了。今天 React Native 的内测版本已正式对外发布啦,需要尝鲜的朋友可以点击这里查看。内测完全免费,遇到问题欢迎吐槽。对于积极反馈问题的同学我们还会有实物奖品相送哦~还等什么,赶紧参与起来。

cloud_minapp的博客 343

【知晓云 API Gateway】API 乐队指挥家,网关服务正式上线

作者:知晓云 工程师 John Deng随着知晓云小伙伴们业务的发展,对我们服务的支持又有了新的要求,比如在对接第三方服务时,需要自定义数据结构等。为此,经过 32 次的需求讨论会以及工程师们的紧张开发后,知晓云 API 网关诞生了。你可以通过可视化界面配置 API ,点击发布,即可完成一个对外服务的 API,再也无需等待构建/部署流程,大大节约了开发成本。**知晓云 API 网关(API Gateway),是 API 发布、管理、运维的全生命周期管理工具。**让开发者通过可视化界面配置并生成

cloud_minapp的博客 361
上一篇: 两天,这家公司就搞定了一款可以查看全球实时疫情的小程序
下一篇: 【知晓云 API Gateway】API 乐队指挥家,网关服务正式上线
知晓云
博客等级 码龄8年 77粉丝 75原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值