1、发送请求

2、云函数中发送请求,例子request

  • https://github.com/request/request-promise    创建云函数movielist,右键在终端打开,输入  npm   install --save request
  • 然后输入 npm   install --save request-promise,当前云函数的package.json文件依赖为

  • 使用

    • 在云函数movielist的index.js中引入包

      // 云函数入口文件
      const cloud = require('wx-server-sdk') cloud.init() var rp = require('request-promise'); // 云函数入口函数
      exports.main = async(event, context) => {
      // ES6字符串模板的形式
      return rp(`http://api.douban.com/v2/movie/in_theaters?apikey=0df993c66c0c636e29ecbb5344252a4a&start=${event.start}&count=${event.count}`)
      .then(function(res) {
      // 显示在云函数的服务端
      console.log(res);
      return res;
      })
      .catch(function(err) {
      console.error(err);
      });
      }
    • 以请求豆瓣电影列表为例子,在movie的js页面,刚进入页面获取数据,因此onLoad生命周期的代码为
      /**
      * 生命周期函数--监听页面加载
      */
      onLoad: function (options) {
      this.getMovieList();
      },
      /**
      * 获取电影列表的数据
      */
      getMovieList() {
      // 加载框
      wx.showLoading({
      title: '加载中',
      })
      wx.cloud.callFunction({
      name: 'movielist',
      data: {
      start: this.data.movieList.length,
      count:
      },
      success: res => {
      this.setData({
      // 对返回的字符串进行解析,并且每次返回的数据应该拼接在原有数据的后面
      movieList: this.data.movieList.concat(JSON.parse(res.result).subjects)
      });
      // 隐藏加载框
      wx: wx.hideLoading()
      },
      fail: error => {
      wx.showToast({
      title: '获取电影列表数据失败',
      })
      }
      })
      },
    • 滚动条滚动到底部时异步的加载10条数据,在生命周期onReachBottom中再次发送请求
      /**
      * 页面上拉触底事件的处理函数
      */
      onReachBottom: function () {
      this.getMovieList()
      }
  • 跳转详情页面演示
    • 点击按钮切换详情

      <button class="movie-comment" catchtap="onCatchSkipToComment" data-movieid="{{item.id}}">评价</button>
    • movie.js
      /**
      * 跳转评价的详情页面
      */
      onCatchSkipToComment(event) {
      // 跳转新页面,保留上一个页面
      wx.navigateTo({
      url: `../comment/comment?movieid=${event.target.dataset.movieid}`,
      })
      },
    • 在comment的js里面
      /**
      * 页面的初始数据
      */
      data: {
      movieDetail : {}
      }, /**
      * 生命周期函数--监听页面加载
      */
      onLoad: function (options) {
      // 获取上一个页面传过来的参数
      this.getMovieDetail(options.movieid)
      },
      /**
      * 获取电影详情信息
      */
      getMovieDetail(movieid) {
      wx.showLoading({
      title: '加载中',
      })
      wx.cloud.callFunction({
      name: 'getDetail',
      data: {
      movieid: movieid
      },
      success: res => {
      this.setData({
      movieDetail : JSON.parse(res.result)
      })
      console.log(this.data.movieDetail)
      wx.hideLoading()
      },
      fail: error => {
      console.log(error)
      }
      })
      },
    • 在云函数getDetail的index中
      // 云函数入口文件
      const cloud = require('wx-server-sdk') cloud.init() var rp = require('request-promise'); // 云函数入口函数
      exports.main = async (event, context) => {
      return rp(`http://api.douban.com/v2/movie/subject/${event.movieid}?apikey=0df993c66c0c636e29ecbb5344252a4a`)
      .then(function (res) {
      // 显示在云函数的服务端
      console.log(res);
      return res;
      })
      .catch(function (err) {
      console.error(err);
      });
      }
  • 获取用户信息
    • WXML

      <!-- 第一种方式 -->
      <view class='profile'>
      <view class="profile-img">
      <open-data type="userAvatarUrl"></open-data>
      </view>
      <open-data type="userNickName" class="profile-name"></open-data>
      </view>
      <!-- 第二种方式 -->
      <button open-type="getUserInfo" bindgetuserinfo="getUserInfo">获取用户信息</button>
    • 微信小程序提供了开放能力open-data,同时button组件内的type属性也支持开放能力
  • 小程序的审核上线
    • 由于后端采用小程序的云开发(免费),因此不需要购买相对应的服务器;
    • 设置体验版:点击微信开发工具的  “上传”  按钮,上传到腾讯云;
    • 可以到微信公众平台版本管理中提交审核,审核通过后成为线上版本

3、遇到的问题

  1. 电影详情中高度模糊(毛玻璃)效果
    • WXML

       <view class='detail-container' style='background: url({{movieDetail.images.large}})'></view>
      <view class='detail-mask'></view>
    • WXSS
      .detail-container {
      height: 400rpx;
      filter: blur(40rpx);
      opacity: 0.4;
      } .detail-mask {
      position: absolute;
      width: %;
      height: 400rpx;
      background-color: #;
      top: ;
      left: ;
      z-index: -;
      }

