【PPTist】开源PPT编辑器初体验

前言:PPTist 是一款基于 Vue3.x + TypeScript 构建的开源的PPT在线编辑器,功能很齐全,体验感很好,下载运行也很方便,没有奇奇怪怪的报错,分享给大家,以后可能会出系列!

下载运行就不说了,很简单方便,而且没有报错。

界面很简洁美观

另外项目目录也比较清晰,就是传统的 Vue3 项目。学习一个开源项目,最好的学习方式是从某一个功能入手,这一篇咱们就来看一个简单的功能吧,就是【添加幻灯片】功能。

先全局搜索一下 "添加幻灯片"

src/views/Editor/Thumbnails/index.vue 文件中,点击按钮的时候会触发 src/hooks/useSlideHandler.ts 中的 createSlide 方法,用来创建一个空白页并添加到下一页。

javascript 复制代码
// 创建一页空白页并添加到下一页
const createSlide = () => {
  const emptySlide: Slide = {
    id: nanoid(10), // 10位随机数作为幻灯片ID
    elements: [],
    background: {
      type: 'solid',
      color: theme.value.backgroundColor,
    },
  }
  // 创建新页面后,将当前选中元素ID列表清空
  mainStore.setActiveElementIdList([])
  // 添加新页面
  slidesStore.addSlide(emptySlide)
  // 添加快照
  addHistorySnapshot()
}

src/store/slides.ts

javascript 复制代码
addSlide(slide: Slide | Slide[]) {
  const slides = Array.isArray(slide) ? slide : [slide]
  for (const slide of slides) {
    if (slide.sectionTag) delete slide.sectionTag
  }

  // 将新页面添加到当前页面之后
  const addIndex = this.slideIndex + 1
  this.slides.splice(addIndex, 0, ...slides)
  this.slideIndex = addIndex
},

可以看到幻灯片其实是一个数组,逻辑还挺容易看懂的。

然后幻灯片的展示使用的是 Draggable 组件,这个组件是第三方的依赖

javascript 复制代码
import Draggable from 'vuedraggable'

vuedraggable

另外存储数据使用的是 pinia

卡哇伊的标志

寓意着store中可以存储着多个对象,但是它们的根部又紧密相连~~~~~~

相关推荐
Despacito0o6 小时前
ESP32S3+VSCode+PlatformIO+FreeRTOS+Arduino多核编程实战:FreeRTOS任务创建+任务调度详解
ide·vscode·编辑器
cypking6 小时前
.vscode 扩展配置
ide·vscode·编辑器
我命由我123459 小时前
VSCode - VSCode 快速跳转标签页
开发语言·前端·ide·vscode·编辑器·html·js
DIY机器人工房10 小时前
关于字符编辑器vi、vim版本的安装过程及其常用命令:
linux·stm32·单片机·嵌入式硬件·编辑器·vim·diy机器人工房
死也不注释11 小时前
第三章自定义检视面板_创建自定义编辑器类_检测与应用修改(本章进度(2/9))
开发语言·编辑器
xqlily14 小时前
Windows8.1安装哪个版本的vscode?
ide·vscode·编辑器
死也不注释14 小时前
第三章自定义检视面板_创建自定义编辑器类_实现自定义检视面板中的GUI内容(本章进度(1/9))
unity·编辑器
七灵微14 小时前
【VSCode】上传插件
ide·vscode·编辑器
爱吃烤鸡翅的酸菜鱼17 小时前
IDEA高效开发:Database Navigator插件安装与核心使用指南
java·开发语言·数据库·编辑器·intellij-idea·database
小妖6661 天前
vscode 源码编译
ide·vscode·编辑器