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

2023-09-17 17:14:07

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

目录

基础架构 

构建界面 

引入 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类型

基于 这个 PRVue 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 函数,表示获取数据成功 ,业务中使用更准确

 

 

更多推荐

【ODPS新品发布第1期】DataWorks全新发布:增强分析/数据建模个人版等新能力

阿里云ODPS系列产品以MaxCompute、DataWorks、Hologres为核心,致力于解决用户多元化数据的计算需求问题,实现存储、调度、元数据管理上的一体化架构融合,支撑交通、金融、科研、等多场景数据的高效处理,是目前国内最早自研、应用最为广泛的一体化大数据平台。DataWorks新重点能力介绍新产品-Dat

docker报错Error response from daemon: Container xxx is not running

1.问题在移植了docker后,执行了sudodockerrun--namemyrosort-p80:80-drosort指令运行名为myrosort的容器,通过sudodockerps-a也可以看到确实运行了(base)neousys@neousys-Nuvo-5000:~/wqw/docker/20230915$s

MySQL 索引(一)

1.数据访问方式在MySQL中,通常有两种方式访问数据库表的行数据:顺序访问和索引访问。1.1.顺序访问顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。实现比较简单,但是当表中有大量数据的时候,效率非常低下。1.2.索引访问索引访问是通过遍历索引来直接访问表中记录行的方式。索

简单的手机电脑无线传输方案@固定android生成ftp的IP地址(android@windows)

文章目录abstractwindows浏览android文件环境准备客户端软件无线网络链接步骤其他方法手机浏览电脑文件公网局域网everythingpythonhttp.server高级:固定android设备IP准备检查模块是否生效windows访问ftp服务器快捷方式命令行方式双击启动方式普通快捷方式映射新的网络位

[TI] [Textual Inversion] An image is worth an word

自己的理解:根据几个图像,找出来一个关键字可以代表它们,然后我们可以再用这个关键字去生成新的东西。提出关键字1Introductionword->token->embeddingTextualInversion过程需要:①afixed,pre-trainedtext-to-imagemodel(一个固定的预训练模型)②

网络安全(黑客)自学

前言我是去年8月22日才正式学习网络安全的,因为在国营单位工作了4年,在广东一个月工资只有5000块,而且看不到任何晋升的希望,如果想要往上走,那背后就一定要有关系才行。而且国营单位的气氛是你干的多了,领导觉得你有野心,你干的不多,领导却觉得你这个人不错。我才24周岁,实在的受不了这种工作氛围,情绪已经压制了很多久,一

Java版本spring cloud + spring boot企业电子招投标系统源代码

项目说明随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要求;通过电子化平台提高招投标工作的公开性和透明性;通过电子化招投标,使得招标采购的质量更高、速度

竞赛选题 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录0前言1背景2算法原理2.1动物识别方法概况2.2常用的网络模型2.2.1B-CNN2.2.2SSD3SSD动物目标检测流程4实现效果5部分相关代码5.1数据预处理5.2构建卷积神经网络5.3tensorflow计算图可视化5.4网络模型训练5.5对猫狗图像进行2分类6最后0前言🔥优质竞赛项目系列,今天要分享

close和fclose

在Linux系统中,close函数并不会主动调用fsync接口。close函数只是关闭了文件描述符,而不保证数据被写入到磁盘。如果你想确保数据被写入到磁盘,你需要在close函数之前调用fsync函数。这是因为Linux使用了缓存机制来提高磁盘的读写性能,当你写入数据时,数据首先被写入到缓存中,然后在适当的时候(例如缓

CCG超级标记

1.定义组合范畴语法(CombinatoryCategorialGrammar,CCG)是一种用于自然语言语法分析的语言学理论和计算模型。它是一种形式文法,旨在描述句子的结构和语法规则(通过简练的描述形式表现出句子中各成分的句法语义关系)。CCG的关键思想是使用组合范畴(category)来表示词汇和短语的语法信息,然

【强化学习】01—— 强化学习简介

文章目录两种机器学习类型强化学习定义强化学习交互过程强化学习系统要素历史(History)状态(State)策略(Policy)奖励(Reward)价值函数(ValueFunction)模型(Model)迷宫例子强化学习智能体分类参考两种机器学习类型监督学习/无监督学习/强化学习/机器学习之间的关系预测根据数据预测所需

热文推荐