山东网站建设口碑好,学校门户网站模板,门面设计效果图,网站页面建设4.4 云函数
云函数是开发者提前定义好的、保存在云端并且将在云端运行的JS函数。
开发者先定义好云函数#xff0c;再使用微信开发工具将云函数上传到云空间#xff0c;在云开发控制台中可看到已经上传的云函数。
云函数运行在云端Node.js环境中。
小程序端通过wx.cloud.…4.4 云函数
云函数是开发者提前定义好的、保存在云端并且将在云端运行的JS函数。
开发者先定义好云函数再使用微信开发工具将云函数上传到云空间在云开发控制台中可看到已经上传的云函数。
云函数运行在云端Node.js环境中。
小程序端通过wx.cloud.callFunction方法调用云函数让云函数在云端运行云函数最终可以返回到小程序端。
云函数之间互相调用需要使用服务端API的callFunction方法。
4.4.1 云函数简介
以一个将两个数字相加的函数作为第一个云函数作为示例。
首先点击pages文件夹点击右键点击“在资源管理器中显示”在打开页面新建文件夹“cloudFunctions”
然后在project.config.json文件新增一个字段指定cloudFunctions目录为云函数在项目中的目录。代码如下
{ cloudfunctionRoot: cloudFunctions/
}
保存以后cloudFunctions目录图标发生变化表明这是一个云函数的目录。
右击cloudFunctions目录选择“新建Node.js云函数”并将该函数命名为add
微信开发工具自动创建出同名目录以及目录中两个文件index.js和package.json。
index.js是add函数的入口文件。package.json是Node.js中的模块描述文件其内容是一个JSON对象指定了模块名字、版本、描述等信息。JSON对象的dependencies属性指定了该模块所依赖的其他模块的名字和版本。在云函数可以用npm引入第三方依赖来帮助更快开发。
所有云函数中会默认引入wx-server-sdk的依赖版本后为latest。在index.js文件中第一行表示在云函数中引入这个依赖模块的引用对象。其代码如下:
const cloud require(wx-server-sdk) // cloud对象对应着小程序的wx.cloud对象
服务端API都封装在cloud对象。
在服务端可以通过cloud.init方法实现初始化。代码如下
cloud.init() // 使用云能力前需要先执行初始化方法
接下来观察云函数的入口函数
// 云函数入口函数
exports.main async (event, context) {
// cloud function body
}
这是箭头函数async表示这是一个异步函数。event和context是函数的两个参数大括号是函数的内容。在函数前面加上exports.main表示这个函数是这个模块的入口函数。
event指的是触发云函数的事件对象其中包含小程序端调用云函数时传入的参数而context对象则包含云函数的调用信息和运行状态可以用它了解服运行情况。
现在修改云函数将传入的a和b相加并作为sum字段返回给调用端代码如下
exports.main async (event, context) {
const c event.a event.b return { sum: c }
}
保存后需要将这个云函数部署到云端。在云函数魔力add上右击在右键菜单中选择“上传并部署云端安装依赖 ( 不上传node_modules) ”将云函数上传并部署到线上环境中。
这时在云开发控制台中的云函数管理页面可以看到刚刚上传的云函数如下图所示 部署完成后在小程序使用wx.cloud.callFunction方法调用该云函数。代码如下 // 回调风格 wx.cloud.callFunction({ name: add, // 云函数名称 data : { a: 1, b: 2 }, success: function(res){ console.log(res.result) // sum: 3 }, fail: function(error){// handle error } })
// Promise风格 wx.cloud.callFunction({ name: add, // 云函数名称 data : { a: 55, b: 2 } }).then(res { console.log(res.result) // sum: }).catch(error {// handle error }) (实践的时候发现云函数的任何修改都不是实时的都需要点击add上传并部署调用才能得到正确的结果)