小程序云开发入门介绍

简介:   微信小程序刚出没多久时,曾经上手写过demo,但开发体验比较差,所以一直没怎么关注。不过自从诸多适配方案出炉,以及云端的开通,觉得还是有必要上手体验一番的。  原生开发我是不想再试了,那就选一种适配方案,目前比较知名的有基于vue的 mpvue,umi-app,基于react 的 taro,以及TX团体出的全新框架 wepy。个人对 react 的好感 以及 taro 框架的走向成熟,促使我选择了 taro。  云端开发就是将普通小程序的传统后端切换为微信提供的轻量级云端。而这个云端服务部分的开发其实是针对前端开发的,前端工程师很容易就能全栈开发出一整个小程序。但是这种轻量级解决方

  微信小程序刚出没多久时,曾经上手写过demo,但开发体验比较差,所以一直没怎么关注。不过自从诸多适配方案出炉,以及云端的开通,觉得还是有必要上手体验一番的。

  原生开发我是不想再试了,那就选一种适配方案,目前比较知名的有基于vue的 mpvue,umi-app,基于react 的 taro,以及TX团体出的全新框架 wepy。个人对 react 的好感 以及 taro 框架的走向成熟,促使我选择了 taro。

  云端开发就是将普通小程序的传统后端切换为微信提供的轻量级云端。而这个云端服务部分的开发其实是针对前端开发的,前端工程师很容易就能全栈开发出一整个小程序。但是这种轻量级解决方案也只是针对业务简单的项目,因为公共平台肯定有各种限制,它的出现只是让我们多了一个选择方案而已。

  接着进入主题,项目大体目录结构如下

  client #前端目录

  ├── config #配置

  ├── dist #输出

  ├── src #源目录

  └── index.html #入口文件

  cloud #云目录

  ├── dao #数据库操作函数集合

  ├── login #登录云函数

  └── ... #其他

  前端

  小程序的前端部分,想必不用过多讲解,因为这都是古玩论坛前端的基本功。就以首页为样例,使用了typeScript,主要功能是分页加载数据,调用微信提供的触发到达底部的api,onReachBottom即可。 taro 相关部分的使用请看 taro

  import Taro, { Component, Config } from "@tarojs/taro";

  import { View, Text, Navigator } from "@tarojs/components";

  import "./index.scss";

  interface IState {

  loading: boolean;

  size: number;

  page: number;

  total: number;

  list: Array<{ _id: string; summary: object }>;

  context:object;

  }

  export default class Index extends Component<{}, IState> {

  state={

  loading: false,

  size: 10,

  page: 0,

  total: -1,

  list: [],

  context:{}

  };

  config: Config={

  navigationBarTitleText: "Jeff's Blog",

  onReachBottomDistance: 50

  };

  componentWillMount() {

  this.getList();

  this.getLogin();

  }

  getDbFn(fn, param) {

  return Taro.callFunction({

  name: "dao",

  data: { fn, param }

  });

  }

  onReachBottom() {

  this.getList();

  }

  getList() {

  const { size, page, total, loading }=this.state;

  if (loading) return;

  TaroLoading({ title: 'loading', });

  if (total >=0 && size * page >=total) return;

  this.setState({ loading: true });

  this.getDbFn("getList", { size, page: page + 1 }).then(res=> {

  Taro.hideLoading();

  const total=res.result.total;

  const list=this.state.list.concat(res.result.list);

  this.setState({ loading: false, page: page + 1, total, list });

  }).catch(err=> {

  Taro.hideLoading();

  this.setState({ loading: false });

  });

  }

  onShareAppMessage (res) {

  return {

  title: "Jeff's Blog",

  path: '/pages/index/index'

  }

  }

  render() {

  return (

  

  {this.state.list.map(l=> (

  

  

  

  {l.summary.title}

  

  

  {l.summary.tags.map(t=> (

   {t}

  ))}

  {l.summary.date}

  

  

  ))}

  

  );

  }

  }

  与普通小程序不同的地方就是调用云端,云函数调用如官方样例所示

  getLogin(){

  Taro.callFunction({

  name: "login",

  data: {}

  }).then(res=> {

  this.setState({ context: res.result });

  }).catch(err=>{

  });

  }

  云端

  云端数据库是个文档型,操作风格与mongodb如出一辙,格式自然是json。最有用的还是操作数据库的部分,操作方法都已经 Promise 化,调用还是比较方便的。具体内容请查看文档: 小程序云开发

  //数据库引用

  const db=wx.database()

  //获取数据集合

  const todos=db.collection('todos')

  //获取记录数

  todos.count();

  //条件查找

  todos.where({done: false,progress: 50}).get()

  //插入

  todos.add({data: {content:'11',time:new Date()}},success:(res){});

  //更新

  todos.doc('todo').update({ data: { done: true}},success:(res){});

  //删除

  todos.where({done:true}).remove();

  //分页查找

  todos.orderBy('time','desc')

  .skip(start)

  .limit(size)

  .get();

  云函数

  调用云端的方式就要使用云函数,就以下面数据库操作库为例

  // 云函数入口文件

  const cloud=require("wx-server-sdk");

  cloud.init();

  // 云函数入口函数

  exports.main=async (event, context)=> {

  const { fn, param }=event;

  return dao[fn] (param);

  };

  // 调用数据库

  const db=cloud.database();

  // 表

  const posts=db.collection("posts");

  const tags=db.collection("tags");

  const dao={

  async getList({ page=1, size=10 }) {

  const start=(page - 1) * size;

  try {

  const { total }=await posts.count();

  const { data }=await posts

  .field({ summary: true })

  .orderBy('num','desc')

  .skip(start)

  .limit(size)

  .get();

  return {

  code: 0,

  list: data,

  total,

  message: "sucess"

  };

  } catch (err) {

  return {

  code: -1,

  list: [],

  total: -1,

  err: err,

  message: "error"

  };

  }

  },

  getPost({ id }) {

  return posts.doc(id).get();

  },

  async getTagList({ tag }) {

  try{

  const { data }=await tags.where({ name: tag }).get();

  if(!data.length){

  return {

  code:0,

  list:[],

  message: "success"

  };

  }

  const list=data[0].list.sort((a,b)=> b.num - a.num);

  return {

  code:0,

  list:list,

  message: "success"

  };

  } catch(err){

  return {

  code: -1,

  list:[],

  err: err,

  message: "error"

  };

  }

  }

  }

  将操作数据库的所有云函数合并成一个文件,将云函数入口封装一下,即把函数名字和参数都做完参数

  exports.main=async (event, context)=> {

  const { fn, param }=event;

  return dao[fn] (param);

  };

  对应前端部分也封装出一个调用数据库的方法

  getDbFn(fn, param) {

  return Taro.callFunction({

  name: "dao",

  data: { fn, param }

  });

  }

  云端部分开发完之后,在微信开发者工具里面上传云端代码即可,而其余部分的流程和普通小程序一样,这里也不再介绍。

