小程序request三层封装和分包以及路由和组件传参

  1. 工程化的概念
  2. 工程化API封装 【重点】30%
  3. 工程化组件封装 【重点】30%
  4. 小程序路由【重点】30%
  5. 上架
  6. 小程序分包【重点】10%

1. 工程化的概念

在开发小程序时,需要将自己的代码进行封装,命名要规范,位置要规范,以达到代码复用,可以大量生产的效果

2. request三层封装

对 wx.request() 发请求的API进行三层封装

2.1 工具函数层

utils/request.js 对 wx.request进行封装

//封装第一层,对wx.request进行封装
const baseURL="http://www.look518.com";const request = (options) => {return new Promise((resolve, reject)=>{wx.request({...options,url: baseURL + options.url,success(res){//将异步操作的结果通过resolve传递出去resolve(res)},fail(err){//将失败的信息传递出去reject(err)}})})
}module.exports = request;

2.2 接口函数层

api/film.js 对接口进行封装

//封装第二层,对接口进行封装
const request = require('../utils/request.js');//获取电影列表
const getList = (data)=>{return request({method:'get',url:'/api/film.php?a=list',data,})
}module.exports={getList,
}

2.3 应用层

在 index.js 页面逻辑上进行调用

let {getList}=require('../../api/film.js');async onLoad(){let res=await getList({page:1, pagesize:5})console.log(res.data.data);
}

3. 自定义组件【重点】

3.1 创建和使用组件

第一步:创建组件

新建 components 文件夹,在里面新建组件文件夹,再点 鼠标右键 => “新建 Component”

在 .wxml 中写组件的内容

第二步:使用组件

在 index.json 中注册组件

"usingComponents": {"my-button":"../../components/my-button/my-button"
}

在 index.wxml 中使用组件

<my-button></my-button>

3.2 组件的生命周期

组件的生命周期写在 .js 中的 lifetimes 属性中

//生命周期函数
lifetimes:{created(){console.log('1. 组件创建了')},attached(){console.log('2. 组件渲染完成了')},detached(){console.log('3. 组件被干掉了');}
}

3.3 参数父传子

将父组件的数据传递给子组件

第一步:在父组件中设置自定义属性,将数据传递给子组件

<!-- 数据父传子 -->
<my-button txt="普通按钮"></my-button>
<my-button txt="马上注册新会员"></my-button>
<my-button></my-button>

第二步:在子组件中接收数据

properties: {txt:{type:String,  #数据类型value:'我是按钮', #默认值},...
},

3.4 参数子传父

将子组件的数据传递给父组件

第一步:在子组件中触发自定义事件,并传参数

//数据子传父
this.triggerEvent('toFather', this.data.num)

第二步:在父组件中使用子组件时,设置自定义事件,接收参数

<my-button txt="普通按钮" bind:toFather="getData"></my-button>//接收子组件传回的数据
getData(obj){console.log(obj.detail);
},

4. 小程序的路由【重点】

4.1 配置路由

在 app.json 全局配置中配置路由

"pages": ["pages/index/index","pages/list/list"
],

4.2 配置 tabBar

在 app.json 全局配置中,可以添加 tabBar 实现底部导航

"tabBar": {"list": [{"pagePath": "pages/index/index","iconPath":"images/home1.png","selectedIconPath": "images/home2.png","text": "首页"}, {"pagePath": "pages/list/list","text": "列表"}, {"pagePath": "pages/news/news","text": "新闻"}]
},

4.3 路由的API

switchTab切换tab,只能切换出现在 tabBar 上面的页面

wx.switchTab({url:'/pages/list/list'})

reLaunch,清空全部页面,跳转到指定的页面

wx.reLaunch({url: '/pages/list02/list02'})

redirectTo,关闭当前页面,跳转到指定的页面

wx.redirectTo({url: '/pages/list02/list02'})

navigateTo,保留当前页面,跳到下一个页面

wx.navigateTo({url: '/pages/list01/list01'})

navigateBack,后退一个页面

wx.navigateBack()

5. 小程序上架

小程序上架必须按公众平台的上线流程,完成每一个步骤

第一步:完善信息

第二步:开发小程序

第三步:上传到微信服务器, 开发版本 》 审核版本 》 上线版本

注意:不要上传demo,即使上传了demo也不要提交审核

6. 小程序分包

小程序单包大小限制为 2M,如果开发的项目大于2M就需要分包

第一步:配置 app.json ,添加子包的设置

"subpackages": [{"root":"pageA", "pages":["index/index"]},{"root":"pageB", "pages":["home/home"]}
],

第二步:在主包中跳转过去

第三步:上传

注意事项:

  1. tabBar 页面必须在主包内
  2. subpackage 的根目录不能是另外一个 subpackage 内的子目录
  3. 每个子包是独立的,相互之间不能访问,但是每一个子包都可以访问主包的数据

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

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

相关文章

揭示CTGAN的潜力:利用生成AI进行合成数据

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 我们都知道&#xff0c;GAN在生成非结构化合成数据&#xff08;如图像和文本&#xff09;方面越来越受欢迎。然而&#xff0c;在使用GAN生成合成表格数据方面所做的工作很少。合成数据具有许多好处&#x…

排序第二课【选择排序】直接选择排序 与 堆排序

目录 1. 排序的概念&#xff1a; 2.选择排序的基本思想 3.直接选择排序 4.堆排序 1. 排序的概念&#xff1a; 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xf…

Gof23设计模式之享元模式

1.定义 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销&#xff0c;从而提高系统资源的利用率。 2.结构 享元&#xff08;Flyweight &#xff09;模式中存在以下两种状态&#xff1a; 内…

vue+iviewUi+oss直传阿里云上传文件

前端实现文件上传到oss&#xff08;阿里云&#xff09;适用于vue、react、uni-app&#xff0c;获取视频第一帧图片 用户获取oss配置信息将文件上传到阿里云&#xff0c;保证了安全性和减轻服务器负担。一般文件资源很多直接上传到服务器会加重服务器负担此时可以选择上传到oss&…

SpringBoot容器--注解的使用

文章目录 容器功能--注解Spring 注入组件的注解Component、Controller、Service、Repository案例演示 Configuration应用实例传统方式应用实例使用SpringBoot 的Configuration 添加/注入组件 Configuration 注意事项和细节 Import应用实例 ConditionalConditional 介绍应用实例…

VSCode配置SSH远程免密登录服务器

VScode远程开发时&#xff0c;每次都需要输入密码&#xff0c;其实同理可以和其他应用类似配置免密登录&#xff0c;流程也类似。 1.在本地主机生成公钥和秘钥 ssh-keygen 2.将公钥内容添加至服务器 将生成钥对时会给出其保存路径&#xff0c;找到公钥&#xff0c;复制内容&am…

最小二乘拟合二维直线

目录 1. 原理概述2. python实现3. matlab实现4. C实现 爬虫网站自重。 1. 原理概述 平面直线的表达式为&#xff1a; y k x b (1) ykxb \tag{1} ykxb(1)   假设有 n n n个点 ( x i , y i ) &#xff08; 0 ≤ i < n &#xff09; (x_i, y_i)&#xff08;0≤i<n&…

一起来看看 Compose Accompanist

好久不见&#xff0c;真的挺久了&#xff0c;之前一个月写的文章比现在多半年的都多。今年第一篇文章是简单写了下 Android 14 的适配&#xff1a;Android 14 又来了&#xff1f;别扶&#xff01;抬起我来吧&#xff01; 今天咱们来一起看看 Compose Accompanist 吧&#xff0…

docker菜谱

DockerHub&#xff1a;https://hub.docker.com/ 记录docker常用软件安装&#xff0c;欢迎大家投稿。&#x1f60e;&#x1f60e;&#x1f60e; 文章目录 1. Redis 1. Redis 1、下载redis镜像&#xff1a; docker pull redis:6.2.8 docker pull redis:7.0.02、启动容器&#x…

DAY02_Spring—第三方资源配置管理Spring容器Spring注解开发Spring整合Mybatis和Junit

目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean…

sigmoid ReLU 等激活函数总结

sigmoid ReLU sigoid和ReLU对比 1.sigmoid有梯度消失问题&#xff1a;当sigmoid的输出非常接近0或者1时&#xff0c;区域的梯度几乎为0&#xff0c;而ReLU在正区间的梯度总为1。如果Sigmoid没有正确初始化&#xff0c;它可能在正区间得到几乎为0的梯度。使模型无法有效训练。 …

TCP和UDP

目录 TCP和UDP是什么&#xff1f; TCP和UDP有什么区别? 三次握手和四次挥手 TCP维护可靠的通信方式 拥塞控制 滑动窗口的原理 什么是粘包以及粘包的原因 粘包的处理方式 TCP和UDP使用场景 TCP和UDP是什么&#xff1f; TCP&#xff1a; 传输控制协议&#xff08;TCP&am…

什么是框架

框架&#xff08;Framework&#xff09;是一个框子——指其约束性&#xff0c;也是一个架子——指其支撑性。 IT语境中的框架&#xff0c;特指为解决一个开放性问题而设计的具有一定 性的支撑结构。在此结构上约束可以根据具体问题扩展、安插更多的组成部分&#xff0c;从而更迅…

idol!! 2023牛客暑期多校训练营6 C

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;定义n!!等于与n的奇偶性相同的所有小于等于n的数的阶乘之和&#xff0c;问n!!的末尾有多少0 1<n<1e18 思路&#xff1a;因为末尾0的来源是2*5&#xff0c;而2的个数明显比5的个数多得多&#xff0c;所以末尾…

git仓库大文件导致仓库体积增大处理

一、删除大文件 git filter-branch --tree-filter rm -rf path/to/large/file --prune-empty HEAD二、提交到远程 git push -f origin main PS&#xff1a;-f必须参数&#xff0c;强制刷新PS&#xff1a;git设计是为了存储代码&#xff0c;一般不将大文件上传到仓库

HarmonyOS元服务开发实践:桌面卡片字典

一、项目说明 1.DEMO创意为卡片字典。 2.不同卡片显示不同内容&#xff1a;微卡、小卡、中卡、大卡&#xff0c;根据不同卡片特征显示同一个字的不同内容&#xff0c;基于用户习惯可选择喜欢的卡片。 3.万能卡片刷新&#xff1a;用户点击卡片刷新按钮查看新内容&#xff0c;同时…

车载以太网SOME/IP的个人总结

如何实现CAN-SOME/IP通信路由测试 (qq.com) AutoSAR SOMEIP与SOC vsomeip通讯 (qq.com) 利用commonAPI和vSomeip对数据进行序列化 (qq.com) Vector - CANoe - VCDL与SomeIP (qq.com) 使用Wireshark 查看SOMEIP的方法 (qq.com) 基于AutoSAR的车载以太网测试 - SOMEIP之ECU做…

Java课题笔记~ AspectJ 的开发环境(掌握)

AspectJ 的开发环境(掌握) &#xff08;1&#xff09; maven 依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></depe…

深度学习和OpenCV的对象检测(MobileNet SSD图像识别)

基于深度学习的对象检测时,我们主要分享以下三种主要的对象检测方法: Faster R-CNN(后期会来学习分享)你只看一次(YOLO,最新版本YOLO3,后期我们会分享)单发探测器(SSD,本节介绍,若你的电脑配置比较低,此方法比较适合R-CNN是使用深度学习进行物体检测的训练模型; 然而,…

docker compose快速编排

Docker-compose概述 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容集群的快速编排 Docker-Compose将所管理的容器分为三层&#xff0c;分别是工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&#x…