uniapp經驗

uniapp-ts模版在前端/vue文件夾下
npx @dcloudio/uvm@latest 安裝依賴
之后tsconfig.json會報錯,可以在tsconfig.json文件中"compilerOptions"配置項內添加"ignoreDeprecations": "5.0",解決。

### 編譯和運行 uni-app 項目
1. 安裝依賴 `pnpm install` ?(應該不需要,在上一環節的某一步驟應該就自己進行了)
2. 編譯成微信小程序 `pnpm dev:mp-weixin`
3. 導入微信開發者工具

1.pnpm dev:mp-weixin后,依賴里的大部分文件竟然消失
npx @dcloudio/uvm@latest 安裝依賴,報錯
大意:這個錯誤提示表明 pnpm(一個性能卓越的 Node.js 包管理工具)在嘗試管理項目的依賴時遇到了一個意外的虛擬存儲位置問題。具體來說,pnpm 期望在 D:\前端\vue\uni1\node_modules\.pnpm 這個目錄下使用虛擬存儲來鏈接依賴,但是實際上,它發現項目的依賴已經被鏈接到了另一個位置 D:\前端\vue\uni-preset-vue-vite-ts\node_modules\.pnpm。
刪除現有的 node_modules 文件夾和可能的 pnpm-lock.yaml 文件(如果存在)
pnpm install后依賴文件恢復,tsconfig.json仍然報錯
忘了干什么后不報錯了,但是編譯成的微信小程序不認識visualstudio里的四個組件。
突然發現好的和壞的的pages有大區別,好的是pages下面一個文件夾再套一個vue文件,壞的是pages下面直接是vue文件,所以是路徑出了問題。
改好了路徑之后,報錯TypeError: Cannot read property 'push' of undefined
源代碼:
<script setup lang="ts" name="Home"> //告訴 Vue 編譯器這個腳本塊使用 TypeScript 編寫。
import { onMounted } from 'vue';
import { useRouter } from 'vue-router';
const router = useRouter();
onMounted
(()=>
? ? {
? ? ? ? setTimeout
? ? ? ? (()=>
? ? ? ? ? ? {
? ? ? ? ? ? ? ? router.push('/news')
? ? ? ? ? ? },3000 ? // 這里不要寫錯位置
? ? ? ? )
? ? }
)
</script>
照文心一言改之后,又報錯,app.js錯誤:
?TypeError: Cannot read property 'history' of undefined

2.在app.js因為報錯createapp方法沒定義什么的,刪掉createApp().app.mount("#app"); ? 頁面上用來測試的1111顯示了,但其他的仍然不顯示。
原來uniapp的App.vue不再需要寫什么東西了,他不需要模版了。
所有頁面都是在App.vue下進行切換的,是應用入口文件。但App.vue本身不是頁面,這里不能編寫視圖元素,也就是沒有<template>。

這個文件的作用包括:監聽應用生命周期、配置全局樣式、配置全局的存儲globalData

應用生命周期僅可在App.vue中監聽,在頁面監聽無效。


3.把原本vue程序main.ts文件里的代碼換成網上教程里的代碼,好像好使了。

4.

在 UniApp 中,雖然它基于 Vue.js 開發,但是有一些特定的語法和組件庫是與標準的 Vue.js 項目不同的。UniApp 主要是為了開發跨平臺應用(如 iOS、Android、H5、小程序等)而設計的,它使用了一些自定義的組件和 API,以及一套獨特的頁面路由機制。

路由: UniApp 使用的是基于頁面棧的路由機制,而不是像 Vue Router 那樣的 URL 路由。因此,你不能直接使用?vue-router?來進行頁面跳轉。在 UniApp 中,你應該使用?uni.navigateTouni.redirectTo?或?uni.switchTab?等 API 來進行頁面跳轉。

5.一個頁面給另一個頁面傳數據,只能用navigateTo,不能用switchLab,也就是說,被傳數據的頁面不能是tabbar頁面里的,暫時不知道傳tabbar頁面數據怎么做。

