乐读课堂学生端
Vue 2.7RspackEducationLottie

乐读课堂学生端

Vue 2.7 + Rspack 重构、播放器解耦、Lottie 动画首帧 TTI ↓90%

  • 迁移 Rspack 启动提升 10×,构建时长 –60%
  • 统一监控体系,线上异常反馈率 –90%
  • 重构播放器模块,业务耦合减少 50%

项目概述

乐读优课桌面客户端是好未来教育的核心产品,服务 30 万+ 学生终端。作为该项目前端开发者,我主导了整个项目的技术架构升级和性能优化。

核心成就

🚀 构建工具迁移

  • 问题: Webpack 构建慢,开发体验差
  • 方案: 迁移到 Rspack,配置渐进式升级策略
  • 结果: 启动速度提升 10×,构建时长减少 60%

🎯 播放器模块重构

  • 背景: 原有播放器与业务逻辑强耦合,难以维护
  • 实施: 抽象播放器核心逻辑,建立事件驱动架构
  • 效果: 业务耦合减少 50%,互动弹窗响应提升 70%

⚡ 动画性能优化

  • 痛点: Lottie 动画首帧加载慢,影响用户体验
  • 优化: 实现懒加载策略 + 预渲染机制
  • 成果: 首帧时间缩短 90%

技术亮点

Rspack 迁移策略

// rspack.config.js - 渐进式迁移配置
module.exports = {
  entry: './src/main.js',
  optimization: {
    splitChunks: {
      chunks: 'all',
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
  experiments: {
    rspackFuture: {
      newTreeshaking: true,
    },
  },
}

播放器架构设计

  • 事件总线: 解耦播放器与业务逻辑
  • 状态管理: 统一播放状态的管理和同步
  • 插件系统: 支持动态加载互动组件

技术栈

  • 框架: Vue 2.7 + Vue Router + Vuex
  • 构建: Rspack + TypeScript
  • 动画: Lottie + CSS3 Animations
  • 监控: Sentry + 自研埋点系统
  • 桌面: Electron + XBase 框架

影响与收益

  • 开发效率: 构建时间减少 60%,开发体验显著提升
  • 用户体验: 动画加载优化,页面响应更流畅
  • 维护成本: 代码耦合度降低,新功能开发周期缩短 30%
  • 稳定性: 线上异常排查速率上升

技术挑战与解决

兼容性问题

Vue 2.7 升级过程中遇到的依赖兼容问题,通过渐进式升级和回退机制解决。

性能瓶颈

大量 Lottie 动画导致的内存泄漏,通过对象池和主动释放机制优化。

监控盲区

复杂的桌面应用场景下,建立了多层次的错误捕获和上报机制。