小程序原生 API

微信原生 API

1. API 基礎

小程序開發框架提供豐富的微信原生 API,可以方便的調起微信提供的能力,如獲取用戶信息,本地存儲,支付功能等,幾乎所有小程序的 API 都掛載在 wx 對象底下,例如:wx.chooseMedia()wx.request(), wx 對象實際上就是小程序的宿主環境微信所提供的全局對象

通常,在小程序 API 有以下幾種類型:

  1. 事件監聽 API:約定以 on 開頭 API 用來監聽某個事件是否觸發,例如:wx.onThemeChange()
  2. 同步 API:約定以 Sync 結尾的 API 都是同步 API,例如:wx.setStorageSync()
  3. 異步 API:大多數 API 都是異步 API,例如:wx.setStorage()

異步 API 支持 callback & Promise 兩種調用方式:

  1. 當接口參數 Object 對象中不包含 success/fail/complete 時將默認返回 Promise

  2. 部分接口如 request, uploadFile 本身就有返回值,因此不支持 Promise 風格的調用方式,它們的 promisify 需要開發者自行封裝。

小程序 API 介紹

微信小程序 API 文檔

2. 網絡請求

知識點:

在微信小程序中,如果需要發起 HTTPS 網絡請求需要使用:wx.request(),語法如下:

wx.request({// 接口地址,僅為示例,并非真實的接口地址url: 'example.php',// 請求的參數data: { x: '' },// 請求方式method: 'GET|POST|PUT|DELETE',success (res) {console.log(res.data)},fail(err) {console.log(err)}
})

注意:wx.request() 請求的域名需要在小程序管理平臺進行配置,如果小程序正式版使用wx.request請求未配置的域名,在控制臺會有相應的報錯。

這時候就需要在小程序管理后臺進行設置請求的域名,打開微信公眾后臺:點擊左側 開發 → 開發管理 → 開發設置 → 服務器域名。域名只支持 https 而且要求已備案

但一般我們在開發階段時,處于開發階段的服務器接口可能還沒部署到對應的域名下,經常會通過另一個域名來進行開發調試,考慮到這一點,為了方便開發者進行開發調試,開發者工具、小程序的開發版和小程序的體驗版在某些情況下允許 wx.request 請求任意域名 (只適用于開發環境,只能在小程序開發者工具中生效),在開發工具中設置步驟如下:

不校驗合法域名、web-view (業務域名)、TLS版本以及HTTPS證書 勾選上:

?

📌 注意事項:

? 這兩種方式只適用于開發者工具、小程序的開發版和小程序的體驗版

? 項目上線前必須在小程序管理平臺進行合法域名的配置

落地代碼:

Page({// 頁面的初始數據data: {},// 獲取數據getPostInfo() {wx.request({url: 'https://jsonplaceholder.typicode.com/posts/1',method: 'GET',success(res) {console.log(res)},fail(err) {console.log(err)}})},// coding...
}

3. 界面交互

小程序還提供了一些用于界面交互的 API,如消息提示框、模態對話框、 loading 提示框等等

3.1 loading 提示框

知識點:

小程序提供了一些用于界面交互的 API,例如: loading 提示框、消息提示框、模態對話框等 API。

loading 提示框常配合網絡請求來使用,用于增加用戶體驗,對應的 API 有兩個:

  1. wx.showLoading 顯示加載提示框
  2. wx.hideLoading 隱藏加載提示框

語法如下:

wx.showLoading({title: '提示內容', // 提示的內容mask: true, // 是否顯示透明蒙層,防止觸摸穿透success() {}, // 接口調用成功的回調函數fail() {} // 接口調用失敗的回調函數
})

官方文檔:

wx.showLoading 官方文檔

wx.hideLoading 官方文檔

落地代碼:

Page({data: {list: []},// 獲取數據getData () {+     // 顯示 loading 提示框
+     wx.showLoading({
+       // 用來顯示提示的內容
+       // 提示的內容不會自動換行,如果提示的內容比較多,因為在同一行展示
+       // 多出來的內容就會被隱藏
+       title: '數據加載中...',
+       // 是否展示透明蒙層,防止觸摸穿透
+       mask: true
+     })// 如果需要發起網絡請求,需要使用 wx.request APIwx.request({// 接口地址url: 'https://gmall-prod.atguigu.cn/mall-api/index/findBanner',// 請求方式method: 'GET',// 請求參數data: {},// 請求頭header: {},// API 調用成功以后,執行的回調success: (res) => {// console.log(res)if (res.data.code === 200) {this.setData({list: res.data.data})}},// API 調用失敗以后,執行的回調fail: (err) => {console.log(err)},// API 不管調用成功還是失敗以后,執行的回調complete: (res) => {// console.log(res)+         // 關掉 loading 提示框
+         // hideLoading 和 showLoading 必須結合、配對使用才可以
+         wx.hideLoading()}})}})
3.2 模態對話框以及消息提示框