ChatGPT:

在微信小程序中,`wx.switchTab` 方法用于跳轉到 tabBar 頁面,并且不允許攜帶
參數在 URL 的 queryString 中。這是因為 tabBar 頁面通常是固定的幾個頁面,
用于快速切換應用的主要功能,而不是用來展示具體的詳情或數據。如果你需要向 tabBar 頁面傳遞參數,你可以考慮以下幾種方法:1. **使用全局變量**:你可以在 App 實例中設置全局變量來存儲數據,然后在需要的頁面中使用 `getApp()` 方法來獲取這些數據。// app.js
App({globalData: {someData: null}
})// 在某個頁面設置全局變量
const app = getApp();
app.globalData.someData = 'your data';// 在 tabBar 頁面獲取全局變量
const app = getApp();
const someData = app.globalData.someData;
```2. **使用本地存儲**:你可以使用 `wx.setStorageSync` 方法將數據保存到本地緩存中,
然后在 tabBar 頁面使用 `wx.getStorageSync` 方法獲取數據。// 在某個頁面保存數據到本地緩存
wx.setStorageSync('someKey', 'your data');// 在 tabBar 頁面從本地緩存獲取數據
const someData = wx.getStorageSync('someKey');3. **使用事件中心**:你可以創建一個事件中心(Event Bus)來在多個頁面之間傳遞數據。
這通常是通過創建一個具有 `$on`、`$emit` 和 `$off` 方法的 Vue 實例來完成的,
但請注意微信小程序并不是基于 Vue 的,但你可以實現類似的功能。4. **使用頁面棧**:你可以使用 `getCurrentPages` 方法獲取當前頁面棧,然后直接操作
前一個頁面的數據。但這種方法并不推薦,因為它破壞了頁面的封裝性,且可能會導致難以預料的錯誤。5. **使用 Vuex(如果你在使用 Vue 開發小程序)**:Vuex 是一個專為 Vue.js 應用程序開發的
狀態管理模式。如果你正在使用 Vue 開發微信小程序,并且你的 tabBar 頁面也是基于 Vue 的,
那么你可以考慮使用 Vuex 來管理狀態。6. **重新設計頁面結構**:如果可能的話,重新考慮你的頁面設計。也許你可以將需要傳遞參數
的頁面從 tabBar 中移除,或者設計一個不同的導航流程來避免這個問題。請注意,盡管有些方法可能允許你在技術上實現向 tabBar 頁面傳遞參數,但這可能并不是一個
好的設計選擇,因為它可能違反了微信小程序的設計原則和用戶體驗的最佳實踐。

6.攔截器

當我們提到“攔截器”(Interceptor)時,我們通常是在談論一種設計模式,用于在請求或響應到達目標之前進行某種形式的處理或修改。

在Web開發中,特別是在與后端API交互的上下文中,攔截器通常用于:

  1. 請求攔截:在請求發送到服務器之前,對其進行修改或添加某些頭部信息、令牌(token)等。
  2. 響應攔截:在服務器的響應到達客戶端代碼之前,對其進行檢查、修改或處理錯誤。

雖然uniapp本身沒有直接提供攔截器的實現,但你可以結合其他庫(如axios,一個基于Promise的HTTP客戶端)來實現這一功能。在axios中,你可以使用攔截器來攔截請求和響應。

例如,使用axios的攔截器:

// 添加請求攔截器  
axios.interceptors.request.use(function (config) {  // 在發送請求之前做些什么  return config;  
}, function (error) {  // 對請求錯誤做些什么  return Promise.reject(error);  
});  // 添加響應攔截器  
axios.interceptors.response.use(function (response) {  // 對響應數據做點什么  return response;  
}, function (error) {  // 對響應錯誤做點什么  return Promise.reject(error);  
});

uniapp中,如果你正在使用axios或其他支持攔截器的HTTP客戶端庫,你可以按照上述方式添加攔截器來處理你的HTTP請求和響應。

uniapp中路由攔截器的使用技巧-uni-app-PHP中文網

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

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

相關文章

Postman基礎功能-變量設置與使用

如果你因失去太陽而流淚&#xff0c;那你也將失去群星了。大家好&#xff0c;在 API 測試的廣袤世界中&#xff0c;Postman 猶如一座閃耀的燈塔&#xff0c;為我們指引著前行的方向。而其中的全局變量、集合變量和環境變量&#xff0c;更是如同隱藏的寶藏&#xff0c;蘊含著巨大…

以太網網絡變壓器型號

Hqst華強盛導讀&#xff1a;以太網網絡變壓器的型號通常由一系列數字和字母組成&#xff0c;其中包括以下信息&#xff1a; 額定電壓&#xff1a;表示變壓器的額定輸入和輸出電壓&#xff0c;通常以伏特&#xff08;V&#xff09;為單位。 額定電流&#xff1a;表示變壓器的額定…

0513_IO7

練習1&#xff1a; 使用消息隊列實現的2個終端之間的互相聊天 并使用信號控制消息隊列的讀取方式&#xff1a; 當鍵盤按ctrlc的時候&#xff0c;切換消息讀取方式&#xff0c;一般情況為讀取指定編號的消息&#xff0c;按ctrlc之后&#xff0c;指定的編號不讀取&#xff0c;讀取…

孩子多大可以接觸python?學習python的好處

孩子接觸Python的年齡并沒有明確的界限&#xff0c;一般來說&#xff0c;6歲以上的孩子可以開始學習Python編程。雖然Python是一門高級編程語言&#xff0c;但它的語法簡單易懂&#xff0c;適合初學者入門。通過學習Python編程&#xff0c;孩子可以培養邏輯思維、創造力和解決問…

電商秒殺系統設計

業務流程 系統架構 系統挑戰 高并發:秒殺活動會在短時間內吸引大量用戶,系統需要能夠處理高峰時期的大量并發請求 庫存同步:在秒殺中,面臨的一個嚴重系統挑戰是如何確保在數以萬計的用戶同時搶購有限的商品時,如何正確、實時地扣減庫存,以防止超賣現象。 防止惡意搶購和…

前端 JS 經典:JS 基礎類型和 typeof

前言&#xff1a;JS 基礎類型就 8 種&#xff0c;這是官方確定的&#xff0c;毋庸置疑。其中原始類型 7 種&#xff0c;對象類型 1 種。而 typeof 關鍵字是用來判斷數據是屬于什么類型的。 1. 原始類型 Number、Boolean、String、BigInt、symbol、Undefined、null typeof 18…

貓頭虎分享已解決Error || ERROR: Failed building wheel for XXX

博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題大全》 — 面試準備的寶典&#xff01;《IDEA開發秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鴻蒙》 …

python設計模式---觀察者模式

觀察者模式是一種行為設計模式&#xff0c;用于定義對象之間的一對多依賴關系&#xff0c;當一個對象的狀態發生變化時&#xff0c;所有依賴它的對象都會得到通知并自動更新。 from abc import ABC, abstractmethod from typing import Listclass Observable:def __init__(sel…

系統定時器(SysTick)

介紹SysTick SysTick結構框圖 時鐘選擇 計數器部分 中斷部分 工作流程 相關寄存器 配置流程 相關庫函數

centos無法tab補全至文件

很奇怪的需求&#xff1a;redhat 7.9版本用cd 只能到目錄&#xff0c;無法到文件 我個人認為不是個問題&#xff0c;但是甲方需求&#xff0c;你懂的 首先&#xff0c;我們要搞清楚tab補全功能的包bash-completion是否安裝&#xff0c;這里肯定是安裝了&#xff0c;不過還是看…

使用vscode時快速生成console.log()

前言&#xff1a;在使用vscode開發進行調試時&#xff0c;我們經常要用到console.log()來調試代碼&#xff0c;有什么好用的辦法來快速生成&#xff0c;答案肯定是有的&#xff0c;下面跟隨我來看一下是不是真的很好用。 安裝插件JavaScript (ES6) code snippets 使用時直接按照…

Python批量輸出圖像的尺寸、格式、模式代碼

import os from PIL import Image # 原始文件夾路徑 original_folder rC:\Users\86182\Desktop\OPENCVyt\yt1 # 遍歷原始文件夾中的圖像 for filename in os.listdir(original_folder): img Image.open(os.path.join(original_folder, filename)) Size img.size # …

你了解手機設備的dpr嗎?它和CSS又有什么聯系?

當我們在前端開發中涉及到devicePixelRatio時&#xff0c;我們實際上在談論屏幕像素密度&#xff0c;即每英寸的像素數。這個屬性告訴我們在一個設備上的一個CSS像素對應多少物理像素。 目錄 知識點概覽 dpr值的計算 dpr的用處 知識點概覽 比如我們新買了一個手機&#xff0…

vue vite 環境非構建包編譯 React 報錯定位

1. 背景 眾所周知&#xff0c;vite 在構建生態的位置&#xff0c;vue 與之更是密切&#xff0c;主流的 vue 庫幾乎都與 vite 捆綁。 但有些 UI 庫 如 private/ui 并沒進行行編譯&#xff0c;而是直接將源碼發布到了 npm 中&#xff0c;無法實現兼容化&#xff0c;需要消費方去…

vs-qt中無法加載qsqlite驅動,但是單獨新建demo測試卻又是正常的。。。

開發環境: Vs2015 + qt5.12 背景: 接手了一個項目,可以編譯過去,也可以運行,, 但是登錄一直失敗,,但是數據庫文件也是正常的。。。 最主要的是環境和同事的是一樣的,,,但是他那邊可以加載成功,我這邊不可以。。 后來單獨在vs中創建了一個demo,用來測試QSqlData…

Ubuntu虛擬機上推薦一款免費好用的git版本管理工具

工具叫: gitg 軟件界面如下&#xff1a; FR:徐海濤(hunkxu)

開眼了,自動化測試還能這樣用?

持續集成的自動化測試通常需要將代碼、測試用例與持續集成工具進行綁定&#xff0c;以實現自動運行。然而&#xff0c;Apipost的自動化測試功能需要手動操作&#xff0c;并且需要手動查看測試結果。 為了解決這個問題&#xff0c;Apipost推出了持續集成功能&#xff0c;方便同…

【Shell】正則表達式的操作實例

正則表達式是一個描述一組字符串的模式 是由普通字符和元字符組成的字符集&#xff0c;而這個字符集匹配&#xff08;或指定&#xff09;一個模式。 正則表達式的操作實例 &#xff08;一&#xff09;概述1.定義2.作用3.類型 &#xff08;二&#xff09;字符串匹配實例&#xf…

【論文閱讀】Machine Learning, Linear Algebra, and More: Is SQL All You Need?

文章目錄 摘要一、介紹二、SQL算法原語2.1、Variables2.2、Functions2.3、Conditions2.4、Loops2.5、Errors 三、案例研究3.1、對數據庫友好的SQL映射3.2、性能結果 四、結論以及未來工作 摘要 盡管SQL在簡單的分析查詢中無處不在&#xff0c;但它很少用于更復雜的計算&#xf…

文件流-ASCII文件(中北大學-程序設計基礎(2))

目錄 題目 源碼 結果示例 題目 編寫程序實現以下功能&#xff1a;【要求處理ASCII文件】 &#xff08;1&#xff09;按職工號由小到大的順序將5個員工的數據&#xff08;包括號碼、姓名、年齡和工資&#xff09;輸出到磁盤文件中保存&#xff1b; &#xff08;2&#xff…