【黑馬程序員uniapp】項目配置、請求函數封裝

黑馬程序員前端項目uniapp小兔鮮兒微信小程序項目視頻教程,基于Vue3+Ts+Pinia+uni-app的最新組合技術棧開發的電商業務全流程_嗶哩嗶哩_bilibili

參考

有代碼,還有app、h5頁面、小程序的演示

小兔鮮兒-vue3+ts-uniapp-一套代碼多端部署: 小兔鮮兒-vue3+ts-uniapp 項目已上線,小程序搜索《小兔鮮兒》即可體驗。🎉🎉🎉 <br/> 配套項目接口文檔,配套筆記。

接口文檔

說明 - 小兔鮮兒-小程序版

創建uni-app項目?

有HbuilderX創建項目和命令行創建項目兩種方式

這里要創建uniapp項目,然后使用vscode開發

項目配置

微信小程序appid

安裝依賴,運行?

pnpm i安裝依賴,多個node_modules文件夾

然后運行pnpm dev:mp-weixin,mp表示mini program,微信小程序

編譯完成的結果在dis目錄下

打開微信小程序,導入mp-weixin

分離窗口

分離窗口,方便查看

使用uni-create-view插件

安裝后進行設置?

配置好后,直接創建uniapp頁面?

前一個是頁面,后一個是頁面路由pages路徑名稱?

完善ts類型校驗

安裝最新版本ts類型聲明文件?

