第23/90步《前端篇》第5章 平台功能优化 第14课

简介: 今天学习第5章平台功能优化的第14课,绘制微信用户头像。

image.png

今天学习第5章平台功能优化的第14课,绘制微信用户头像。


学习目标


  • 了解小游戏的授权范围;
  • 使用 UserInfoButton 拉取用户信息;
  • 了解为什么使用全等运算符而不是等号运算符;
  • 在画布上绘制用户头像;
  • 学习使用箭头函数及判定this对象;
  • 主动销毁原生按钮;
  • 主动查询用户的授权情况;
  • 在测试中清理缓存。

主要知识点/技能点


  • 当开发者需要获取用户的私隐信息时,例如获取用户头像、昵称、地理位置、手机号、收货地址等,则必须先获得用户的授权。

  • 小游戏的授权接口 wx.authorize,可用于向用户发起授权请求,成功调用这个接口后会立刻弹窗,询问用户是否同意授权程序使用某项功能或获取某些数据;如果用户在此之前已经授权,则不会出现弹窗,而是直接返回已有的授权成果。

  • 小游戏授权主要有8类:

image.png

  • scope.userInfo 权限并不能直接通过wx.authorize接口查询,必须在用户与界面有交互行为之后才能拉取。

  • 单击UserInfoButton组件返回的对象,与以前直接调用wx.getUserInfo接口返回的对象是相同的(在小程序刚上线时wx.getUserInfo接口是充许直接调用的)。单击UserInfoButton时,我们可以将其理解为是小游戏/小程序环境帮助我们调用了wx.getUserInfo接口,然后将调用结果通过Tap事件的回调函数返回给了我们。

  • 小游戏加密信息的解密步骤:(1)开发者在后端拿到加密数据以后,如果想解密数据,需要先获得session_key;(2)取得session_key以后,先以sha1( rawData + session_key)计算出signature1,然后判断signature1是否等于微信服务器传来的signature;(3)如果signature1与signature两者相等,视为签名验证通过,然后再以名称为AES-128-CBC的解密算法,以session_key和微信服务器传来的初始向量iv为条件,将加密的encryptedData最终解密,拿到所有信息。

  • userInfo这个对象,它的类型是 UserInfo,包含这些属性:nickName用户昵称、avatarUrl用户头像图片的URL等。

  • 示例中使用wx.createUserInfoButton接口创建的UserInfoButton组件是一个文本按钮,是基于文本绘制和带圆角效果的矩形绘制实现的。

  • 为什么使用全等运算符而不是等号运算符?全等运算符会同时检查两边表达式的值与类型,只有两项都相同时才返回true,而等于运算符不要求类型相同,只要求值相同;等于运算符可能会伴随着类型的隐式转换,这可能是一个隐患。

  • 箭头函数由3部分组成:参数、箭头符号(=>)和函数体,它没有原型(prototype),没有自己的this,也没有arguments参数。


  • 箭头函数内部的 this 关键字所指向的对象是由箭头函数所在的父作用域决定的,并不是箭头函数本身,这是箭头函数除了格式简洁之外最大的用途之一。

  • 箭头函数没有自己的this,箭头函数中的this指向运行时父级作用域下的this对象。考察代码中的this具体指向哪个对象,我们要看三个问题,而这其中又涉及三条规则:

  • (1)是不是顶级函数?这要看函数是不是全局作用域下的顶级函数,如果是,this等于全局对象;
    (2)是不是箭头函数?这要看是不是箭头函数,如果是,将箭头函数看成lamda表达式,以其父函数重新作为考察对象,回到第1条规则继续;
    (3)有没有执行者?如果不是箭头函数,看被执行的函数有没有执行者,如果有,this等于执行者;如果没有执行者,this等于全局对象。

image.png

  • 箭头函数与普通函数的4个区别:

  • (1)箭头函数中没有 arguments 对象;(2)箭头函数不能用作构造器,不能使用 new 关键字实例化;(3)使用 call或 apply调用时,对 this 没有影响;(4)没有 prototype 原型。

  • 使用wx.createUserInfoButton创建的UserInfoButton对象,有一个方法 destroy,可用于销毁按钮。

实践疑难点


  • 在调用接口时注意进行结果合法性的判断。例如当使用UserInfoButton获取用户信息时,只有在接口调用成功时,才会返回UserInfo对象,因此我们在第2行将res.errMsg与"getUserInfo:ok"进行判断,如果相等,代表接口调用成功。

  • 第一次重新编译后,单击“拉取用户信息”,头像却不显示的原因是:头像在绘制过后,马上被擦除了。我们必须将图像绘制放在 render 函数内部,且每次渲染都要让其参与绘制。

  • 左挡板为什么默认没有显示?leftPanelY本应该是一个变量,代表左挡板的绘制起点Y坐标,但我们在代码中却将它声明为了一个对象,直到有鼠标移动事件后,才将它修改为了合法的值。这是由于JS的弱类型特征造成的,在开发中值得注意。

小结


在这一课中,关于this对象的判定是重点。


目录
相关文章
|
2月前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
15天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
49 3
|
2月前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
1月前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
2月前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
50 2
|
2月前
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
2月前
|
Web App开发 缓存 监控
前端性能优化实战:从代码到部署的全面策略
前端性能优化实战:从代码到部署的全面策略
36 1
|
2月前
|
Web App开发 前端开发 JavaScript
前端性能优化实战:从代码到部署的全面指南
前端性能优化实战:从代码到部署的全面指南
37 1
|
2月前
|
缓存 监控 前端开发
前端性能优化:从代码到部署的全面策略
前端性能优化:从代码到部署的全面策略
|
2月前
|
缓存 前端开发 JavaScript
前端性能优化:让你的网站更快、更流畅
前端性能优化:让你的网站更快、更流畅
31 0