前言
最近在学习研究小程序的云开发,不得不令人惊叹,个人觉得如果把小程序比作是干柴,那么云开发就是一把烈火,助推了小程序,小游戏的野蛮生长
一种无服务serverless的开发模式正在崛起,在未来,个人觉得它会成为开发网站,app,应用等宠儿,在传统开发里,开发一个完整的产品,需要前端,后台,运维等技术人员的介入,整个链条很长,开发成本大,周期长
但当有了云开发之后,后台,运维等都被弱化了,你无需去搭建复杂的服务器,考虑配置资源,DB运维,内容加速(cdn),负载均衡,安全加固等一些问题
将服务端的运维部署以及运营环节托管给腾讯云去管理,这对于类似像我这种服务器端的小白来说,简直的是雪中送炭
我们只需要根据腾讯云平台提供的API进行核心业务的开发,即可实现产品快速上线和迭代
云开发提供了完整的后台基础能力帮助开发者进行小程序,小游戏的开发,现在pc端也支持小程序了,在不久将来,我相信这种一站式开发模式将会越来受欢迎,已经会成为一种不可阻挡的趋势,又是前端的春天.
下面就一起来学习下小程序的云开发的
在开篇之前,为了扫盲一下,聊聊小程序是什么
在开篇之前,为了扫盲一下,聊聊小程序是什么
小程序是什么?
相信你每天都在微信里用的小程序,已成成为了生活不可缺少的一部分
功能上: 它是一种全新的连接用户与服务的方式,寄生在微信app内,可以在微信内进行广泛的传播和获取,服务于我们的吃,喝(定外卖等),玩,乐(小游戏),衣,食(电商),住(旅行,住宿),行(打车,骑行)等各个方面的服务,随用随弃,无需下载,安装,可娉美于原生APP的应用体验
开发上: 混合式开发,Hybrid应用,跨平台开发,一套代码可同时在安卓,IOS,微信客户端上运行
语言上:使用的是javascript,它同网页开发有着很多的相似性,但却不苟同,对于搞前端开发者的同学来说,从网页开发过渡到小程序开发,学习成本并不高,如果有使用前端三大框架(Angular,Vue,React)的经验呢,对于写起小程序起来,总会藕断丝连,浮想联翩的,小程序吸纳借鉴了各个框架的,指令,模板,组件化等优点
主要特点:高频, 短时长,传播广,速度快,扫码,转发,曝光度大,成本低,有客服,支付,物流等接口,应有尽有,小程序应用可以说是无处不在,无孔不入
商业上: 变现落地快,开发成本低,个人独立开发者想象无极限,众多大小企业纷纷入局小程序,从微信提出的在小的个体,也有自己的品牌,让早一波自媒体人赚得流油
而在小程序上人人都可皆成为开发者权限,是可以实现自己小小创业梦的,从点子设计-产品规划-前端-后台-运营推广,一站式一条龙的服务,躺着都可以挣钱在也不是天方夜谭,变得遥不可及
当然至于更多技术方面的小程序与网页开发的区别,在单独的小程序章节中,有兴趣的话,我们以后在聊
说完了小程序,那么云开发到底又是什么?一提到云,容易让人联想到阿里云,腾讯云,华为云,云计算,甚至还可能让你想到“马云”,让一些不明的吃瓜群众一脸懵逼
所谓的xx云之类的,某种程度上,是将数据的计算,存储等能力部署放到远端上,一种分布式方式,它不受物理坏境空间等影响,也就是我们常常听到,本地服务挂了,莫慌,还有远端的在跑着的,备灾呢.
云更多扮演的是一种"撒手式无人自动化"管理的角色,管理一些存储等资源,例如:图片,用户信息等,而端对应的我们的输出终端设备,例如:pc端浏览器(IE,firefox,chrome),手机浏览器(uc等)甚至有些app和应用程序
云开发提供了对应各个平台终端的sdk接口.开发者只需调用就行,专注业务核心功能开发就好.
将应用程序(代码)部署到云端上,托管给腾讯云去管理,根据腾讯云平台提供的API,进行核心功能的开发,让开发者更多的关注自身业务的开发,快速实现产品的上线和迭代
云开发(Tencent Cloud Base,TCB):是腾讯云+微信小团队强强联手为移动开发者提供的一站式后端云服务,它帮助开发者统一构建和管理资源,免去了移动应用开发过程中繁琐的服务器搭建及运维、域名注册及备案、数据接口实现等繁琐流程,无需理解后端逻辑及服务器运维知识,让开发门槛更低,效率更高,这样的一门技术
小程序的传统开发模式
客户端: 用户UI界面,属于前端部分,前端会展示很多数据,例如文字信息,图片等,有些数据不是写死的,往往是从后端的数据库读取出来的,在后端需要写相应的业务逻辑代码
服务端: 后端(php/java/python/node)+数据库(mySql/MongoDB等)
过程:需要购买域名,备案,前后端沟通成本,DB运维,文件存储,内容加速(CDN),网络防护,扩容,负载均衡,安全加固等,公司需要自己去搭建服务器,还需考虑流量,带宽,专门的人去维护
特点:开发效率低,成本高,迭代周期长
云开发模式
客户端:同上,在小程序端上直接操作云数据库和云存储以及调用云函数
云开发: 云函数(Node),云数据库(MongoDB,NoSQL),云存储,交给腾讯云去部署,无需运维,省去了传统复杂的开发流程,可以做到一站式全家桶的开发(在云函数中操作云资源)
特点: 无服务的serverless开发方式,弱化了后端和运维的操作,不需要考虑硬件等基础设施,开发者只关注自身的业务逻辑,做到快速迭代,上线,无中间阻碍的开发
云开发提供了几大基础能力
- 云函数: 在云端运行的代码,微信私有的天然鉴权,开发者只需编写自身业务逻辑代码,相当于后端的NodeJs服务
- 作用:无需搭建服务器(省去了运维)
- 具体应用
- 获取appId
- 获取openId
- 生成分享图
- 调用腾讯云SDK
- ...
- 云数据库: 一个可以在小程序端操作,也能够在云函数中读写的json数据库
- 作用:无需自己建数据库
- 具体应用
- 数据的增加,删除,修改 数据查询
- 云存储: 可在小程序前端直接上传或下载云端文件,在云开发控制台可视化管理
- 作用:无需自建存储和 CDN
- 具体应用
- 管理文件
- 上传文件
- 下载文件
- 分享文件
- ...
- 云调用:基于云函数免鉴权使用小程序开放接口的能力,包括服务端调用、获取开放数据等能力
- 作用: 原生微信服务集成
- 具体应用
- 服务器端调用,在云函数中使用云调用,调用服务器接口无需换取 access_token
- 开放数据调用,对于返回一些敏感信息,例如数字签名秘钥,会话秘钥等
- 模板消息推送
- HTTP API:云开发资源也可以通过 HTTP 接口访问,即在小程序外访问,使用 HTTP API 开发者可在已有服务器上访问云资源,实现与云开发的互通
开通云开发
前提条件:
- 预备一个没有注册过的邮箱,在微信公众平台上,注册小程序,下一步,下一步即可
- 下载微信开发者工具
一开始直接开通小程序的云开发坏境
这种方式主要是一开始就准备用云开发,基于微信小程序提供的云开发模板进行开发,具体步骤如下所示:
- 在自己注册的小程序后台,的设置中找到appid,填入微信开发者工具,选择云开发,下一步,就可以了的
- 点击开发者工具右上方的云开发,按照步骤下一步下一步,开通云开发就可以了
- 开通后,重启下微信开发者工具,右侧的开发者工具中有了云坏境的名称,表示就已经开通了的,在云控制台上可以查看一些云函数,云数据库概览等一些信息的
**开发者工具中手动开通小程序云开发坏境(主要针对旧项目的小程序) **
这种方式主要是对于旧项目的小程序想要切换到云开发,基于云开发的的基础能力进行二次开发
这在创建小程序工程项目时,一开始就开通云环境与只创建小程序前台,然后在工具中手动的开通云坏境,其实是一样的,后者需要手动配置一些就可以了的
- 设置云函数的路径
在项目根目录找到project.config.json
文件,新增cloudfunctionRoot
字段,指定本地已存在的目录作为云函数的本地根目录(在根目录下手动创建一个cloudfunction
的文件夹,然后在project.config.json
中进行配置一下),这个目录相当于于后端Nodejs,后端服务,它是可以通过终端npm安装一些第三方模块的
{
"cloudfunctionRoot": "./cloudfunction/"
}
如果你看到微信开发者工具中对应的目录出现了一朵小云的标志,则说明你的云函数目录配置成功了
2. 初始化云环境
在完成了上面的配置之后,接下来就是要初始化云函数,以便在小程序前台进行调用
在前台的微信小程序的app.js中onLaunch生命周期中初始化云开发,具体代码如下所示
//app.js
App({
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
// env 参数说明:
// env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源
// 此处请填入环境 ID, 环境 ID 可打开云控制台查看
// 如不填则使用默认环境(第一个创建的环境)
// env: 'my-env-id',
traceUser: true,
})
}
}
})
上面的这段代码在我们的微信小程序的app.js中的onLaunch生命周期中,调用云开发的init初始化命令,这样就可以在后续的生命周期内调用云开发的命令执行各种操作
3. 配置基础版本库
在进行云开发时,小程序的API更新是很快的,云开发又是集成在小程序官方的运行的环境当中的,对于一些新的API,如果想要支持的话,那么得使用较高版本的库的
只需要在开发者工具中,点击开发者工具右上方的详情,点击tab页,找到详情中的本地设置,将调试基础库的版本选择为最新的就可以了的,如下所示
总结
本节主要介绍的是小程序云开发,从了解到小程序是什么,到什么是云开发,云开发它提供的几大基础能力,对于腾讯云提出的这种无服务serverless开发绝对是前端开发者的春天,弱化后端,运维,运营等环节,前端的话语权将会越来越重.
相比于传统的开发模式,这种云开发必将是革命性的.