iT邦幫忙

0

【Day 07】酒館的長效記憶:利用 localStorage 實現對話紀錄持久化

  • 分享至 

  • xImage
  •  

一、 前言
在前幾天的文章中,我們的「AI 酒館」已經變得非常生動:不僅有精美的暗色介面、雙向語音支援、Gemini AI 動態對話,還有流暢的打字機特效與自動捲動。不過,只要手殘按到「重新整理(F5)」,剛剛和調酒師聊得火熱的對話紀錄就會瞬間歸零,這對玩家的體驗來說無疑是一大硬傷。

為了讓酒館具備真正的「記憶力」,今天的核心任務是透過瀏覽器內建的 localStorage,將對話紀錄完整保存下來!

二、 為什麼前端專案需要對話持久化?
在開發網頁型 AI 應用時,資料儲存的權衡非常重要:

  1. 零後端成本:既然我們堅持 100% 免費、純前端的 Vibe Coding 架構,就不需要額外架設資料庫(如 MongoDB 或 PostgreSQL)。
  2. 提升使用者體驗:玩家不需要擔心重新整理網頁後前功盡棄,隨時回來都能接續之前的對話話題。

三、 實作步驟與核心程式碼

  1. 下達 Vibe Coding 需求
    我們透過 AI 助手在 React 狀態管理中加入 localStorage 的讀寫邏輯,讓每當 messages 陣列更新時,自動同步儲存至瀏覽器本地端。

  2. 核心 LocalStorage 邏輯實作
    前端處理儲存與讀取的程式碼概念大致如下:

    import { useState, useEffect } from 'react';
    
    // 初始化時從 localStorage 讀取紀錄
    const savedMessages = localStorage.getItem('chat_messages');
    const initialMessages = savedMessages ? JSON.parse(savedMessages) : defaultMessages;
    
    export function useChatPersistence() {
      const [messages, setMessages] = useState(initialMessages);
    
      useEffect(() => {
        // 當 messages 改變時,自動寫入 localStorage
        localStorage.setItem('chat_messages', JSON.stringify(messages));
      }, [messages]);
    
      return { messages, setMessages };
    }
    

四、 今日心得與預告
今日心得:加上 localStorage 後,我們的 AI 酒館終於有了「記憶」!不管是重新整理還是關閉瀏覽器重開,對話都能完美保留,實用度直接暴增。
明日預告 (Day 08):【功能】多角色切換與獨立對話狀態!讓玩家可以自由在調酒師 Mark 與吟遊詩人 Bard 之間切換,擁有各自獨立的對話宇宙!


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言