目录
相关文章
|
7月前
|
小程序 前端开发 数据可视化
微信小程序云开发入门教程-全局文件介绍
微信小程序云开发入门教程-全局文件介绍
|
2月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
53 1
|
2月前
|
XML 小程序 JavaScript
小程序入门之项目配置说明和数据绑定
小程序入门之项目配置说明和数据绑定
42 1
|
2月前
|
小程序 开发工具
微信小程序云开发的开通
微信小程序云开发的开通
51 0
微信小程序云开发的开通
|
4月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
114 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
85 0
|
4月前
|
存储 运维 小程序
后端开发零负担!揭秘支付宝小程序云开发的高效与安全,你的项目也能飞速上线?
【8月更文挑战第27天】支付宝小程序云开发是由阿里云提供的集成开发环境,助力开发者高效、安全地构建小程序后端服务,免去服务器搭建,显著提高开发效率并降低运维成本。它集成了云函数、云数据库及云存储等功能,便于快速搭建后端逻辑。例如,仅需简单几行代码即可创建HTTP接口或进行数据管理。这使得开发者能更专注于业务逻辑和用户体验优化,同时平台还提供了强大的安全保障措施,确保数据安全和用户隐私。无论对于初创团队还是成熟企业,支付宝小程序云开发都能有效提升产品迭代速度和市场竞争力。
90 1
|
4月前
|
存储 小程序 数据可视化
小程序开发问题之使用小程序云服务开发个人相册小程序如何解决
小程序开发问题之使用小程序云服务开发个人相册小程序如何解决
|
5月前
|
存储 小程序 API
【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
89 0
【微信小程序-原生开发+云开发+TDesign】修改用户头像(含wx.chooseMedia,wx.cloud.uploadFile,wx.cloud.deleteFile的使用)
|
5月前
|
小程序 JavaScript 安全
【微信小程序-原生开发】转发给好友/群,分享到朋友圈(含单页模式访问云开发数据库的方法)
【微信小程序-原生开发】转发给好友/群,分享到朋友圈(含单页模式访问云开发数据库的方法)
198 0

热门文章

最新文章