知識點:

wx.showToast():消息提示框用來根據用戶的某些操作來告知操作的結果,如退出成功給用戶提示,提示刪除成功等,語法如下:

wx.showToast({title: '標題', // 提示的內容duration: 2000, // 提示的延遲時間mask: true, // 是否顯示透明蒙層,防止觸摸穿透icon: 'success', // 	圖標success() {}, // 接口調用成功的回調函數fail() {} // 接口調用失敗的回調函數
})

wx.showModal() 模態對話框也是在項目中頻繁使用的一個小程序 API,通常用于向用戶詢問是否執行一些操作,例如:點擊退出登錄,顯示模態對話框,詢問用戶是否真的需要退出等等

wx.showModal({title: '提示', // 提示的標題content: '您確定執行該操作嗎?', // 提示的內容confirmColor: '#f3514f',// 接口調用結束的回調函數(調用成功、失敗都會執行)success({ confirm }) {confirm && consle.log('點擊了確定')}
})

官方文檔:

wx.showToast 官方文檔

wx.showModal 官方文檔

落地代碼:

Page({// coding...// 刪除商品async delHandler () {// showModal 顯示模態對話框const { confirm } = await wx.showModal({title: '提示',content: '是否刪除該商品 ?'})if (confirm) {// showToast 消息提示框wx.showToast({title: '刪除成功',icon: 'none',duration: 2000})} else {wx.showToast({title: '取消刪除',icon: 'error',duration: 2000})}}// coding...})

4. 本地存儲

小程序中也能夠像網頁一樣支持本地數據緩存,本地數據緩存是小程序存儲在當前設備上硬盤上的數據,本地數據緩存有非常多的用途,我們可以利用本地數據緩存來存儲用戶在小程序上產生的操作,在用戶關閉小程序重新打開時可以恢復之前的狀態。我們還可以利用本地緩存一些服務端非實時的數據提高小程序獲取數據的速度,在特定的場景下可以提高頁面的渲染速度,減少用戶的等待時間。其包含以下 8個主要的 API

同步 API異步 API作用
wx.setStorageSyncwx.setStorage將數據存儲在本地緩存中指定的 key 中
wx.getStorageSyncwx.getStorage從本地緩存中同步獲取指定 key 的內容
wx.removeStorageSyncwx.removeStorage從本地緩存中移除指定 key
wx.clearStorageSyncwx.clearStorageSync清理本地數據緩存

異步方式的 API,在調用的時候都需要傳入對象類型的參數

同步方式執行的 API 在使用時簡潔比較好,缺點是同步會阻塞程序執行,執行效率上相較異步版本要差一些。

📌 注意事項

  1. 對象類型的數據,可以直接進行存儲,無需使用 JSON.stringify 轉換
  2. 對象類型的數據存的時候沒有使用轉換,因此獲取的時候也不需要使用 JSON.parse 轉換

落地代碼:

<button type="primary" bindtap="handler" size="mini" plain bindtap="setData">存儲數據
</button><button type="primary" bindtap="handler" size="mini" plain bindtap="getData">獲取數據
</button><button type="warn" bindtap="handler" size="mini" plain bindtap="delData">刪除數據
</button><button type="warn" bindtap="handler" size="mini" plain bindtap="clearData">移除數據
</button>
Page({// 將數據存儲到本地setStorage () {// 第一個參數:本地存儲中指定的 key// 第二個參數:需要存儲的數據// wx.setStorageSync('num', 1)// 在小程序中// 如果存儲的是對象類型數據,不需要使用 JSON.stringify 和 JSON.parse 進行轉換// 直接進行存儲和獲取即可// wx.setStorageSync('obj', { name: 'tom', age: 10 })// ------------------- 異步 API -------------------wx.setStorage({key: 'num',data: 1})wx.setStorage({key: 'obj',data: { name: 'jerry', age: 18 }})},// 獲取本地存儲的數據async getStorage () {// 從本地存儲的數據中獲取指定 key 的數據、內容// const num = wx.getStorageSync('num')// const obj = wx.getStorageSync('obj')// console.log(num)// console.log(obj)// ------------------- 異步 API -------------------const { data } = await wx.getStorage({key: 'obj'})console.log(data)},// 刪除本地存儲的數據removeStorage () {// 從本地移除指定 key 的數據、內容// wx.removeStorageSync('num')// ------------------- 異步 API -------------------wx.removeStorage({key: 'num'})},// 清空本地存儲的全部數據clearStorage () {// wx.clearStorageSync()// ------------------- 異步 API -------------------wx.clearStorage()},})

5. 路由與通信

知識點:

在小程序中實現頁面的跳轉,有兩種方式:

  1. 聲明式導航:navigator 組件
  2. 編程式導航:使用小程序提供的 API
    • wx.navigateTo():保留當前頁面,跳轉到應用內的某個頁面,但是不能跳到 tabbar 頁面
    • wx.redirectTo():關閉當前頁面,跳轉到應用內的某個頁面。但是不允許跳轉到 tabbar 頁面
    • wx.switchTab():跳轉到 tabBar 頁面,路徑后不能帶參數
    • wx.navigateBack():關閉當前頁面,返回上一頁面或多級頁面
  3. 路徑后可以帶參數,參數需要在跳轉到的頁面的 onLoad 鉤子函數中通過形參進行接收
    • 參數與路徑之間使用 ? 分隔
    • 參數鍵與參數值用 = 相連
    • 不同參數用 & 分隔
    • 例如 path?key=value&key2=value2

落地代碼:

Page({navigateTo() {// 保留當前頁面,跳轉到應用中其他頁面,不能跳轉到 tabBar 頁面wx.navigateTo({url: '/pages/list/list?id=1&name=tom'// url: '/pages/cate/cate'})},redirectTo() {// 關閉(銷毀)當前頁面,跳轉到應用中其他頁面,不能跳轉到 tabBar 頁面wx.redirectTo({url: '/pages/list/list?id=1&name=tom'// url: '/pages/cate/cate'})},switchTab() {// 跳轉到 tabBar 頁面,不能跳轉到 非 tabBar 頁面,路徑后面不能傳遞參數wx.switchTab({// url: '/pages/list/list'url: '/pages/cate/cate?id=1&name=tom'})},reLaunch() {// 關閉所有的頁面,然后跳轉到應用中某一個頁面wx.reLaunch({url: '/pages/list/list?id=1&name=tom'// url: '/pages/cate/cate?id=1&name=tom'})}})
// list.js
Page({navigateBack() {// 關閉當前頁面,返回上一頁或者返回多級頁面// 默認返回上一頁wx.navigateBack({delta: 1})},onLoad(options) {console.log(options)}})

6. 事件監聽-上拉加載更多

上拉加載是小程序中常見的一種加載方式,當用戶滑動頁面到底部時,會自動加載更多的內容,以便用戶繼續瀏覽

小程序中實現上拉加載的方式:

1.在 app.json 或者 page.json 中配置距離頁面底部距離: onReachBottomDistance;默認 50px

2.在 頁面.js 中定義 onReachBottom 事件監聽用戶上拉加載

?

落地代碼:

<view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>
/* pages/market/market.wxss */view {height: 400rpx;display: flex;align-items: center;justify-content: center;
}view:nth-child(odd) {background-color: lightskyblue;
}view:nth-child(even) {background-color: lightsalmon;
}
Page({data: {numList: [1, 2, 3]},// 監聽用戶上拉加載onReachBottom() {// console.log('監聽用戶上拉加載')// 產品需求:// 當用戶上拉,需要數字進行累加// 當用戶上拉加載時,需要對數字進行累加,每次累加 3 個數字// 目前是 [1, 2, 3],[1, 2, 3, 4, 5, 6]// 怎么進行追加 ?// 獲取目前數組中最后一項 n,n + 1, n + 2, n + 3wx.showLoading({title: '數據加載中...'})setTimeout(() => {// 獲取數組的最后一項const lastNum = this.data.numList[this.data.numList.length - 1]// 定義需要追加的元素const newArr = [lastNum + 1, lastNum + 2, lastNum + 3]this.setData({numList: [...this.data.numList, ...newArr]})wx.hideLoading()}, 1500)}})

7. 事件監聽-下拉刷新

下拉刷新是小程序中常見的一種刷新方式,當用戶下拉頁面時,頁面會自動刷新,以便用戶獲取最新的內容。

小程序中實現上拉加載更多的方式:

1.在 app.json 或者 page.json 中開啟允許下拉,同時可以配置 窗口、loading 樣式等

2.在 頁面.js 中定義 onPullDownRefresh 事件監聽用戶下拉刷新

?

落地代碼:

<view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view>
/* pages/market/market.wxss */view {height: 400rpx;display: flex;align-items: center;justify-content: center;
}view:nth-child(odd) {background-color: lightskyblue;
}view:nth-child(even) {background-color: lightsalmon;
}
Page({data: {numList: [1, 2, 3]},// 監聽用戶上拉加載onReachBottom() {// coding...},// 監聽用戶下拉刷新onPullDownRefresh () {// console.log('監聽用戶下拉刷新')// 產品需求:// 當用戶上拉加載更多以后,如果用戶進行了下拉刷新// 需要將數據進行重置this.setData({numList: [1, 2, 3]})// 在下拉刷新以后,loading 效果有可能不會回彈回去if (this.data.numList.length === 3) {wx.stopPullDownRefresh()}}})

8. 增強 scroll-view

8.1 scroll-view 上拉加載

知識點

bindscrolltolower:滾動到底部/右邊時觸發

lower-threshold:距底部/右邊多遠時,觸發 scrolltolower 事件

enable-back-to-top:讓滾動條返回頂部,iOS 點擊頂部狀態欄、安卓雙擊標題欄時,只支持豎向

落地代碼:

<scroll-viewclass="scroll-y"scroll-ylower-threshold="100"bindscrolltolower="getMore"enable-back-to-top
><view wx:for="{{ arr }}" wx:key="*this">{{ item }}</view></scroll-view>
// index.js
Page({data: {arr: [1, 2, 3]},// 上拉加載更多getMore() {wx.showLoading({title: '數據正在加載中...'})setTimeout(() => {// 記錄當前數組的最后一個元素let lastNum = this.data.arr[this.data.arr.length - 1]// 最后一個元素加 1lastNum++// 每次向數組中新增三項const newArr = [lastNum, lastNum + 1, lastNum + 2]this.setData({arr: [...this.data.arr, ...newArr]})// 數據返回,隱藏 Loadingwx.hideLoading()wx.showToast({title: '數字請求完畢,上滑繼續瀏覽',icon: 'none'})}, 1000)}
})
8.2 scroll-view 下拉刷新

知識點:

refresher-enabled:開啟自定義下拉刷新

refresher-default-style自定義下拉刷新默認樣式支持設置 black | white | none, none 表示不使用默認樣式

refresher-background:自定義下拉刷新區域背景顏色

bindrefresherrefresh:自定義下拉刷新狀態回調

refresher-triggered:設置當前下拉刷新狀態,(true 下拉刷新被觸發,false 表示下拉刷新未被觸發,用來關閉下拉效果)

落地代碼:

<scroll-viewclass="scroll-y"scroll-ylower-threshold="100"bindscrolltolower="getMore"enable-back-to-toprefresher-enabledrefresher-default-style="black"refresher-background="#f7f7f8"refresher-triggeredbindrefresherrefresh="onrefresh"refresher-triggered="{{ triggered }}"
><view wx:for="{{ arr }}" wx:key="*this">{{ item }}</view></scroll-view>
// index.js
Page({data: {triggered: false, // 控制 scroll-view 下拉刷新效果arr: [1, 2, 3]},// scroll-view 下拉刷新回調函數onrefresh() {wx.showLoading({title: '數據正在加載中...'})// 定時器模擬網絡請求,1 秒后數據返回setTimeout(() => {// 重置數據this.setData({arr: [1, 2, 3]})// 數據返回,隱藏 Loadingwx.hideLoading()wx.showToast({title: '下拉刷新完成,數據已重置...',icon: 'none'})// 數據返回,關閉 scroll-view 下拉刷新效果this.setData({triggered: false})}, 1000)}
})
8.3 增強 scroll-view 完整代碼
<scroll-viewscroll-yclass="scroll-y"lower-threshold="100"bindscrolltolower="getMore"enable-back-to-toprefresher-enabledrefresher-default-style="black"refresher-background="#f7f7f8"bindrefresherrefresh="refreshHandler"refresher-triggered="{{isTriggered}}"
><view wx:for="{{ numList }}" wx:key="*this">{{ item }}</view></scroll-view>
/* pages/index/index.wxss */.scroll-y {height: 100vh;background-color: #efefef;
}view {height: 500rpx;display: flex;align-items: center;justify-content: center;
}view:nth-child(odd) {background-color: skyblue;
} view:nth-child(even) {background-color: lightsalmon;
}
Page({data: {numList: [1, 2, 3],isTriggered: false},// 下拉刷新refreshHandler () {wx.showToast({title: '下拉刷新...'})setTimeout(() => {this.setData({numList: [1, 2, 3],isTriggered: false})}, 2000)},// scroll-view 上拉加載更多事件的事件處理函數getMore () {wx.showLoading({title: '數據加載中...'})setTimeout(() => {// 獲取數組的最后一項const lastNum = this.data.numList[this.data.numList.length - 1]// 定義需要追加的元素const newArr = [lastNum + 1, lastNum + 2, lastNum + 3]this.setData({numList: [...this.data.numList, ...newArr]})wx.hideLoading()}, 1500)}})

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

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

相關文章

#LLM入門|Prompt#2.2_ AI 應用開發的范式_Language_Models,the_Chat_Format_and_Tokens

在本章中&#xff0c;我們將和您分享大型語言模型&#xff08;LLM&#xff09;的工作原理、訓練方式以及分詞器&#xff08;tokenizer&#xff09;等細節對 LLM 輸出的影響。 我們還將介紹 LLM 的提問范式&#xff08;chat format&#xff09;&#xff0c;這是一種指定系統消息…

STM32合并燒錄IAP+APP

STM32合并燒錄IAPAPP 通過查找相關資料 有以下幾種合并方法 第一種直接將二進制文件用記事本合并 而要合并的就是就將IAP最后的一行刪除&#xff0c;然后將APP程序追加在后面。 &#xff08;修改前&#xff09; 把APP的.hex 全部內容拷貝復制到 剛才刪掉結束語句的 IAP的.…

Win32匯編ListView控件學習

此控件比較復雜&#xff1b;和基礎win32控件不同&#xff1b;需要先初始化Windows公共控件庫&#xff0c; invoke InitCommonControls 之后才可使用&#xff1b; lvdemo.asm&#xff0c; .386.model flat, stdcalloption casemap :none ; case sensitiveinclude window…

【OCR識別】使用OCR技術還原加密字體文字

文章目錄 1. 寫在前面2. 頁面分析3. 字符知識4. 加密分析 【作者主頁】&#xff1a;吳秋霖 【作者介紹】&#xff1a;Python領域優質創作者、阿里云博客專家、華為云享專家。長期致力于Python與爬蟲領域研究與開發工作&#xff01; 【作者推薦】&#xff1a;對JS逆向感興趣的朋…

減少頁面加載時間:提升用戶體驗的關鍵

?? 祝屏幕前的您天天開心&#xff0c;每天都有好運相伴。我們一起加油&#xff01;?? &#x1f388;&#x1f388;作者主頁&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目錄 引言 一、為什么頁面加載時間重要&#xff1f; 二、如何減少頁面加載時間&#xff1f; …

qiankun微前端使用

微前端是什么&#xff1f; 微前端就是頁面的某個功能可以獨立為一個項目進行開發、部署。比如&#xff1a;自己的項目使用iframs引入百度 qiankun qiankun是一個基于single-spa的微前端實現庫&#xff0c;qiankun 對于用戶而言只是一個類似 jQuery 的庫&#xff0c;你需要調…

Mysql 數據類型的轉換之 cast()

語法 cast( value as type) value 要進行數據轉換的值&#xff08;可以為任何類型&#xff09;。type 要轉換為的數據類型。type 的常見的類型可以為 &#xff1a; decimal十進制浮點數。可以使用可選的 M 和 D 參數指定最大位數 (M) 和小數點后的位數 (D)float浮點數dou…

信息安全應急響應方法詳解

預防措施 定期進行安全漏洞掃描和修復強化身份驗證和訪問控制加強網絡安全防護和監控建立災難恢復和應急預案 應急響應步驟 識別和確認安全事件 監控系統日志和警報&#xff0c;快速發現異常行為利用安全信息和事件管理系統&#xff08;SIEM&#xff09;進行實時監控 隔離受…

華潤置地品牌虛擬代言人IP“吉吉”,開啟地產數字化營銷新場景

在數字化營銷時代&#xff0c;房地產品牌通過虛擬人技術&#xff0c;可以有效鏈接購房者&#xff0c;占領客戶心智&#xff0c;優化購房體驗&#xff0c;塑造年輕化、數字化的品牌形象。 華潤置地積極擁抱數字變革&#xff0c;通過廣州虛擬動力「現場虛擬主持技術服務」與「虛…

leetcode-數字轉換為十六進制

405. 數字轉換為十六進制數 題解&#xff1a; 首先&#xff0c;我們需要創建一個映射表&#xff0c;將十進制數0-15映射到十六進制數的字符0-f。然后&#xff0c;我們需要處理負數的情況。對于負數&#xff0c;我們首先將其轉換為補碼形式&#xff0c;然后再進行轉換。接下來…

【Unity】使用Unity實現雙屏顯示

引言 在使用Unity的時候&#xff0c;有時候會需要使用雙屏顯示 簡單來說就是需要在兩個顯示器中顯示游戲畫面 雙屏顯示注意點&#xff1a; ①雙屏顯示需要電腦有兩個顯示 ②雙屏顯示只能用于PC端 ③不僅僅可以雙屏&#xff0c;Unity最大支持8屏顯示 1.相機設置 ①我們打開Un…

Untiy webgl iis服務器加載ab包報404.3,需要為AB包添加MIMI映射

首選確定一下文件在不在 這里是缺少對于AB包文件類型的映射&#xff0c;因為AB包沒有后綴名&#xff0c;我們為服務器添加通用的映射 1 開始菜單搜索iis管理器,先選中我們的服務器&#xff0c;然后雙擊進入MIME類型 2 右側點擊添加按鈕 3 添加如下內容 文件擴展名為. 類型為…

JAVA學習-控制執行流程.函數

一、Java中的控制執行流程的主要方式有以下幾種&#xff1a; 1. 條件語句&#xff08;if-else語句、switch語句&#xff09;&#xff1a; 根據條件選擇不同的執行路徑。 2. 循環語句&#xff08;for循環、while循環、do-while循環&#xff09;&#xff1a; 重復執行某段代碼…

性能測試-并發測試心得

一些關鍵名詞 吞吐量 指的是在一定時間內系統處理請求或傳輸數據的能力&#xff0c;具體到性能測試中的話&#xff0c;就是指單位時間內系統處理并完成的請求數量或者是系統傳輸的數據量。 例如&#xff0c;吞吐量可以表示為系統每秒處理HTTP請求次數&#xff0c;或者是系統…

服務器git安裝python包失敗,如何手動下載github項目包并安裝到虛擬環境中(簡單易懂)

背景&#xff1a; 想要復現一個項目&#xff0c;建立好虛擬環境后&#xff0c;準備安裝項目需要的包&#xff0c;故輸入命令pip install -r requirements.txt requirements.txt如下圖 其他包我都安裝成功了&#xff0c;只有最后一個包失敗了&#xff0c;是需要服務器git鏈接…

【學習心得】解決無限debugger的常用方法

一、什么是無限debugger 有些網站為了防止爬蟲或其他惡意行為&#xff0c;會故意設置無限debugger作為一種簡單的反爬機制&#xff0c;它會在開發者工具打開的情況下不斷暫停執行。這對于想要分析其他代碼邏輯、排查問題或進行正常開發調試工作的開發者來說極為不便。 二、解決…

Sora學習筆記

Sora - 探索AI視頻模型的無限可能 隨著人工智能技術的飛速發展&#xff0c;AI視頻模型已成為科技領域的新熱點。而在這個浪潮中&#xff0c;OpenAI推出的首個AI視頻模型Sora&#xff0c;以其卓越的性能和前瞻性的技術&#xff0c;引領著AI視頻領域的創新發展。讓我們將一起探討…

ios 使用window.location.href 不能跳轉微信短鏈處理過程以及解決方法

需求背景&#xff1a; 由h5提供頁面&#xff0c;通過后臺請求微信api生成對應的schemal短鏈&#xff0c;該h5頁面嵌入到原生的ios以及安卓app上&#xff0c;當用戶點擊后通過短連接跳轉到其他小程序中 以下為生成微信scheme代碼示例&#xff0c;生成后短鏈為&#xff1a;weixi…

linux常見signal信號總結

文章目錄 SIGSEGVSIGALRMSIGINTSIGCHLD SIGSEGV 在POSIX兼容的平臺上&#xff0c;SIGSEGV是當一個進程執行了一個無效的內存引用&#xff0c;或發生段錯誤時發送給它的信號 SIGALRM 已到通過調用alarm函數注冊的時間 SIGINT 輸入cltrlc SIGCHLD 子進程終止

【分享】在 Python 編程中提高效率的技巧

在 Python 編程中&#xff0c;有許多技巧可以幫助提高效率&#xff0c;從代碼優化到工作流程改進。 以下是一些可以分享的技巧&#xff1a; 1、使用列表推導式和生成器表達式&#xff1a;列表推導式和生成器表達式是 Python 中的一種簡潔而高效的方法&#xff0c;用于快速創建…