AI文章助手:智能创作的前端设计解析

发布于:2025-06-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、整体布局与视觉设计

这个前端页面采用了清晰的三层结构设计:

  1. 顶部功能区:包含品牌标识和关键数据统计

  2. 中部操作区:提供生成/扩写双标签切换功能

  3. 底部结果区:展示AI生成的内容和操作选项

<div class="article-container">
  <!-- Header -->
  <div class="header">...</div>
  
  <!-- 功能切换标签 -->
  <div class="function-tabs">...</div>
  
  <!-- 文章生成功能 -->
  <transition name="fade" mode="out-in">...</transition>
  
  <!-- 文章扩写功能 -->
  <transition name="fade" mode="out-in">...</transition>
  
  <!-- 生成结果显示 -->
  <transition name="slide-up">...</transition>
  
  <!-- 扩写结果显示 -->
  <transition name="slide-up">...</transition>
</div>

视觉上采用了卡片式设计,每个功能模块都有明确的边界和阴影效果,营造出层次感。SVG图标的使用增强了界面的专业性和现代感。

二、核心功能实现

1. 双模式切换设计

通过标签页切换实现生成与扩写两种模式的分离:

data() {
  return {
    activeTab: 'generate', // 默认激活生成标签
    // 其他数据...
  }
}

这种设计既保持了功能的独立性,又避免了页面跳转带来的体验中断。Vue的transition组件为切换过程添加了平滑的淡入淡出效果。

2. 文章生成功能

生成表单包含多个维度配置:

generateForm: {
  title: '',          // 文章标题
  articleType: 'GENERAL', // 文章类型
  articleStyle: 'GENERAL', // 文章风格
  wordCount: 'MEDIUM',    // 字数要求
  conversationId: 1      // 对话ID
}

实现亮点在于流式响应处理,通过fetch APITextDecoder实现实时内容更新:

const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  
  const chunk = decoder.decode(value);
  // 处理流式数据...
}

3. 文章扩写功能

扩写功能特别设计了内容对比视图,用户可以直观看到扩写前后的差异:

<div v-if="showComparison" class="comparison-container">
  <div class="comparison-item">
    <h4>原始内容</h4>
    <div v-html="formatContent(expandForm.originalContent)"></div>
  </div>
  <div class="comparison-item">
    <h4>扩写后内容</h4>
    <div v-html="formatContent(expandedArticle)"></div>
  </div>
</div>

三、交互细节设计

1. 状态反馈系统

设计了多层次的用户反馈机制:

  • 加载状态:按钮显示旋转图标和"生成中..."文本

  • 成功提示:绿色浮层带√图标,3秒后自动消失

  • 错误提示:红色浮层带!图标,5秒后自动消失

showSuccess(message) {
  this.successMessage = message;
  setTimeout(() => {
    this.successMessage = '';
  }, 3000);
}

showError(message) {
  this.errorMessage = message;
  setTimeout(() => {
    this.errorMessage = '';
  }, 5000);
}

2. 内容格式处理

智能识别Markdown语法并转换为HTML:

formatContent(content) {
  return content
    .replace(/^## (.+)$/gm, '<h2>$1</h2>')
    .replace(/^### (.+)$/gm, '<h3>$1</h3>')
    .replace(/\n\n/g, '</p><p>')
    // 更多替换规则...
}

3. 功能联动设计

实现了生成内容一键转入扩写的便捷操作:

useForExpand() {
  this.expandForm.originalContent = this.generatedArticle;
  this.activeTab = 'expand';
}

四、数据统计与持久化

使用localStorage实现了基础数据统计:

loadStats() {
  this.generatedCount = parseInt(localStorage.getItem('generatedCount') || '0');
  this.expandedCount = parseInt(localStorage.getItem('expandedCount') || '0');
}

// 在生成完成后
this.generatedCount++;
localStorage.setItem('generatedCount', this.generatedCount.toString());

五、设计思考与用户体验

  1. 渐进式披露:复杂选项默认隐藏,按需展示

  2. 即时反馈:按钮状态、加载指示器、完成提示形成完整反馈链

  3. 无障碍设计:所有交互元素都有明确的视觉状态

  4. 移动优先:响应式布局适应不同设备

六、效果展示


网站公告

今日签到

点亮在社区的每一天
去签到