微信小程序开发入门教程(二)---分析官方云开发例子中的一些功能
接上一篇文章:https://www.cnblogs.com/pu369/p/11326538.html
1、官方云开发的例子中,点击获取 openid,对应代码在E:\wxDEV\helloyun\miniprogram\pages\index\index.wxml中的
<!-- 用户 openid -->
<view class="userinfo">
<button
open-type="getUserInfo"
bindgetuserinfo="onGetUserInfo"
class="userinfo-avatar"
style="background-image: url({{avatarUrl}})"
></button>
<view>
<button class="userinfo-nickname" bindtap="onGetOpenid">点击获取 openid</button>
</view>
</view>
分析一下:
1.1<!-- 用户 openid -->表示代码注释
1.2<view class="userinfo"> view相当于html页的div , urerinfo这个class的定义位于E:\wxDEV\helloyun\miniprogram\pages\index\index.wxss中(CSS3,flex布局)
第一个button元素中,open-type="getUserInfo"和bindgetuserinfo="onGetUserInfo",其中open-type表示微信开放能力,bindgetuserinfo表示具体的能力,即:
用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致。参考官方说明:https://developers.weixin.qq.com/miniprogram/dev/component/button.htmlonGetUserInfo的定义在E:\wxDEV\helloyun\miniprogram\pages\index\index.js中,如下:
onGetUserInfo: function(e) {
if (!this.logged && e.detail.userInfo) {
this.setData({
logged: true,
avatarUrl: e.detail.userInfo.avatarUrl,
userInfo: e.detail.userInfo
})
}
},
上面代码中,将参数e对象的成员变量赋给本页面的data变量(在E:\wxDEV\helloyun\miniprogram\pages\index\index.js中定义),然后在对应的index.wxml中用类似于{{avatarUrl}}进行输出。参数e的数据结构参见:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html
1.3第二个button元素:<button class="userinfo-nickname" bindtap="onGetOpenid">点击获取 openid</button>
bindtap绑定的onGetOpenid定义在对应的index.js中
onGetOpenid: function() {
// 调用云函数
wx.cloud.callFunction({
name: 'login',
data: {},
success: res => {
console.log('[云函数] [login] user openid: ', res.result.openid)
app.globalData.openid = res.result.openid
wx.navigateTo({
url: '../userConsole/userConsole',
})
},
fail: err => {
console.error('[云函数] [login] 调用失败', err)
wx.navigateTo({
url: '../deployFunctions/deployFunctions',
})
}
})
},
通过调用云函数login(位于E:\wxDEV\helloyun\cloudfunctions\login),在云函数中用getWXContext获取了openid等,参考:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/utils/getWXContext.html
2、继续分析E:\wxDEV\helloyun\miniprogram\pages\index\index.wxml,关于上传图片
<!-- 上传图片 -->
<view class="uploader">
<view class="uploader-text" bindtap="doUpload">
<text>上传图片</text>
</view>
<view class="uploader-container" wx:if="{{imgUrl}}">
<image class="uploader-image" src="{{imgUrl}}" mode="aspectFit" bindtap="previewImg"></image>
</view>
</view>
其中,bindtap绑定的doUpload在对应的index.js中,主要是用 wx.chooseImage和 wx.cloud.uploadFile(详细说明可从官方文档搜索):
// 上传图片
doUpload: function () {
// 选择图片
wx.chooseImage({
count: ,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: function (res) { wx.showLoading({
title: '上传中',
}) const filePath = res.tempFilePaths[] // 上传图片
const cloudPath = 'goods/my-image' + Math.random() + filePath.match(/\.[^.]+?$/)[]
wx.cloud.uploadFile({
cloudPath,
filePath,
success: res => {
console.log('[上传文件] 成功:', res) app.globalData.fileID = res.fileID
app.globalData.cloudPath = cloudPath
app.globalData.imagePath = filePath wx.navigateTo({
url: '../storageConsole/storageConsole'
})
},
fail: e => {
console.error('[上传文件] 失败:', e)
wx.showToast({
icon: 'none',
title: '上传失败',
})
},
complete: () => {
wx.hideLoading()
}
}) },
fail: e => {
console.error(e)
}
})
},
3、继续分析E:\wxDEV\helloyun\miniprogram\pages\index\index.wxml,关于操作数据库
<!-- 操作数据库 -->
<view class="uploader">
<navigator url="../databaseGuide/databaseGuide" open-type="navigate" class="uploader-text">
<text>前端操作数据库</text>
</navigator>
</view>
其中,用navigator的open-type="navigate"和url属性,使页面跳转到E:\wxDEV\helloyun\miniprogram\pages\databaseGuide
看一下databaseGuide.js
第一行const app = getApp()与index.js中的一样,用于获取小程序全局唯一的 App 实例。(app.js中还有一个App函数,在其中可声明全局变量globalData,注意区别)
之后用page函数,设置了页面显示所需的data对象,OnLoad函数(其中获取了全局变量globalData对象),以及其它在对应的wxml文件中用bindtap绑定的函数(方法)
4、其他位于E:\wxDEV\helloyun\miniprogram\pages下的页面类似,每个页面由后缀为wxml,wxss,js,json的四个文件组成,对其中不明白的代码,首先可以查官方手册或百度搜索,不再分析。
5、最后,让我们新建一个页面吧。
在开发者工具中,在项目的mininprogram\pages目录上,点新建目录,输入名称myabout,在目录myabout上点右键,输入页面名称仍为myabout
参考上篇文章,在E:\wxDEV\helloyun\miniprogram\pages\index\index.wxml代码的最后面的</view>之前加上代码,以指向myabout,如下:
<!-- myabout -->
<view class="uploader">
<navigator url="../myabout/myabout" open-type="navigate" class="uploader-text">
<text>myabout</text>
</navigator>
</view>
再修改一下myabout.wxml中 <text>标签中的内容。测试一下,OK。
……
微信小程序开发入门教程(二)---分析官方云开发例子中的一些功能的更多相关文章
- 微信小程序(七)-项目实例(原生框架 MINA转云开发)==02-云开发-配置
云开发:1.就是用云函数的型式来使用云存储和云数据库完成各种操作! 2.只关注调什么函数,完成什么功能即可,无需关心HTTP请求哪一套! 3.此模式不代表没有服务器,只是部署在云环境中 ...
- 微信小程序 新手入门教程
因为工作需要,最近学习了一下微信小程序,在此分享一下大概的流程. 强烈建议大家先去看微信小程序简易教程:点我进入 起步: 安装微信web开发软件者工具,需要破解的同学可以网上找破解教程,很简单的,这里 ...
- 微信小程序(八)-项目实例(原生框架 MINA转云开发)==03-云开发-数据库
云数据库 云数据库开发文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database.html 1.新建云数据库( ...
- 原创:从零开始,微信小程序新手入门宝典《一》
为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...
- 微信小程序初使心得【微信小程序快速入门】
摘要: 2016年推出微信小程序,时至今日,历经几个版本的更新,已形成了相对实用和稳定的服务平台.本文简单的介绍了微信小程序的入门用法,今后会继续关注和实践. 2016年推出微信小程序,时至今日,历经 ...
- 从零开始:微信小程序新手入门宝典《一》
为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习: 一:微信小程序的特点 张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使 ...
- 微信小程序《沈航二手书》
微信小程序<沈航二手书> 0x01. 利益相关者 利益相关者:是指与客户有一定利益关系的个人或组织群体,可能是客户内部的(如雇员),也可能是客户外部的(如供应商或压力群体). 根据相关利 ...
- 解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的
解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的 .chart{ width: 100%; text-align: center; } .canvas{ ...
- 微信小程序动态生成保存二维码
起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <view class ...
- 微信小程序把玩(十二)text组件
原文:微信小程序把玩(十二)text组件 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字. wxml <view > <text>我是文本组件&l ...
随机推荐
- (八)springMvc 的参数绑定
参数绑定 将客户端传来的 key/value 数据,绑定到 Controller 参数的过程 : 这一过程发生在调用 处理器适配器 的时候,spring 会去调用 参数绑定 组件,我使用的版本(4.5 ...
- Ural 1201 Which Day Is It? 题解
目录 Ural 1201 Which Day Is It? 题解 题意 输入 输出 题解 程序 Ural 1201 Which Day Is It? 题解 题意 打印一个月历. 输入 输入日\((1\ ...
- 测试常用__linux命令
1.显示目录和文件的命令 Ls:用于查看所有文件夹的命令. Dir:用于显示指定文件夹和目录的命令 Tree: 以树状图列出目录内容 Du:显示目录或文件大小 2.修改目录,文件权限和属主及数组命令 ...
- 「网络流 24 题」最长 k 可重区间集
给定区间集合$I$和正整数$k$, 计算$I$的最长$k$可重区间集的长度. 区间离散化到$[1,2n]$, $S$与$1$连边$(k,0)$, $i$与$i+1$连边$(k,0)$, $2n$与$T ...
- [http]HTTP请求过程
我们在浏览器输入http://www.baidu.com想要进入百度首页,但是这是个域名,没法准确定位到服务器的位置,所以需要通过域名解析,把域名解析成对应的ip地址,然后通过ip地址查找目的主机.整 ...
- MQTT协议探究(三)
1 回顾与本次目标 1.1 回顾 主题通配符 主题语义和用法 WireShark进行抓包分析了报文 报文分析: SUBSCRIBE--订阅主题 SUBACK--订阅确认 UNNSUBSCRIBE--取 ...
- Java生成随机数列表
生成随机数列表 1.Java8以前 (1)Math.random private List<UserEntity> random1() { ArrayList<UserEntity& ...
- YoloV3 训练崩溃
经过排查 发现是这里出了问题 然后发现是标注文件里有 x=0 y=0 这样的数据,46_Jockey_Jockey_46_576.txt , 那么肯定是标注文件出了问题!! 删除该标注文件即可. ...
- Node.js Express项目搭建
讲干货,不啰嗦,Express 是一个简洁而灵活的 node.js Web应用框架,使用 Express 可以快速地搭建一个完整功能的网站.本教程介绍如何从零开始搭建Express项目. 开发环境:w ...
- Centos7.7安装swoole
系统版本:centos 7.7(查看系统版本:cat /etc/redhat-release) 执行命令安装swoole: yum update -y && yum remove ph ...