了解如何将 Tiptap 集成到你的 Vue 3 项目中,使用本分步指南。或者,你也可以查看我们的 Vue 文本编辑器示例。
要求
创建项目(可选)
如果你已经有一个 Vue 项目,那也没问题,可以跳过此步骤。
在本指南中,我们将从头开始创建一个新的 Vue 项目,命名为 my-tiptap-project。Vue CLI 会自动设置好所需的一切,确保选择 Vue 3 模板。
# 创建项目vue create my-tiptap-project# 进入项目目录cd my-tiptap-project
安装依赖
好了,模板项目已经准备就绪,现在终于可以安装 Tiptap 了!在下面的示例中,你需要安装 @tiptap/vue-3 包、@tiptap/pm(ProseMirror 库)以及 @tiptap/starter-kit,后者包含了大多数常见扩展,可以帮助你快速上手。
npm install @tiptap/vue-3 @tiptap/pm @tiptap/starter-kit
如果你已经完成了上面的步骤,现在可以使用 npm run dev 启动你的项目,并在浏览器中打开 http://localhost:8080。如果你是在现有项目上进行操作,端口号可能会有所不同。
集成 Tiptap
要开始使用 Tiptap,你需要在应用中添加一个新组件。我们将其命名为 Tiptap,并在 components/Tiptap.vue 文件中添加以下示例代码。
这是在 Vue 中快速运行 Tiptap 的最快方法。它提供了一个非常基本的 Tiptap 版本,不带任何按钮。不用担心,稍后你可以添加更多功能。
<template><editor-content :editor="editor" /></template><script>import { Editor, EditorContent } from '@tiptap/vue-3'import StarterKit from '@tiptap/starter-kit'export default {components: {EditorContent,},data() {return {editor: null,}},mounted() {this.editor = new Editor({content: "<p>I'm running Tiptap with Vue.js. 🎉</p>",extensions: [StarterKit],})},beforeUnmount() {this.editor.destroy()},}</script>
或者,你可以使用 Composition API 并结合 useEditor 方法。
<template><editor-content :editor="editor" /></template><script>import { useEditor, EditorContent } from '@tiptap/vue-3'import StarterKit from '@tiptap/starter-kit'export default {components: {EditorContent,},setup() {const editor = useEditor({content: "<p>I'm running Tiptap with Vue.js. 🎉</p>",extensions: [StarterKit],})return { editor }},}</script>
或者,你也可以使用 Vue 3 的 <script setup> 语法。
<template><editor-content :editor="editor" /></template><script setup>import { useEditor, EditorContent } from '@tiptap/vue-3'import StarterKit from '@tiptap/starter-kit'const editor = useEditor({content: "<p>I'm running Tiptap with Vue.js. 🎉</p>",extensions: [StarterKit],})</script>
将其添加到你的应用
现在,替换 src/App.vue 文件的内容,并使用 Tiptap 组件:
<template><div id="app"><tiptap /></div></template><script>import Tiptap from './components/Tiptap.vue'export default {name: 'App',components: {Tiptap,},}</script>
你现在应该可以在浏览器中看到 Tiptap 了。给自己点个赞吧!:)
使用 v-model(可选)
你可能已经习惯在表单中使用 v-model 进行数据绑定,Tiptap 也支持这种方式。以下是如何在 Tiptap 中使用 v-model 的示例:
<p>A Vue.js wrapper component for Tiptap to use <code>v-model</code>.</p>
index.vue
<template><div><editor v-model="content" /><div class="output-group"><label>Content</label><code>{{ content }}</code></div></div></template><script>import Editor from './Editor.vue'export default {components: {Editor,},data() {return {content: '<p>A Vue.js wrapper component for Tiptap to use <code>v-model</code>.</p>',}},}</script>
