专栏首页zhang云开发基础
原创

云开发基础

1.什么是微信小程序云开发?

官方的介绍

开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。

云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。

云开发提供了几大基础能力支持:

能力

作用

说明

云函数

无需自建服务器

在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码

数据库

无需自建数据库

一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库

存储

无需自建存储和 CDN

在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理

云调用

原生微信服务集成

基于云函数免鉴权使用小程序开放接口的能力,包括服务端调用、获取开放数据等能力

官方对云开发的含义其实描述得非常形象准确了,其实云开发可以理解为一个全托管的nodejs云端环境,是一个全方位的服务端解决方案,从功能上来讲他帮助企业简化了开发流程,降低了人员配置复杂度,是一个不错的功能;但个人觉得,这种数据全方位托管的方式可能仅仅针对某些小型企业有较大利用价值,大企业是不会将代码、数据放在云端的,都是自建服务器的模式。

2.怎样实现一个云开发项目? 第一步:实现云开发项目前的准备工作,包括如下步骤

第二步:开启云开发控制台

经过第一步的操作之后,我已经得到了一个普通的小程序项目,项目结构如下

此时,我的首先要先开通云开发控制台,什么意思呢?就是为我这个APPID的小程序在云端创建一套云开发环境管理系统,用于管理我的云端Demo,开通云开发控制台的方式如下:

开通之后,会默认展示当前云端环境的各项数据指标,后续可以在这里查看,控制台的模块分布,可以参考官网: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/console.html

第三步:配置并创建本地云开发代码目录

云开发控制台也开通了,我们现在肯定要在本地创建一个代码空间来实现本地和云端代码的同步,因为不可能本地的所有文件都可以往云端同步,肯定是某个特殊目录下的数据才能向云端同步,这是架构的基本逻辑思想。

在小程序项目根目录下创建本地云函数根目录functions,在项目根目录找到 project.config.json 文件,新增 cloudfunctionRoot 字段,值为刚才创建的本地云函数根目录名称

我们在项目根目录找到 project.config.json 文件,新增 cloudfunctionRoot 字段,指定"functions"目录作为云函数的本地根目录;我们可以看到"functions"这个目录创建之后就被一个蓝色的图标所标记了,说明这是小程序所认可的一个可用于本地和云端实现代码同步的;

"cloudfunctionRoot": "./functions/"

第四步:创建测试云函数"test"并安装依赖

我们可以看到云函数根目录下新增了一个名称为我们定义的云函数名称的目录,我们称之为云函数目录,关注点是云函数目录名=云函数名;云函数目录下有三个文件,含义分别如下:

  • config.json

云函数API配置文件

  • index.js

云函数的入口文件,就是云函数的执行文件

  • package.json

云函数的依赖包配置文件

我们创建完云函数之后,需要根据自己项目的需求添加一些依赖,然后要安装依赖,例如我这里需要添加一个最新版本的腾讯云SDK作为依赖,我们应该这样做:

"dependencies": {
    "wx-server-sdk": "~1.8.3",
    "tencentcloud-sdk-nodejs": "latest"
  }

在"test"云函数目录上右键选择在"在终端中打开"

安装过程如下

F:\cloud-dev\functions\test>npm install
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142

> protobufjs@6.8.8 postinstall F:\cloud-dev\functions\test\node_modules\protobufjs
> node scripts/postinstall

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN test@1.0.0 No description
npm WARN test@1.0.0 No repository field.

added 101 packages from 194 contributors and audited 186 packages in 13.213s

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

我们可以去"test"云函数目录下查看安装的nodejs依赖包,其中包括了众多的基础依赖包,当然也包括package.json中的依赖包

第五步:有了依赖包了,我们应该开始编写"index.js"这个入口文件中的云函数功能代码块了

如下图,红框中的代码就是你的云函数主体功能代码块了

云函数的传入参数有两个,一个是event对象,一个是context对象。event指的是触发云函数的事件,当小程序端调用云函数时,event就是小程序端调用云函数时传入的参数,外加后端自动注入的小程序用户的 openid 和小程序的 appid。context对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。在模板中也默认requirewx-server-sdk,这是一个帮助我们在云函数中操作数据库、存储以及调用其他云函数的微信提供的库,关于wx-server-sdk的使用我们在另一个章节讲述。

这里我们自定义一个功能代码块

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  return {
   describe: event.desc
  }
}

上传此云函数到云端

然后新建一个页面来调用这个云函数

创建页面

然后完善代码及配置文件

cloud.js

// pages/cloud/cloud.js
Page({
  clickMe: function() {
    var that=this
    wx.cloud.init()
    wx.cloud.callFunction({
      // 云函数名称
      name: 'test',
      // 传给云函数的参数
      data: {
        desc: "Tencent cloud is number one",
      },
      success: function(res) {
        console.log(res.result.desc) // 3
        that.setData({
        message: res.result.desc
        })
      },
      fail: console.error
    })
  }
})

cloud.json

{
  "navigationBarTitleText": "云函数测试",
  "backgroundColor": "#eeeeee"
}

cloud.xml

<!--pages/cloud/cloud.wxml-->
<view>{{ message }}</view>
<button bindtap="clickMe">点击我</button>

cloud.wxss

/* pages/cloud/cloud.wxss */

app.json

{
  "pages": [
    "pages/cloud/cloud",
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle": "black"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

打开模拟器、调试器,然后点击"编译"观察调试器控制台是否报错

点击触发事件绑定去调用云函数

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序对接云开发录音文件识别nodejs sdk

    拷贝"tencentcloud"目录到云函数"voiceRecognize"的包管理目录"node_modules"下

    用户1529147
  • 微信会话语音文件的一句话识别

    在wordRecognize云函数目录上右键选择在"在终端中打开",执行"npm install"安装依赖

    用户1529147
  • nodejs基础学习

    Node.js是一个开源的、跨平台的JavaScript运行时环境。它是一个流行的工具,几乎适用于任何类型的项目!

    用户1529147
  • 机器学习之回归原理详述(一)

    本文用了从数学层面和代码层面,再结合一些通俗易懂的例子,详细地描述了回归主要涉及的原理和知识,希望对于机器学习的初学者或者有兴趣研究模型具体实现的同学带来一点帮...

    汪毅雄
  • 零基础使用Django2.0.1打造在线教育网站(四):简易留言簿基础开发

    努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

    编程思录
  • Java操作Elasticsearch

    前两篇对es的操作只是在开发或生产环境中排查问题需要大量使用,最常用的还是在代码中对es的增删改查,下面就来看一下。

    Liusy
  • Windows 10 设置始终以管理员身份运行

    Mr. Wei
  • windows下安装dig进行dns排障

    注:此文不属于原创,是按经验整理了工具的用法。 windows默认是使用nslookup,有时需要使用dig工具,这里简单进行说明 主要是这3个步骤 1.下载...

    邪恶の大灰
  • iOS组件化(初)

    Raindew
  • Windows奇技淫巧:如何添加TrustedInstaller权限

    权限添加,一同加的Administrator、Users、TrustedInstaller(英文分号隔开)然后点检索名称,Administrator和Users...

    我爱你的一诺

扫码关注云+社区

领取腾讯云代金券