微信小程序开发(三)----- 云开发案例的更多相关文章

  1. 微信小程序中使用云开发获取openid

    微信小程序获取openid 新建一个微信小程序项目 注意要注册一个自己的小程序账号,并有属于自己的appid 点击云开发按钮,自行填入开发环境名称 打开app.js,找到依赖环境 修改为刚才设置的环境 ...

  2. 微信小程序--简约风博客小程序(基于云开发 - 全开源)

    微信小程序--简约风博客小程序(基于云开发 - 全开源) 项目启动纯属突发奇想,想看看博客小程序,例如wehalo博客小程序,但是感觉自建平台还要浪费自己的服务器算力,还没有访问量,省省吧. 本着白嫖 ...

  3. 微信小程序购物商城系统开发系列-工具篇

    微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将 ...

  4. 微信小程序购物商城系统开发系列

    微信小程序购物商城系统开发系列 微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统. ...

  5. 从微信小程序到鸿蒙js开发【11】——页面路由

    目录: 1.router.push()&wx.navigateTo() 2.router.replace()&wx.redirectTo() 3.router.back()&w ...

  6. 微信小程序版博客——开发汇总总结(附源码)

    花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...

  7. 微信小程序购物商城系统开发系列-目录结构

    上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的 ...

  8. 从微信小程序到鸿蒙js开发【12】——storage缓存&自动登录

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 正文: 在应用开发时,我们常需要将一些数据缓存到本地,以提升用户体验.比如在一个电商的app中,如果希望用户登录成功后,下次打 ...

  9. 从微信小程序到鸿蒙js开发【13】——list加载更多&回到顶部

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 目录: 1.list加载更多 2.list回到顶部 3.<从微信小程序到鸿蒙js开发>系列文章合集 1.list加 ...

  10. 从微信小程序到鸿蒙js开发【15】——JS调用Java

    鸿蒙入门指南,小白速来!0基础学习路线分享,高效学习方法,重点答疑解惑--->[课程入口] 目录:1.新建一个Service Ability2.完善代码逻辑3.JS端远程调用4.<从微信小 ...

随机推荐

  1. [CF666E]Forensic Examination:后缀自动机+线段树合并

    分析 用到了两个小套路: 使用线段树合并维护广义后缀自动机的\(right\)集合. 查询\(S[L,R]\)在\(T\)中的出现次数:给\(T\)建SAM,在上面跑\(S\),跑到\(R\)的时候先 ...

  2. Android_(菜单)选项菜单

    Android系统中菜单分为Options Menu.Context Menu.Sub Men三种 Options Menu和Context Menu属于一级菜单 Sub Menu属于Options ...

  3. request.getAttribute()和request.getParameter()两个方法的区别

    request.getAttribute()获得的数据必须曾经有过setAttibute()过: 而request.getParameter()获得是客户端POST或者GET请求时所携带的参数的值 g ...

  4. C++入门经典-例4.10-使用static变量实现累加

    1:静态变量static可以分为静态局部变量和静态全局变量,静态局部变量的值在函数调用结束后不消失,静态全局变量只能在本源文件中使用. 静态变量属于静态存储方式,它具有以下特点: (1)静态变量在函数 ...

  5. Java第09次实验(流与文件)

    第一次实验 0. 字节流与二进制文件 1.使用DataOutputStream与FileOutputStream将Student对象写入二进制文件student.data 二进制文件与文本文件的区别 ...

  6. DS博客大作业--树

    1.树的存储结构说明 树节点结构体 data:文件名 brother:兄弟节点 child:孩子节点 type:节点的类型,0为文件,1为目录 h:节点所在的层次 2.树的函数说明 头文件 函数1:C ...

  7. RF快捷键

    常用快捷键 操作 键 重命名 F2 搜索关键字 F5 执行用例 F8 创建新工程 ctrl+n 创建新测试套 ctrl+shift+f 创建新用例 ctrl+shift+t 创建新关键字 ctrl+s ...

  8. Gson解析list类型的json串

    Gson gson = new Gson(); Type type = new TypeToken<List<Object>>() {}.getType(); List< ...

  9. python-静态方法和类方法及其使用场景

    静态方法和类方法 静态方法 我们在类中定义的方法都是对象方法,也就是说这些方法都是发送给对象的消息.实际上,我们写在类中的方法并不需要都是对象方法,例如我们定义一个"三角形"类,通 ...

  10. 【7】解决:移动端点击a链接出现蓝色边框

    [1]_blank : 浏览器总在一个新打开.未命名的窗口中载入目标文档. [2]title :  鼠标悬浮显示的文字. [3]href : 跳转到哪个链接.     a{    border: no ...