学习Uni-app开发小程序Day23

今天学习了将上一章的所有核算的js,抽离出去,让在其他地方可以直接调用,然后和适配抖音的办法,封装网络请求;

抽离公共方法

如何将公共方法抽离?
1、在根目录创建一个目录,一般起名是:utils
2、写一个js页面
3、在js页面中,要用export将方法暴露出去,
4、在需要的地方,先引用公共方法,然后直接调用

在这里插入图片描述
这是设置的公共方法页面,如何引用呢?
在这里插入图片描述
这就是引用,先引用js页面,然后只用记录方法的名称,但是在使用的时候,因为是方法,所以是要用括号的

用条件编译对抖音小程序适配

为什么要对抖音进行适配,是因为抖音小程序是有左边的图标,那就需要把左边的图标进行计算,给自定义的标题要加上边距,不会让覆盖设置的标题。


export const getLeftIncon = () => {// #ifdef MP-TOUTIAOlet {leftIcon: {left,width}} = tt.getCustomButtonBoundingClientRect();return left + parseInt(width);// #endif// #ifndef MP-TOUTIAOreturn 0// #endif
}

tt.getCustomButtonBoundingClientRect():这是抖音开发中的api,可以获取到详细信息,这里只是做个记录,大家知道有这个情况,如果要开发的时候,就需要做更改设计。
条件编译,前面已经说过了,这里只说下,抖音在条件编译中,是要设置成TOUTIAO的,

封装网络请求

前面的页面,全部是本地静态的图片展示,现在使用网络请求获取图片信息。访问的地址:
咸虾米API免费接口大全;这是老师提供的接口地址,大家可以使用。
正常请求,是使用uni.request()请求,传递参数等,例如:

  let res = await uni.request({url: "https://tea.qingnian8.com/api/bizhi/homeBanner"})if (res.data.errCode === 0) {bannerList.value = res.data.data} else {uni.showToast({title: "接口错误"})}

这就是正常情况下的网络请求,但是当页面请求过多的时候,在使用这种方式,会让代码量多,查找的时候很不方便,因此,可以将请求地址,放在特定的文件夹下。
在根目录下创建一个文件:api文件
在api文件下创建一个js:apis.js
将所有网络请求放在apis中;例如:

export function apiGetBanner(){return uni.request({url:"https://tea.qingnian8.com/api/bizhi/homeBanner"})
}

在请求页面,使用下面的方法调用,这里需要知道,使用的是async…await的方式

