一 首先咱们看下云函数构造

分为 controllers 控制器 service 服务逻辑 utils 工具类

二 批改入口文件依据不同路由进入不同的文件

 // 云函数入口文件const cloud = require('wx-server-sdk')const response = require('./utils/response')cloud.init()// 云函数入口函数exports.main = async (event, context) => {    const wxContext = cloud.getWXContext()//这个是重点,小程序传过来的时候要带 controller 控制器和 action 函数名过去    if (!event.controller || !event.action) {        return response.error()    }    try {         //依据不同的控制器,引入不同的控制器文件        const server = require('./controllers/' + event.controller)        //调用控制器外面的办法        return server.getInstance({            router: event.controller + '/' + event.action,            event: event        })[event.action]()    } catch (e) {            return response.error('零碎谬误')    }}

重点是前端得传 controller 和 action 过去,而后依据不同的控制器和函数名调用不同的文件

外面呈现的response文件,我也先给大家看下,防止不晓得是什么意思

这个返回信息的封装 response.js

 module.exports = {   success: function (msg = '胜利', result = {}, status = 0) {     return {       msg: msg,       result: result,       status: status     }   },   error:function (msg = '失败', result = {}, status = -1) {    return {      msg: msg,      result: result,      status: status    }  } }

三 首先创立一个根底控制器

当前一些挂载函数能够在外头挂载
登录的控制器 Base.js

const cloud = require('wx-server-sdk')cloud.init({    env: cloud.DYNAMIC_CURRENT_ENV})const db = cloud.database()const response = require('../utils/response');class Base {    //构造函数办法    constructor(option={}) {        this.response = response        this.request = option.event        this.router = option.router            }    static getInstance(option={}) {        if (!this.instance) {            this.instance = new this(option);        }        return this.instance;    }    }module.exports = Base;

四 能够开始写控制器办法了

比方写个获取商品列表的控制器Goods.js

const Base = require('./Base')class Goods extends Base {    //构造函数办法    constructor(option={}) {        super(option);    }    async list() {        //商品列表        let list = [];                        return this.response.success('胜利',{list:list });    }        async add() {        //增加商品                        return this.response.success('胜利');    }    }module.exports = Goods;

这样一个获取商品列表的链接就做好了,
如果要写多其余的性能,就在controller里建js控制器,而后继承base,就能够了

五 小程序端的申请

我用的是Uniapp开发

目录构造如下

首先我封装一个申请工具
request.js

export async function  request(url, data = {}) {    const url_list = url.split('/')    data.controller = url_list[0]    data.action = url_list[1]        return new Promise((r, s) => {                wx.cloud.callFunction({            // 云函数名称            name: 'request',            // 传给云函数的参数            data: data,            success: function(res) {                let res_data = res.result                                                r(res_data);            },            fail: function(res) {                s(res);            }        })    })}

而后把所有要申请的接口写在api.js文件里

import {request} from "./request";//商品列表export function goodsList(data){    return request('Goods/list',data);}//增加商品export function goodsList(data){    return request('Goods/add',data);}

而后就能够调用了

import {goodsList} from "@/api/api.js";//就能够拿到商品列表了let list = await goodsList(); 

封装好后,小程序的申请,大家有没有感觉开发跟以前跟后端对接的模式一样

这是用云开发开发的小程序,能够参考一下