動態

列表
創建 時間

vue3-onMounted和onActivated觸發問題

在Vue3中,當頁面第一次進入時,onMounted和onActivated這兩個生命週期鈎子都會觸發,導致初始化函數init()被執行兩次,我們希望只在初次進入時執行一次,而不是兩次。 其實最簡單的方法就是僅使用onActivated生命週期 如果同時使用兩個生命週期,就要在onMounted的時候做一個標記,然後在onActivated的時候改變這個標記 在keep

創建 時間

vue3路由跳轉,普通路由和動態路由

vue3路由跳轉分兩種: 1、普通路由 2、動態路由 普通路由 無需在路由配置中聲明,可以隨意添加任意參數 參數以鍵值對的形式出現在 URL 的 ? 之後,用 分隔 例如:/user?id=123name=John,其中 id=123 和 name=John 是 query 參數 參數是可選的非必填項,可以自由傳遞 跳轉方式 const router = useRoute

創建 時間

《vue.js設計與實現》——調度執行

調度性的定義:當我們執行trigger動作觸發副作用函數重新執行時,有能力決定副作用函數的時機、次數以及方式 控制執行時機 先來看看如何決定副作用函數的執行方式 const data = { foo: 1 } const obj = new Proxy(data, {}); // 為了演示,省略代理配置 effect(() = { console.log(obj.foo); }) obj.

創建 時間

《vue.js設計與實現》——計算屬性computed與lazy

在深入瞭解計算屬性之前,我們需要先知道懶執行的effect,也就是lazy的effect 我們現在實現的effect函數會立即執行傳遞給它的副作用函數,例如: effect( // 這個函數會立即執行 () = { console.log('執行了'); } ) 但有的時候我們不需要他立即執行,而是在需要的時候才執行,這個特性就跟計算屬性很像 我們可以在option

創建 時間

uniapp微信小程序長按功能

現在要實現一個按鈕長按的功能,大概有如下幾個要點: 1、長按按鈕,按鈕覆蓋整個輸入框 2、長按的過程中移動手指,判斷手指移動的位置是否在按鈕內 3、長按鬆開,按鈕還原 按鈕結構如下: view id="audio-full" :class="[ 'audio-full', isLongpress 'touch-longpress'

創建 時間

流式輸出-建立SSE連接-01

什麼是流式輸出 流式輸出,也稱為流式傳輸,指的是服務器持續地將數據推送到客户端,而不是一次性發送完畢。這種模式下,連接一旦建立,服務器就能實時地發送更新給客户端。 人話講就是跟接口建立連接,只要接口不斷開,服務器就能實時的把信息發送給前端,AI流式輸出中,接口每次返回一小段話,前端拿到後流式渲染即可。 有點類似websocket,但SSE是單向的 fetch-event-source

創建 時間

流式輸出-流式渲染-02

現在有很多框架實現了流式渲染,我在這裏例舉幾個: React框架 ● Ant-Design-X Vue框架 ● Element-Plus-X ● MateChat (PC/H5雙端兼容) H5移動端 ● ChatUI-React 這裏以MateChat框架做示例,MateChat是一個獨立的AI對話組件,不與其它UI框架關聯,可直接引入項目使用。 一般的流式渲染分兩種

創建 時間

前端Audio常用API

1、實例化new AudioContext(); 2、AudioContext.decodeAudioData解析音頻 3、創建AudioBufferSourceNode接口source 4、給AudioBufferSourceNode接口提供Buffer用以播放:source.buffer = buffer 5、播放結束後開啓下一輪播放: source.onended =

創建 時間

前端H5錄音實時幀回調-波形配置- Recorder.js

在H5端我們必須使用canvas作為容器來顯示波紋效果,這在官網上有詳細説明 這裏我定義了一個waveConfig變量用作波形的配置,具體的參數下文寫的很詳細,需要注意一點,compatibleCanvas參數綁定的是canvas容器,而且得是在canvas掛載後才能綁定。 // 創建音頻可視化圖形繪製對象 waveConfig.compatibleCanvas = recw

創建 時間

PC瀏覽器端-PCM錄音+實時幀回調+流式上傳-Recorderjs

看到這裏的時候一定要理解並運行上文的《前端H5錄音實時幀回調-波形配置- Recorder.js》,這樣對Recorder有個概念。 1、通過onProcess回調可實現錄音的實時處理,onProcess的buffers參數內容為pcm數組(16位 LE小端模式 Little Endian),能直接流式的將數據進行上傳; 2、onProcess內的buffers參數為所有的PCM集合,

創建 時間

PC瀏覽器端-MP3錄音+實時幀回調+流式上傳-Recorderjs

看到這裏的時候一定要理解並運行上文的《前端recorder-core實時錄音並繪製波形,blob常規數據格式》,這樣對Recorder有個概念。 在創建錄音對象的時候有一個takeoffEncodeChunk回調,該回調為實時編碼環境,會接管編碼器輸出。 當編碼器實時編碼出一塊有效的二進制音頻數據時實時回調此方法,也就是説每次獲取到有效的二進制音頻數據takeoffEncodeChun

創建 時間

uniapp微信小程序AI對話SSE流式輸出

微信小程序版本,主要針對AI對話的流式輸出,這裏主要有兩個要點 **1、如何流式渲染 2、如何建立SSE連接** 我們先從看得見的渲染開始着手,能渲染出來後再建立SSE做流式輸出 流式渲染 這裏使用uniapp插件市場的:zero-markdown-view 插件市場搜索直接下載導入到項目裏就可以用了 頁面使用: zero-markdown-view :theme-c