const randomList = ref([]);const getDayRandom = async () => {let res=await apiGetDayRandom();randomList.value = res.data

这就是把请求放在apis.js文件中,减少重复性的代码。但当页面的请求多的时候,发现还是有重复性的很多代码,这就得使用前面说过的ES6 Promise的用法,ES7 async/await异步处理同步化,异步处理进化史,这里有课程,可以多看看,前面已经说了,这里在说下
ES6 Promise的用法,ES7 async/await异步处理同步化,异步处理进化史
这就是把网络请求的公共模块,放在公共文件夹下utils,这里生成一个request.js文件,把请求的公共地址参数等,都做成以参的形式,例如:

//这是定义一个基础网络地址
const BASE_URL = 'https://tea.qingnian8.com/api/bizhi';
//config = {},这是给的默认为空,当不传的时候,就是空
export function request(config = {}) {
//下面是参数设定,url:地址,data:参数;method:请求方式,默认GET;header:请求的keylet {url,data = {},method = "GET",header = {}} = config//这里是将传过来的请求地址和原地址进行拼接url = BASE_URL + url// header['access-key'] = "xxxxxx"console.log(url);return new Promise((resolve, reject) => {uni.request({url,data,method,header,success: res => {if (res.data.errCode === 0) {resolve(res.data)} else if (res.data.errCode === 400) {uni.showModal({title: "错误提示",content: res.data.errMsg,showCancel: false})reject(res.data)} else {uni.showToast({title: res.data.errMsg,icon: "none"})reject(res.data)}},fail: err => {reject(err)}})})
}

这样,就实现了网络请求的封装了,方便后期不论是修改还是维护。
最近感觉有点懈怠了,加油!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网网关在电梯按需维保方案中起到什么作用?梯联网网关

为减少电梯故障和预防电梯事故,保障人身和财产安全,基于物联网技术的电梯按需维保已在全国多地陆续推行,做到了电梯安全隐患预测式排查,处理问题更具科学性、针对性和精准性,有效提升了电梯运行的安全性。那么&#xf…

深度学习之基于YoloV5入侵检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着信息技术的飞速发展,网络安全问题日益凸显。入侵检测系统(IDS&#xff0…

IC设计运营管理ERP适合中小型芯片公司

在数字化、智能化的今天,企业资源计划(ERP)系统已成为企业管理的重要工具。特别是在中小型芯片公司中,IC设计运营管理ERP更是发挥着举足轻重的作用。 首先,ERP系统能够实现对企业内各种资源的集成管理,包括资金、人力资源、设备和…

我的第一个JAVA程序IDEA版

目录 第一步 新建一个空项目第二步 新建模块第三步 新建包第四步 新建类第五步 新建main方法 第一步 新建一个空项目 第二步 新建模块 第三步 新建包 第四步 新建类 然后在包文件夹下新建类 第五步 新建main方法

线程池(C++)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 线程池 实现线程类 #pragma once#include <pthread.h> #include <iostream> #include <vector> #include <string> #include <cstdlib> #include <cstring> #include <functional&…

Python深度学习基于Tensorflow(12)实战生成式模型

文章目录 Deep Dream风格迁移参考资料 Deep Dream DeepDream 是一项将神经网络学习模式予以可视化展现的实验。与孩子们观察云朵并尝试解释随机形状相类似&#xff0c;DeepDream 会过度解释并增强其在图像中看到的图案。 DeepDream为了说明CNN学习到的各特征的意义&#xff0c…

「51媒体」线下活动媒体同步直播,云分发,分流直播

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 线下活动除了邀请嘉宾&#xff0c;邀请媒体&#xff0c;邀请行业大咖KOL&#xff0c;来为活动站台&#xff0c;背书外&#xff0c;我们也可以将线下的活动同步在线上进行直播&#xff0c…

Codeforces Round 821 (Div. 2) C. Parity Shuffle Sorting (构造之全变成一样的)

给你一个数组 a a a &#xff0c;其中有 n n n 个非负整数。你可以对它进行以下操作。 选择两个索引 l l l 和 r r r ( 1 ≤ l < r ≤ n ) ( 1≤l<r≤n ) (1≤l<r≤n)。 如果 a l a r a_la_r al​ar​ 是奇数&#xff0c;则进行 a r : a l a_r:a_l ar​:al​…

react【框架原理详解】JSX 的本质、SyntheticEvent 合成事件机制、组件渲染过程、组件更新过程

JSX 的本质 JSX 代码本身并不是 HTML&#xff0c;也不是 Javascript&#xff0c;在渲染页面前&#xff0c;需先通过解析工具&#xff08;如babel&#xff09;解析之后才能在浏览器中运行。 babel官网可查看 JSX 解析后的效果 更早之前&#xff0c;Babel 会把 JSX 转译成一个 R…

AI大模型探索之路-实战篇4:DB-GPT数据应用开发框架调研实践

目录 前言一、DB-GPT总体概述二、DB-GPT关键特性1、私域问答&数据处理&RAG2、多数据源&GBI3、多模型管理4、自动化微调5、Data-Driven Multi-Agents&Plugins6、隐私安全 三、服务器资源准备1、创建实例2、打开jupyterLab 四、DB-GPT启动1、激活 conda 环境2、切…

区块链fisco联盟链搭建(二)搭建多群组联盟链

本文章只讲搭建的命令方法 以单机、四机构、三群组、八节点的星形组网拓扑为例 第一步创建并进入工作目录&#xff08;继续以fisco为例&#xff09; mkdir /fisco cd /fisco 获取搭链脚本上一篇文章区块链fisco联盟链搭建 (一)搭建单群组四节点联盟链中有 第二步生成多群组…

抖音小店没有流量不出单?归根到底,就是转化率不行!

哈喽~我是电商月月 新手做抖音小店&#xff0c;最忧愁的就是&#xff1a;店铺不出单怎么办&#xff1f; 商家通常会把没有销量的原因&#xff0c;都推向于“店铺没有流量” 但在抖音&#xff0c;这个日活量高达9亿的平台来说&#xff0c;任何商铺最不缺的应该就是流量了 但…

61850的总体建模原则

IEC 61850标准是电力系统自动化领域的一个重要标准,它定义了数据的模型和设备描述,使得不同厂家的设备之间能够实现互操作性。下面将围绕“61850的总体建模原则”展开讨论,主要包括物理设备建模基础、逻辑设备组合规则、逻辑节点功能划分、数据模型统一标准、配置文件规范描…

炒股前你要知道的股票知识

一、股票组成 A股股票组成板块有:地区板块、行业板块、证监会板块,概念板块。 其中各个板块还可以分为: A农、林、牧、渔业; B采矿业; C制造业; D电力、热力、燃气及水生产和供应业; E建筑业; F批发和零售业; G交通运输、仓储和邮政业; H住宿和餐饮业; I…

《Qt》使用Windeployqt发布程序

之前都是使用QTVS开发&#xff0c;这次直接使用QT开发&#xff0c;记录一下程序发布过程&#xff0c;方便后期使用查阅。 添加环境变量 在path目录下添加如下路径&#xff1a; 之前使用QTVS2013&#xff0c;添加如下路径 D:\App\Qt5.9.3\5.9.3\msvc2013_64\bin; D:\App\Qt…

dll文件是什么?电脑丢失某个dll文件有什么解决办法

Dll文件是什么&#xff1f;这个文件在电脑中是什么样的地位&#xff1f;如果电脑提示丢失了某个dll文件那么有什么办的解决这个问题呢&#xff1f;如何将丢失的dll文件进行修复呢&#xff1f;今天这篇文章将按就来教大家几种修复丢失dll文件问题的方法。 DLL 文件&#xff0c;全…

[Redis]基本全局命令

Redis存储方式介绍 在 Redis 中数据是以键值对的凡事存储的&#xff0c;键&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;是基本的数据存储单元。以下是对 Redis 键值对的详细讲解&#xff1a; 键&#xff08;Key&#xff09;&#xff1a; 类型&#xff1a;…

JVM、JRE和JDK的区别

首先需要确定的是JDK里是包含JRE的&#xff0c;而JRE里又包含JVM&#xff0c;它们区别在于面向的服务对象不同所以进行了不同的包装。 JVM&#xff1a;JVM是面向操作系统&#xff0c;.Class字节码->机器码以及程序运行的内存的管理。 JRE&#xff1a;JRE是面向于程序的&am…

全局配置路径无法识别的解决——后端

在全局配置路径reggie.path的时候&#xff0c;无法正常启动SpringBoot项目 Value("${reggie.path}")private String basePath; 查看application.yml的配置情况: 发现path没有起作用&#xff0c;推测是格式问题&#xff0c;冒号后面空格后即可

Web API——获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标&#xff1a;能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法&#xff1a; document.querySelector(css选择…