当前位置: 首页 > news >正文

vue+ts+TinyEditor 是基于 Quill 2.0 开发的富文本编辑器,提供丰富的扩展功能,适用于现代 Web 开发的完整安装使用教程

简介

       TinyEditor 是基于 Quill 2.0 开发的富文本编辑器,提供丰富的扩展功能,适用于现代 Web 开发。具备模块化设计、轻量级架构和高度可定制化特性,支持多种插件扩展,满足不同场景需求。

核心特性
  • 基于 Quill 2.0 的现代化架构
  • 模块化设计,支持按需加载
  • 提供多种扩展功能(表格、代码高亮、Markdown 支持等)
  • 跨平台兼容性(Web、移动端适配)
  • 支持实时协作编辑

1.安装依赖

npm i @opentiny/fluent-editor
npm i dompurify
npm i html2canvas
npm i katex
npm install quill-toolbar-tip
npm install quill-table-up

2.在项目根目录创建 `types/global.d.ts` 类型声明文件
 

//types/global.d.ts
import type Hljs from 'highlight.js'
import type Katex from 'katex'
import type Html2Canvas from 'html2canvas'//创建类型声明文件,用于声明全局变量的类型
declare global {interface Window {hljs: typeof Hljskatex: typeof KatexHtml2Canvas: typeof Html2Canvas}
}

3.更新 tsconfig.json,确保包含类型声明路径

{"files": [],"references": [{ "path": "./tsconfig.app.json" },{ "path": "./tsconfig.node.json" }],"compilerOptions": {"typeRoots": ["./node_modules/@types", "./types"]}
}

4.完整代码

<script setup lang="ts">
import { onMounted, ref } from 'vue'
import type FluentEditor from '@opentiny/fluent-editor'
import hljs from 'highlight.js'
import Html2Canvas from 'html2canvas'
import katex from 'katex'
import 'highlight.js/styles/atom-one-dark.css'
import 'katex/dist/katex.min.css'// 安全类型断言挂载
if (import.meta) { // Vite 环境判断(window as unknown as { hljs: typeof hljs }).hljs = hljswindow.katex = katex as unknown as typeof window.katex// @ts-ignorewindow.Html2Canvas = Html2Canvas as typeof window.Html2Canvas
}const editor = ref<FluentEditor>()
const articleRef = ref<HTMLElement>()interface MentionItem {name: stringage: numbercn: string
}const searchKey = 'name'
const mentionList: MentionItem[] = [{ name: 'Jack', age: 26, cn: 'Jack 杰克' },{ name: 'Lucy', age: 22, cn: 'Lucy 露西' },
]const TOOLBAR_CONFIG = [['undo', 'redo', 'clean', 'format-painter'],[{ header: [1, 2, 3, 4, 5, 6, false] },{ font: [] },{ size: ['12px', '14px', '16px', '18px', '20px', '24px', '32px', '36px', '48px', '72px'] }],['bold', 'italic', 'strike', 'underline'],[{ color: [] }, { background: [] }],[{ align: [] }, { list: 'ordered' }, { list: 'bullet' }, { list: 'check' }],[{ script: 'sub' }, { script: 'super' }],[{ indent: '-1' }, { indent: '+1' }],[{ direction: 'rtl' }],['link', 'blockquote', 'code', 'code-block'],['image', 'file'],['emoji', 'video', 'formula', 'screenshot'],
]const updateHTML = (html: string) => {if (articleRef.value) {articleRef.value.innerHTML = html}
}onMounted(async () => {// 动态导入客户端专用库const module = await import('@opentiny/fluent-editor')const FluentEditor = module.defaulteditor.value = new FluentEditor('#editor-get-content-html', {theme: 'snow',modules: {toolbar: TOOLBAR_CONFIG,syntax: { hljs },'emoji-toolbar': true,file: true,mention: {itemKey: 'cn',searchKey,search: (term: string) => {return mentionList.filter(item =>String(item[searchKey as keyof MentionItem]).includes(term))}}}})updateHTML(editor.value.root.innerHTML)editor.value.on('text-change', () => {updateHTML(editor.value?.root.innerHTML || '')})
})</script><template><div id="editor-get-content-html"><p>Hello <strong>TinyEditor</strong>!</p></div><br>预览效果:<divref="articleRef"class="article ql-editor"/>
</template>
运行效果
5.国际化

将使用语言通过 options 传入,目前支持语言 zh-CN 和 en-US,默认使用 en-US

Welcome to commit PR for more language support.

可通过函数 changeLanguage({ lang, langText }) 修改当前语言

import type { I18N } from '@opentiny/fluent-editor'在modules使用modules: {...i18n: {lang: 'zh-CN',},}

 动态变更:

function switchLanguage() {// 'zh-CN'  'en-US' (editor.getModule('i18n') as I18N).changeLanguage({ lang: 'zh-CN' })
}
总结

TinyEditor 结合 Quill 2.0 的稳定性和扩展性,为开发者提供高效的富文本解决方案。通过灵活的配置和模块化设计,可快速适配不同业务场景。

相关文章:

  • ModbusTcp协议
  • 第五章 面向对象(进阶)
  • qt之开发大恒usb3.0相机三
  • 第五十七节:综合项目实践-智能监控系统原型
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月28日第91弹
  • linux版本vmware修改ubuntu虚拟机为桥接模式
  • 篇章五 数据结构——链表(一)
  • maven离线将jar包导入到本地仓库中
  • linux安装ffmpeg7.0.2全过程
  • Maven 项目中集成数据库文档生成工具
  • [cg][ds] 八面体映射编码Normal
  • 61、【OS】【Nuttx】编码规范解读(九)
  • SpringBoot 自动装配原理深度解析:从源码到实践
  • Bootstrap法进行随机模拟
  • 班翎流程平台 | 流程变量赋值事件,简化流程配置,灵活构建流程
  • micromamba安装 配置 pythonocc安装
  • LMEval ,谷歌开源的统一评估多模态AI模型框架
  • 树莓派设置静态ip 永久有效 我的需要设置三个 一个摄像头的 两个设备的
  • FastAPI 依赖注入
  • web-css
  • 网站制作和收费标准/泰安seo培训
  • 杭州哪家做企业网站/网站优化排名查询
  • 网站建设所需人力/百度服务
  • php动态网站开发参考文献/黑帽seo排名技术
  • 做二手车网站需要什么手续/网络营销的主要手段和策略
  • 用java做的游戏下载网站有哪些/如何设计一个网页