快速学会搭建微信小程序的基础架构

news2025/1/10 23:42:33

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

基础架构 

构建界面 

引入 uni-ui 组件库  

组件自动引入

配置TS类型

状态管理

持久化 

数据交互

请求工具 

请求和上传文件拦截器

封装 Promise 请求函数

请求成功提取数据和设置类型

获取数据失败 


基础架构 

前言:这两天在学习小兔鲜儿微信小程序项目,想要实现微信小程序的开发,首先就要搭建基础框架了,希望我的文章可以帮助大家快速上手微信小程序

构建界面 

引入 uni-ui 组件库  

uni-ui是uni-app官方出品,不仅使用安全且支持多端

uni-ui支持 HBuilderX直接新建项目模板、npm安装和单独导入个别组件等多种使用方式

安装 uni-ui

pnpm i @dcloudio/uni-ui

组件自动引入

配置easycom

使用 npm 安装好 uni-ui 之后,需要配置 easycom 规则,让 npm 安装的组件支持 easycom

打开项目根目录下的 pages.json 并添加 easycom 节点:

// pages.json
{
	"easycom": {
		"autoscan": true,
		"custom": {
			// uni-ui 规则如下配置
			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
		}
	},
	
	// 其他内容
	pages:[
		// ...
	]
}

配置TS类型

  • @uni-helper/uni-app-types 提供 uni-app 组件类型
  • @uni-helper/uni-cloud-types 提供 uni-cloud 组件类型
  • @uni-helper/uni-ui-types (当前仓库)提供 uni-ui 组件类型

基于 这个 PR,Vue Language Features (Volar) 已经支持。

安装之后,建议启用 接管模式 Takeover Mode。如果不想启用接管模式,可以安装 TypeScript Vue Plugin (Volar)。启用或安装后需要重启 VSCode。

 安装依赖

pnpm i -D @uni-helper/uni-ui-types

配置 tsconfig.json,确保 compilerOptions.types 中含有 @dcloudio/types 和 @uni-helper/uni-ui-types 且 include 包含了对应的 vue 文件 

  // tsconfig.json
{
    "compilerOptions": {
      "types": ["@dcloudio/types", 
                "miniprogram-api-typings", 
                "@uni-helper/uni-app-types",
                "@uni-helper/uni-ui-types"]
     },
}

状态管理

持久化 

// 网页端API
localStorage.setItem()
localStorage.getItem()
// 兼容多端API
uni.setStorageSync()
uni.getStorageSync()

数据交互

请求工具 

请求和上传文件拦截器

uni.addInterceptor(STRING, OBJECT)

添加拦截器

STRING 参数说明

需要拦截的api名称,如:uni.addInterceptor('request', OBJECT) ,将拦截uni.request()

注意:

  • 仅支持异步接口,如:uni.setStorage(OBJECT),暂不支持同步接口如uni.setStorageSync(KEY,DATA)
  • uniCloud请求云端接口时(callFunction、uploadFile等)也会使用uni.request发送请求,请确保拦截器内不错误的处理此类请求
// 拦截 request 请求
uni.addInterceptor('request', httpInterceptor)
// 拦截 uploadFile 文件上传
uni.addInterceptor('uploadFile', httpInterceptor)
const httpInterceptor = {
  // 拦截前触发
 invoke(options: UniApp.RequestOptions) {
  // 1. 非 http 开头需拼接地址
  if (!options.url.startsWith('http')) {
   options.url = baseURL + options.url
  }
  // 2. 请求超时
  options.timeout = 10000
  // 3. 添加小程序端请求头标识
  options.header = {
   ...options.header,
   'source-client': 'miniapp',
  }
  // 4. 添加 token 请求头标识
  const memberStore = useMemberStore()
  const token = memberStore.profile?.token
  if (token) {
    options.header.Authorization = token
  }
 }
}

封装 Promise 请求函数

请求成功提取数据和设置类型

获取数据失败 

uni.request 的 success 回调函数只是表示服务器 响应成功 没处理响应状态码 ,业务中使用不方便
axios 函数是只有 响应状态码是 2xx 才调用 resolve 函数,表示获取数据成功 ,业务中使用更准确

 

 

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

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

相关文章

Unity中Shader特性PerRendererData

文章目录 前言一、优化前是对使用了相同材质球的不同物体间shader分别设置,比较消耗性能二、使用[PerRendererData]标签,可以在脚本中使用SetPropertyBlock()对使用同一材质球的不同物体进行修改其Shader属性 前言 Unity中Shader特性PerRendererData 一…

Python学习 -- 常用数据交换格式(CSV、XML、JSON)

数据交换格式是在不同系统之间交换数据时使用的一种标准化格式。在Python中,我们常用的数据交换格式有CSV、XML和JSON。本篇技术博客将介绍这三种数据交换格式的详细使用方法,并提供具体的代码案例,帮助初学者快速掌握这些格式的使用。 CSV&…

