当前位置: 首页 > news >正文

web学习笔记(八十)

目录

1.小程序实现微信一键登录

2. 小程序的授权流程

 3.小程序配置vant库

4.小程序配置分包 

5.小程序配置独立分包

6.小程序分包预下载


1.小程序实现微信一键登录

要先实现小程序一键登录首先我们需要给按钮设置一个绑定事件,然后在绑定事件内部通过wx.login来获取登录凭证code,然后将将code+appid+secret传递到开发者服务器,进行登录操作,发送post请求,此时就需要后端进行接口校验code和appid是否正确,是否配对,如果校验成功,后端回利用openid和session_key加密生成token登录态,返回给小程序。然后前端再将token进行持久化存储。

Page({/*** 页面的初始数据*/data: {},login() {// 1.通过wx.login获取登陆凭证codewx.login({success: (res) => {console.log(res.code);//2. 将code+appid+secret传递到开发者服务器,进行登录操作,发送post请求// 3.开发者服务器利用jscode2session接口校验code和appid是否正确,是否配对,如果校验成功,后端回利用openid和session_key加密生成token登录态,返回给小程序// 4.小程序端将token存储起来,一键登录就完成了。此后发送请求需在请求头中携带token,让开发者服务器验证token是否正确,正确就返回数据。wx.request({url: "http://localhost:3000/login",method: "post",data: {code: res.code,},success: (data) => {console.log(data.data.token);// 做持久化存储wx.setStorageSync("token", data.data.token);// 向后端发送请求,获取购物车列表wx.request({url: "http://localhost:3000/carts",header: {auth: wx.getStorageSync("token"),},success: ({ data }) => {console.log("---", data);},});},});},});},
});

2. 小程序的授权流程

当我们的小程序需要定位或者是麦克风权限的时候是需要向用户发起授权请求的,。然后发起弹窗询问用户是否同意授权小程序该权限,如果用户之前已经同意授权则不会出现弹窗。在微信开发文档中有很多权限的接口,下面编写的是获取定位权限的实例,可以按照这个思路自行编写其他权限的相关代码。

  getAddress() {// 获取用户精确位置// 1.先查询是否已授权wx.getSetting({success(res) {console.log(res.authSetting);if (!res.authSetting["scope.userLocation"]) {// 2.调用接口进行授权  wx.authorizewx.authorize({scope: "scope.userLocation",success() {console.log("用户同意授权");wx.getLocation();},fail() {console.log("用户拒绝授权");// 3.如果用户拒绝授权,需要通过wx.openSetting再次进行授权,此时进入授权页面wx.showModal({title: "提示",content: "定位功能必须开启定位权限",success: () => {wx.openSetting({success(res) {console.log("开启成功", res.authSetting);},});},});},});} else {}},});},

 3.小程序配置vant库

(1)在终端输入 npm i @vant/weapp命令

(2)把app.js文件中的"style":"v2"去除(这句话是小程序用来渲染页面用到,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件的样式混乱。)

(3)构建npm包 (因为我们通过npm安装的包是node的包,我们需要编译成小程序的包才可以使用)。

点击工具>构建即可。

 

编译完成后会生成下列文件夹

(5)在app.json中 进行全局注册

eg:注册vue中的Button组件

  "usingComponents": {"van-button": "@vant/weapp/button/index"}

 

4.小程序配置分包 

     分包主要用来解决小程序体积过大的问题,小程序本身就有轻量化的特点,因此微信对小程序的体积是有要求的(整个小程序所有的分包大小不超过20MB,开通虚拟支付后的小游戏不超过30MB单个分包/主包不能超过2MB),采用分包可以优化小程序首次启动的下载时间(和路由懒加载的原理类似),还可以在多团队共同开发时更好的解耦协作。注意:TabBar页面只能放在主包里面。

 (1)创建subpackage文件夹,在里面创建pages文件夹,然后将需要放到分包且不是TabBar的页面移动到pages文件夹内,

(2) 在app.json中修改路由(注意:需要将pages中不需要的路由给删除掉)

  "subpackages": [{"root": "subpackages","pages": ["pages/Login/Login", "pages/lifecycle/lifecycle"]}],

5.小程序配置独立分包

         独立分包和小程序内部的分包和主包都没关系,他是单独独立出来的,通常我们将打开小程序时加载的广告页面放置到独立分包内部。

配置独立分包和分包的步骤是一样的,只不过是多了一个  "independent": true的配置来证明这个分包是独立分包。在app.js页面给分包添加配置:

    {"root": "singlepackage","pages": ["pages/ad/ad"],"independent": true}

6.小程序分包预下载

       因为小程序在加载页面时只会先加载主包的页面,分包的页面是被点击后才会进行下载的操作,这样会导致用户首次进入分包页面速度较慢,因此我们可以通过分包预下载将点击量高的页面所在分包提前下载出来,提供用户的体验感(注意:分包预下载是异步操作,系统会先将主包下载完成后进行预下载的操作)。

  "preloadRule": {"pages/index/index": {"network": "all","packages": ["subpackages"]}},

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • FreeRTOS——事件标志组
  • 探索ChatGPT是如何改变癌症护理
  • 刷题——在二叉树中找到最近公共祖先
  • adb不插usb线通过wifi调试
  • macOS查看系统日志的方法
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • uniapp实现一个键盘功能
  • Vue表单输入绑定v-model
  • 麒麟系统部署JeecgBoot
  • C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例
  • 多模态MLLM都是怎么实现的(11)--从SadTalker到快手LivePortait
  • 绝区叁--如何在移动设备上本地运行LLM
  • QQ音乐Android一面凉经
  • 磁盘就是一个超大的Byte数组,操作系统是如何管理的?
  • javascripr如何设计弹出输入框并在网页内输出输入内容
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【347天】每日项目总结系列085(2018.01.18)
  • ES6核心特性
  • Iterator 和 for...of 循环
  • JavaScript异步流程控制的前世今生
  • Lucene解析 - 基本概念
  • Spring Cloud Feign的两种使用姿势
  • spring-boot List转Page
  • 编写高质量JavaScript代码之并发
  • 初识 webpack
  • 大型网站性能监测、分析与优化常见问题QA
  • 关于springcloud Gateway中的限流
  • 利用DataURL技术在网页上显示图片
  • 普通函数和构造函数的区别
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 怎么把视频里的音乐提取出来
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​Redis 实现计数器和限速器的
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • (04)odoo视图操作
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (多级缓存)多级缓存
  • (二)windows配置JDK环境
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (四)Linux Shell编程——输入输出重定向
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (五)c52学习之旅-静态数码管
  • (转)ABI是什么
  • (转)c++ std::pair 与 std::make
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Framework .NET Core与 .NET 的区别
  • .net分布式压力测试工具(Beetle.DT)