pnpm i -D miniprogram-api-typings@latest @uni-helper/uni-app-types@latest
// tsconfig.json
{"extends": "@vue/tsconfig/tsconfig.json","compilerOptions": {"sourceMap": true,"baseUrl": ".","paths": {"@/*": ["./src/*"]},"lib": ["esnext", "dom"],// 類型聲明文件"types": ["@dcloudio/types", // uni-app API 類型"miniprogram-api-typings", // 原生微信小程序類型"@uni-helper/uni-app-types" // uni-app 組件類型]},// vue 編譯器類型,校驗標簽類型"vueCompilerOptions": {// 原配置 experimentalRuntimeMode 已廢棄,請升級 Vue - Official 插件至最新版本"plugins": ["@uni-helper/uni-app-types/volar-plugin"] },"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

tsconfig報錯

方法一:加上"ignoreDeprecations":"5.0"后重啟

在 TypeScript 5.0 及以上版本中,importsNotUsedAsValues 和 preserveValueImports 選項已被棄用,并將在 TypeScript 5.5 中停止支持。取而代之的是使用 verbatimModuleSyntax 選項

如果希望繼續使用舊版本的配置,可以在 tsconfig.json 中添加 ignoreDeprecations 選項,使編譯器忽略棄用警告

"ignoreDeprecations":"5.0"

方法二:更新@vue/tsconfig?

使用命令查看vue/tsconfig版本

我的版本是0.1.3

pnpm list @vue/tsconfig

升級后重啟

pnpm update @vue/tsconfig@^0.7.0

允許pages.json和manifest.json允許注釋

在uniapp項目中,允許pages.json和manifest.json允許注釋

但是vscode默認嚴格json?

只有這兩個json文件允許注釋

值jsonc,表示允許注釋

manifest.json中兩個值已棄用

兩個值已棄用,所以默認false和0?

不用管

安裝uni-ui

文檔

uni-app官網

pnpm安裝

配置easycom完成組件自動導入

開啟自動掃描,在components文件夾是否有符合uniapp標準的組件,有就自動導入

但我們通過pnpm包管理器的方式下載,組件在node_modules里

所以這個配置走的是第二個custom正則的規則?

^表示開頭,用()包裹.*,表示提取出這個組件的名字,()表示提取,提取的內容會把后面的$1替換

?// 組件自動引入規則"easycom": {// 是否開啟自動掃描"autoscan": true,// 以正則方式自定義組件匹配規則"custom": {// uni-ui 規則如下配置"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue",// 以 Xtx 開頭的組件,在 components 文件夾中查找引入(需要重啟服務器)"^Xtx(.*)": "@/components/Xtx$1.vue"}?

為uni-ui提供ts類型

網站:??

@uni-helper/uni-types - npm

ts項目,希望類型更加安全?

但是鼠標懸停組件上是unknow

uni-ui開發時使用js,沒有升級到ts

官方提供的組件庫,并沒有對應的類型聲明文件

有人為uni-ui提供了配套的類型聲明文件?

安裝后需要增加類型聲明文件?

"@uni-helper/uni-ui-types"

有了這個,我調用函數,就可以結構了?

小程序端pinia持久化?

文檔:

配置 | Pinia Plugin Persistedstate

Pinia 用法與 Vue3 項目完全一致,uni-app 項目僅需解決持久化插件兼容性問題

插件默認使用 localStorage 實現持久化,小程序端不兼容,需要替換持久化 API

?安裝持久化存儲插件

pnpm i pinia-plugin-persistedstate

參考?

請求工具的封裝?

攔截器

文檔:

uni.addInterceptor(STRING, OBJECT) | uni-app官網

invoke函數會在攔截前觸發?


設置請求基地址

如果首選服務器掛了,換成備用服務器,有基地址設置,只需要改一邊就可以了

在項目中用到路徑也更簡潔


添加請求頭標識

當前的小兔鮮服務端除了服務于小程序端,也會服務于pc端和app端

后端需要通過標記識別出數據請求的來源


添加token

用戶登錄后拿到token

流程?

攔截時,就會拿到uni.request()內部傳來的參數

可以通過invoke()的形參獲取

參數在ts項目中要指定類型,鼠標懸停到request上,得知參數類型

如果request在用的時候,也寫上了header,這里寫上的參數會覆蓋options.header中的內容

因為options.header這里被賦值成新對象

所以,如果有要先保留,再添加特殊標識?

請求函數

封裝請求函數,為了在項目中方便發請求,借鑒axios(axios返回值是Promise對象,配合async,await,能更方便地獲取到請求成功的數據)

所以封裝的請求函數也要求返回Promise對象

uniapp的攔截器沒有axios攔截器完善,uniapp的響應攔截器對類型支持并不友好

所以前面的攔截器只完成了請求前的攔截,沒有實現響應攔截器

要通過自己封裝的請求函數去實現axios響應攔截器做過的業務(響應分為成功、失敗)

流程

這里是Promise對象,所以更方便地用async,await去接收數據?


async/await 是建立在 Promise 之上的語法糖 。Promise 是 ES6 引入的異步編程解決方案,用于封裝異步操作并獲取其成功或失敗結果。async 函數會自動返回一個 Promise 對象,await 關鍵字用于等待 Promise 對象的狀態變為已解決(resolved )或已拒絕(rejected ),從而獲取相應結果或處理錯誤

數據
封裝抽離后端返回值的類型

后端返回的數據,變的只有result

所以可以封裝抽離后端返回值的類型

類型斷言?

返回的類型,uniapp中也有默認的聯合類型,可以是string、AnyObject、ArrayBuffer

聯合類型在這里是任意的對象類型AnyObject,但是有太大了

這里有更精確的類型,我們定義的Data<T>

在聯合類型中指定其中一個類型,使用類型斷言

獲取數據失敗

success()只有服務器有響應,都會走到這里面

如果服務器掛了,或者網絡出錯,才會走到fail()響應失敗

如果沒有token,但調用了一個需要攜帶token才能訪問的接口,會走到success()響應成功里面。因為服務器有響應,響應的結果只不過是token失敗

對于我們也頁面中使用,業務理解會有差異


axios中的處理是只有響應狀態碼是2開頭,才會調用resolve()

所以借鑒axios?

text、view標簽報紅錯誤提示

參考文檔

vscode開發uniapp小程序,text、view標簽報紅錯誤提示 | Ayu's Study Blog

使用VSCode搭建UniApp + TS + Vue3 + Vite項目-阿里云開發者社區

我按照文檔中說明,在.npmrc文件中增加了兩項,再下載依賴,然后重啟vscode就成功了?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83679.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端使用 preview 插件預覽docx文件

目錄 前言一 引入插件二 JS 處理 前言 前端使用 preview 插件預覽docx文件 一 引入插件 建議下載至本地&#xff0c;靜態引入&#xff0c;核心的文件已打包&#xff08;前端使用 preview 插件預覽docx文件&#xff09;&#xff0c;在文章目錄處下載至本地&#xff0c;復制在項…

如何在運動中保護好半月板?

文章目錄 引言I 半月板的作用穩定作用緩沖作用潤滑作用II 在跳繩運動中保護好半月板III 半月板損傷自測IV 半月板“殺手”半月板損傷必須滿足四個因素:消耗品引言 膝蓋是連接大腿骨和小腿骨的地方,在兩部分骨頭的連接處,墊著兩片半月形的纖維軟骨板,這就是半月板。半月板分…

安科瑞防逆流方案落地內蒙古中高綠能光伏項目,筑牢北疆綠電安全防線

一、項目概況 內蒙古阿拉善中高綠能能源分布式光伏項目&#xff0c;位于內蒙古烏斯太鎮&#xff0c;裝機容量為7MW&#xff0c;采用自發自用、余電不上網模式。 用戶配電站為35kV用戶站&#xff0c;采用兩路電源單母線分段系統。本項目共設置12臺35/0.4kV變壓器&#xff0c;在…

1.3 fs模塊詳解

fs 模塊詳解 Node.js 的 fs 模塊提供了與文件系統交互的能力&#xff0c;是服務器端編程的核心模塊之一。它支持同步、異步&#xff08;回調式&#xff09;和 Promise 三種 API 風格&#xff0c;可滿足不同場景的需求。 1. 模塊引入 const fs require(fs); // 回調…

LeetCode 70 爬樓梯(Java)

爬樓梯問題&#xff1a;動態規劃與斐波那契的巧妙結合 問題描述 假設你正在爬樓梯&#xff0c;需要爬 n 階才能到達樓頂。每次你可以爬 1 或 2 個臺階。求有多少種不同的方法可以爬到樓頂&#xff1f; 示例&#xff1a; n 2 → 輸出 2&#xff08;1階1階 或 2階&#xff0…

【學習分享】shell基礎-參數傳遞

參數傳遞 我們可以在執行 Shell 腳本時&#xff0c;向腳本傳遞參數&#xff0c;腳本內獲取參數的格式為 $n&#xff0c;n 代表一個數字&#xff0c;1 為執行腳本的第一個參數&#xff0c;2 為執行腳本的第二個參數。 例如可以使用 $1、$2 等來引用傳遞給腳本的參數&#xff0…

Fluence推出“Pointless計劃”:五種方式參與RWA算力資產新時代

2025年6月1日&#xff0c;去中心化算力平臺 Fluence 正式宣布啟動“Pointless 計劃”——這是其《Fluence Vision 2026》戰略中四項核心舉措之一&#xff0c;旨在通過貢獻驅動的積分體系&#xff0c;激勵更廣泛的社區參與&#xff0c;為用戶帶來現實世界資產&#xff08;RWA&am…

Excel數據分析:基礎

在現代辦公環境中&#xff0c;Excel 是一款不可或缺的工具&#xff0c;它是 Microsoft&#xff08;微軟&#xff09;開發的電子表格軟件&#xff0c;用于處理和分析結構化數據。市場上還有其他類似的軟件&#xff0c;如 Google Sheets 和 Apple Numbers&#xff0c;但 Excel 以…

12V降5V12A大功率WD5030A,充電器、便攜式設備、網絡及工業領域的理想選擇

WD5030A 高效單片同步降壓型直流 / 直流轉換器 一、芯片核心概述 WD5030A 是一款高性能同步降壓型 DC/DC 轉換器&#xff0c;采用 平均電流模式控制架構&#xff08;帶頻率抖動功能&#xff09;&#xff0c;具備以下核心優勢&#xff1a; 精準電流控制&#xff1a;快速響應負…

企業級AI邁入黃金時代,企業該如何向AI“蝶變”?

科技云報到原創。 近日&#xff0c;微軟&#xff08;MSFT.US&#xff09;在最新全員大會上高調展示企業級AI業務進展&#xff0c;其中與巴克萊銀行達成的10萬份Copilot許可證交易成為焦點。 微軟首席商務官賈德森阿爾索夫在會上披露&#xff0c;這家英國金融巨頭已簽約采購相…

Java編程課(一)

Java編程課 一、java簡介二、Java基礎語法2.1 環境搭建2.2 使用Intellij IDEA新建java項目2.3 Java運行介紹2.4 參數說明2.5 Java基礎語法2.6 注釋2.7 變量和常量一、java簡介 Java是一種廣泛使用的高級編程語言,最初由Sun Microsystems于1995年發布。它被設計為具有簡單、可…

【Java Web】速通Tomcat

參考筆記:JavaWeb 速通Tomcat_tomcat部署java項目-CSDN博客 目錄 一、Tomcat服務 1. 下載和安裝 2. 啟動Tomcat服務 3. 啟動Tomcat服務的注意事項 4. 關閉Tomcat服務 二、Tomcat的目錄結構 1. bin ?? 2. conf ?? 3. lib 4. logs 5. temp 6. webapps 7. work 三、Web項目…

Mysql 身份認證繞過漏洞 CVE-2012-2122

前言&#xff1a;CVE-2012-2122 是一個影響 MySQL 和 MariaDB 的身份驗證漏洞&#xff0c;存在于特定版本中 vulhub/mysql/CVE-2012-2122/README.zh-cn.md at master vulhub/vulhubhttps://github.com/vulhub/vulhub/blob/master/mysql/CVE-2012-2122/README.zh-cn.md 任務一…

Win10停更,Win11不好用?現在Mac電腦比Win11電腦更便宜

最近不少朋友在換電腦前都犯了難。 以前大家最常說的一句是&#xff1a;“Mac太貴了&#xff0c;還是買Windows吧。”但現在不一樣了&#xff0c;國補教育優惠下來&#xff0c;新款M4芯片的Mac mini的入門價已經降到了3000元左右&#xff0c;曾經的價格壁壘&#xff0c;已經不…

C#中Struct與IntPtr轉換:實用擴展方法

C#中Struct與IntPtr轉換&#xff1a;實用擴展方法 在 C# 編程的世界里&#xff0c;我們常常會遇到需要與非托管代碼交互&#xff0c;或者進行一些底層內存操作的場景。這時&#xff0c;IntPtr類型就顯得尤為重要&#xff0c;它可以表示一個指針或句柄&#xff0c;用來指向非托…

手機歸屬地查詢接口如何用Java調用?

一、什么是手機歸屬地查詢接口&#xff1f; 是一種便捷、高效的工具&#xff0c;操作簡單&#xff0c;請求速度快。它不僅能夠提高用戶填寫地址的效率&#xff0c;還能幫助企業更好地了解客戶需求&#xff0c;制定個性化的營銷策略&#xff0c;降低風險。隨著移動互聯網的發展…

43、視圖解析-Thymeleaf初體驗

43、視圖解析-Thymeleaf初體驗 “43、視圖解析-Thymeleaf初體驗”通常是指在學習Spring Boot框架時&#xff0c;關于如何使用Thymeleaf模板引擎進行視圖解析的入門課程或章節。以下是對該主題的詳細介紹&#xff1a; #### Thymeleaf簡介 - **定義**&#xff1a;Thymeleaf是一個…

Day 40訓練

Day 40 訓練 PyTorch 圖像數據訓練與測試的規范寫法單通道圖像的規范訓練流程數據預處理與加載模型定義訓練與測試函數封裝模型訓練執行 彩色圖像的擴展應用數據預處理調整模型結構調整 關鍵要點總結 知識點回顧&#xff1a; 彩色和灰度圖片測試和訓練的規范寫法&#xff1a;封…

杰理可視化SDK--系統死機異常調試

杰理可視化SDK--系統死機異常調試 系統異常原因杰理SDK異常調試準備工作杰理SDK系統異常定位異常代碼示例1異常代碼示例2 在使用杰理可視化SDK進行軟件開發時&#xff0c;往往會遇到一些系統異常問題&#xff0c;系統異常是指芯片在運行代碼時&#xff0c;由于軟件或硬件狀態出…

圖簡記。。

模仿&#xff1a; algorithm-journey/src/class059/Code01_CreateGraph.java at main algorithmzuo/algorithm-journey Code01_CreateGraph C語言&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAXN 11 #define MAX…