第二章 进程与线程 六、线程的实现方式和多线程模型

目录 一、线程的实现方式 1、用户级线程 2、内核级线程 二、多线程模型 注意: 1、一对一模型 (1)定义: (2)优点: (3)缺点: 2、多对一模型 (1&…

Linkerd的部署与入门--service mesh初步体验

Linkerd2初探 部署环境Linkerd简介安装Linkerd客户端在k8s上安装Linkerd控制平面(服务端)实验:数据平面代理注入demo应用安装viz插件(可视化面板)部署grafana 其他 部署环境 k8s环境: KIND 模拟kubernetes 1.21.1 kub…

【python】使用Reddit API爬取数据

这篇文章介绍如何使用reddit api获数据,文档地址如下:https://www.reddit.com/dev/api/ 首先需要创建应用,页面如下:https://www.reddit.com/prefs/apps 这里name随意填写,reditect uri随意写一个网址 如图所示,创建好应用以后,可以得到CLIENT_ID和SECRET_KEY: 编写代…

线性回归网络

李沐大神的《动手学深度学习》,是我入门机器学习的首课,因此在这里记录一下学习的过程。 线性回归的从零开始实现 线性回归是理解机器学习的基础,它经常用来表示输入和输出之间的关系。   线性回归基于几个简单的假设: 首先&am…

【计算机视觉】Vision and Language Pre-Trained Models算法介绍合集(一)

文章目录 一、ALIGN二、Contrastive Language-Image Pre-training(CLIP)三、Learning Cross-Modality Encoder Representations from Transformers(LXMERT)四、BLIP: Bootstrapping Language-Image Pre-training五、Vision-and-La…

Json-Jackson和FastJson

狂神: 测试Jackson 纯Java解决日期格式化 设置ObjectMapper FastJson: 知乎:Jackson使用指南 1、常见配置 方式一:yml配置 spring.jackson.date-format指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的…

机器学习 day35(决策树)

决策树 上图的数据集是一个特征值X采用分类值,即只取几个离散值,同时也是一个二元分类任务,即标签Y只有两个值 上图为之前数据集对应的决策树,最顶层的节点称为根节点,椭圆形节点称为决策节点,矩形节点称…

ffplay源码解析-FrameQueue队列

帧队列架构位置 结构体源码 FrameQueue结构体 /* 这是一个循环队列,windex是指其中的首元素,rindex是指其中的尾部元素. */ typedef struct FrameQueue {Frame queue[FRAME_QUEUE_SIZE]; // FRAME_QUEUE_SIZE 最大size, 数字太大时会占用大量的…

DPDK环境搭建

(1)虚拟环境:VMware Workstation 16 Pro 网上随便下载一个也行 (2)操作系统:ubuntu-22.04-beta-desktop-amd64.iso 下载地址:oldubuntu-releases-releases-22.04安装包下载_开源镜像站-阿里云…

Thymeleaf语法详解

目录 一、Thymeleaf介绍 (1)依赖 (2)视图 (3)控制层 二、变量输出 三、操作字符串 四、操作时间 五、条件判断 六、遍历集合 (1)迭代遍历 (2)将遍…

Java————数组

1 、数组 数组可以看成是相同类型元素的一个集合, 在内存中是一段连续的空间。 每个空间有自己的编号,其实位置的编号为0,即数组的下标。 数组是引用类型。 1. 数组的创建 T[] 数组名 new T[N];T:表示数组中存放元素的类型 …

Kakfa - Producer机制原理与调优

Producer是Kakfa模型中生产者组件,也就是Kafka架构中数据的生产来源,虽然其整体是比较简单的组件,但依然有很多细节需要细品一番。比如Kafka的Producer实现原理是什么,怎么发送的消息?IO通讯模型是什么?在实…

对Docker的认识和总结

Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接…

数据结构入门 — 二叉树的概念、性质及结构

本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。 博客主页&am…

学习记忆——英语——字母编码

字母编码表 A:苹果 ; B:一支笔或者小男孩boy ; C:月亮或者镰刀 ; D:笛子或者弟弟或者狗dog ; E:大白鹅 ; F:斧头 ; G:鸽子…

Python:安装Flask web框架hello world示例

安装easy_install pip install distribute 安装pip easy_install pip 安装 virtualenv pip install virtualenv 激活Flask pip install Flask 创建web页面demo.py from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello World! 2023if _…

Spring注解家族介绍: @RequestMapping

前言: 今天我们来介绍RequestMapping这个注解,这个注解的内容相对来讲比较少,篇幅会比较短。 目录 前言: RequestMapping 应用场景: 总结: RequestMapping RequestMapping 是一个用于映射 HTTP 请求…

[Linux打怪升级之路]-缓冲区

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标&…