殷迦南的小破站 - 2019年11月
type: channel
link: https://www.ibfpig.top/index.php/2019/11/
description: 记录殷迦南的一些日志
items: 全栈养成技

全栈养成技
type: item
date: 2019-11-18T13:03:00+00:00
description: 全栈养成技 理想的开发状态是开发者只需要关注业务逻辑和产品设计 去年9月，微信团队与腾讯云就已经推出了“云开发”平台，云开发是这样介绍的 开发者可以使用云开发开发微信小程序、小游戏，无需搭建服务器，即可使用云端能力。云开发为开发者提供完整的原生云端支持和微信服务支持，弱化后端和运维概念，无需搭建服务器，使用平台提供的 API 进行核心业务开发，即可实现快速上线和迭代，同时这一能力，同开发者已经使用的云服务相互兼容，并不互斥。 在了解云开发的时候，有过几个疑问： 云开发有什么能力 在已有的开发架构上融入云开发的兼容性是否良好，是如何处理的 如何请求和接收外部的网络 对于一个小程序来说，一般都至少要有一个web后台来供运营使用，运营后台是否也可以使用云开发 是否支持其他平台(支付宝、头条、淘宝)小程序的开发和使用 企业微信的兼容性如何 云开发对接企业微信或者其他平台是否方便 对于这些疑问，实际体验一下或许可以更快解答 动手尝鲜 明确需求 用于连通线上业务和线下门店的预约到店小程序插件对于很多电商小程序来说是刚需，我在云启星辰开发过一款店铺预约的小程序插件，这个插件现在已经使用在了周大福、老凤祥等一线珠宝品牌的线上小程序中。我们来看看如何使用云开发来改造这款插件 插件使用后UI样式如图，样式代码不再展示，我们详细看说一下云开发的过程 开通云开发 云开发的开通需要在微信开发者工具上进行开通。点击上方工具栏的云开发按照流程创建环境即可开通云开发。 尝试了一下，免费版似乎只能创建两个环境。一个用来开发测试、一个部署正式的线上服务和数据。 先看一下云开发有什么能力：云存储、云数据库、云函数、日志运维、监控，分析统计，我们在实际体验中一个一个来看 云存储 云存储顾名思义就是把资源储存在云端上，我们可以用来储存用户的一些头像、生成的小程序码、上传的图片视频等，也可以用来储存小程序的UI文件，对于日益复杂的小程序来说，把UI资源储存在云端还是很有必要的。 所以我们先来尝试一下云储存，把相关的UI文件放在云储存中。 添加和读取云储存的数据有三种方式： 小程序通过云开发API调用 云函数通过API调用 在开发者工具中进行上传查看和添加 开发过程中的UI资源，我们可以直接新建一个文件夹进行上传储存，之后直接获取资源链接进行调用就可以了。 云数据库 和云储存一样，增删改查云数据库数据有三种方式： 小程序通过云开发API调用 云函数通过API调用 在开发者工具直接处理 其实使用过MongoDB的同学再来使用云数据库会有熟悉感。 预约店铺，肯定是要有店铺的数据的，预约成功之后还要保存预约记录。 店铺数据 我们首先来创建一个store的集合，手动添加一条记录： { "address":"北京市东城区东长安街", "location":{ "latitude":39.90374, "longitude":116.397827 }, "city":"深圳", "province":"广东", "country":"南山区", "banner":"https://7971-yq-demo-test-47yk3-1300688546.tcb.qcloud.la/UI/reserve/storeBanner.png?sign=fd1f7e9be2340c9249b18140af379442&t=1573793815", "store_name":"迦南的小宝藏", "icon":"icon", "introduction":"introduction", "mobile":"19989897878", "status":1 } 默认情况下，新增的每条数据会有一个_id的字段，该字段是UUID的形式，一个集合里该字段唯一 预约记录 预约成功肯定是要把记录存起来的，所以还需要一个预约记录的集合reserve 小程序端API尝鲜 初始化 小程序在使用云开发的时候要先进行初始化，如果是开发小程序，我们就直接放在app.js的onLaunch中即可，现在我们开发的是插件，所以放在插件目录的index.js中即可 // 初始化云开发 wx.cloud.init({ env: '环境ID' // 这里的ID是我们之前创建环境时候的环境ID，不是环境的名字，环境一旦创建，ID将是唯一的。 }) 初始化数据库 在插件中组件的js文件attached进行数据库引用 const testDB = wx.cloud.database({ env: '环境ID' // 这里的ID是我们之前创建环境时候的环境ID，不是环境的名字，环境一旦创建，ID将是唯一的。 }) 查询店铺数据 在正常的业务逻辑中，进入插件时是已经拿到店铺ID的，所以我们直接用已经有的店铺ID来查询店铺数据就好。 云开发的接口不…