学习如何将 Tiptap 集成到你的 SvelteKit 项目中,以下是详细的步骤指南。或者,你也可以查看我们的 Svelte 文本编辑器示例

快捷方式:带 Tiptap 的 Svelte REPL

如果你想直接开始,可以查看这个 带 Tiptap 的 Svelte REPL

要求

  • 你的计算机上已安装 Node
  • 具备 Svelte 使用经验

创建项目(可选)

如果你已经有一个 SvelteKit 项目,那也没问题,可以跳过此步骤。

在本指南中,我们将从头开始创建一个新的 SvelteKit 项目,命名为 my-tiptap-project。执行以下命令即可设置所需的一切。它会问你很多问题,你可以选择自己喜欢的选项或使用默认设置。

  1. npm create svelte@latest my-tiptap-project
  2. cd my-tiptap-project
  3. npm install
  4. npm run dev

安装依赖

好了,模板项目已经准备好,接下来让我们安装 Tiptap!在这个示例中,你需要安装 @tiptap/core 包和一些组件、@tiptap/pm 包,以及 @tiptap/starter-kit,它包含了大多数常见的扩展,可以帮助你快速上手。

  1. npm install @tiptap/core @tiptap/pm @tiptap/starter-kit

如果你完成了步骤 1 和 2,你可以通过运行 npm run dev 启动项目,并在浏览器中打开 http://localhost:3000/。如果你是在现有项目中操作,端口号可能会有所不同。

集成 Tiptap

要开始使用 Tiptap,你需要在应用中添加一个新组件。我们将其命名为 Tiptap,并在 src/lib/Tiptap.svelte 文件中添加以下示例代码。

这是在 SvelteKit 中快速运行 Tiptap 的最快方法。它提供了一个非常基本的 Tiptap 版本,不带任何按钮。不用担心,稍后你可以添加更多功能。

  1. <script>
  2. import { onMount, onDestroy } from 'svelte';
  3. import { Editor } from '@tiptap/core';
  4. import StarterKit from '@tiptap/starter-kit';
  5. let element;
  6. let editor;
  7. onMount(() => {
  8. editor = new Editor({
  9. element: element,
  10. extensions: [StarterKit],
  11. content: '<p>Hello World! 🌍️ </p>',
  12. onTransaction: () => {
  13. // 强制重新渲染以确保 `editor.isActive` 按预期工作
  14. editor = editor;
  15. },
  16. });
  17. });
  18. onDestroy(() => {
  19. if (editor) {
  20. editor.destroy();
  21. }
  22. });
  23. </script>
  24. {#if editor}
  25. <button
  26. on:click={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}
  27. class:active={editor.isActive('heading', { level: 1 })}
  28. >
  29. H1
  30. </button>
  31. <button
  32. on:click={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}
  33. class:active={editor.isActive('heading', { level: 2 })}
  34. >
  35. H2
  36. </button>
  37. <button
  38. on:click={() => editor.chain().focus().setParagraph().run()}
  39. class:active={editor.isActive('paragraph')}
  40. >
  41. P
  42. </button>
  43. {/if}
  44. <div bind:this={element} />
  45. <style>
  46. button.active {
  47. background: black;
  48. color: white;
  49. }
  50. </style>

将其添加到你的应用

现在,替换 src/routes/+page.svelte 文件的内容,并使用我们的新 Tiptap 组件:

  1. <script>
  2. import Tiptap from '$lib/Tiptap.svelte'
  3. </script>
  4. <main>
  5. <Tiptap />
  6. </main>

Tiptap 现在应该可以在浏览器中看到啦。给自己点个赞吧!:)