> 技术文档 > 手把手拆解:使用vue3打造超酷AI对话页面_vue ai

手把手拆解:使用vue3打造超酷AI对话页面_vue ai


手把手拆解:使用vue3打造超酷AI对话页面

手把手拆解:使用vue3打造超酷AI对话页面_vue ai

一、HTML部分:搭建页面框架

咱们先从HTML部分开始看起,这就好比是搭房子,HTML搭建的就是整个页面的框架。

(一)整体布局容器

<template> <div class=\"container\"> <div class=\"bailian-demo\">

这里最外层的标签,它是Vue.js特有的,用来包裹页面的模板内容。然后是

,这个container类就像是一个大箱子,把整个页面的内容都装在里面,并且通过CSS设置了一些通用的样式,比如说最大宽度、外边距、内边距啥的,让页面内容在不同屏幕大小下都能有个合适的布局。再里面的

,它是整个AI对话页面主体的容器,设定了一些样式来确定它的整体外观,比如背景颜色、边框圆角、阴影等等,让页面看起来更美观、更有质感。

(二)左侧历史记录面板

<div class=\"history-panel\" :class=\"{ \'history-collapsed\': isHistoryCollapsed }\"> <div class=\"history-header\"> <h3>对话历史</h3> <button class=\"toggle-history\" @click=\"toggleHistory\"> <i class=\"icon-collapse\"></i> {{ isHistoryCollapsed? \'展开\' : \'收起\' }} </button> </div> <div class=\"history-list\"> <div v-for=\"(item, index) in history\" :key=\"index\" class=\"history-item\" @click=\"loadHistoryItem(index)\" :class=\"{ \'active-history\': activeHistoryIndex === index }\" > <div class=\"history-question\">{{ truncateText(item.question) }}</div> <div class=\"history-time\">{{ formatTime(item.time) }}</div> </div> <div v-if=\"history.length === 0\" class=\"empty-history\"> <i class=\"icon-history\"></i> <p>暂无历史记录</p> </div> </div></div>

这一大块就是左侧的历史记录面板啦。

,这里的history - panel类定义了这个面板的基本样式,像宽度、背景渐变、边框等等。而后面的:class绑定是Vue.js的语法,它会根据isHistoryCollapsed这个变量的值来动态添加或移除history - collapsed类。啥意思呢?就是说如果isHistoryCollapsedtrue,就会添加history - collapsed类,这样面板就能实现收起的效果啦,反之则是展开状态。

再看里面的

,这是历史记录面板的头部,包含了一个标题

对话历史

,让用户一眼就知道这是干啥的。还有一个按钮