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 的穩定性和擴展性,為開發者提供高效的富文本解決方案。通過靈活的配置和模塊化設計,可快速適配不同業務場景。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81798.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab實現激光腔長計算滿足熱透鏡效應

激光腔長計算與熱透鏡效應補償 在全固態激光器中&#xff0c;熱透鏡效應是一個重要的問題&#xff0c;因為它會影響激光的光束質量和輸出功率。以下是如何計算激光腔長并考慮熱透鏡效應的方法&#xff0c;以及一些補償技術。 1. 激光腔長計算 激光腔長的計算需要考慮激光晶體…

Science Robotics 具身智能驅動的空中物理交互新范式:結合形態和傳感,與非結構化環境進行穩健交互

隨著科技的飛速發展&#xff0c;無人機技術已從單純的遠程感知擴展到與環境的物理交互領域&#xff0c;為可持續發展目標的實現提供了新的可能性。傳統的空中物理交互方法依賴于復雜的控制策略和精確的環境建模&#xff0c;盡管能夠實現高精度操作&#xff0c;但其在非結構化自…

圖神經網絡在信息檢索重排序中的應用:原理、架構與Python代碼解析

現代信息檢索系統和搜索引擎普遍采用兩階段檢索架構&#xff0c;在人工智能應用中也被稱為檢索增強生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;。在初始檢索階段&#xff0c;系統采用高效的檢索方法&#xff0c;包括詞匯檢索算法&#xff08;如BM25&…

List 源碼翻譯

List 源碼翻譯-jdk1.8 翻譯來自 AI 大模型。 全部源碼翻譯下載 /** 版權所有 (c) 1997, 2014, Oracle 和/或其附屬公司。保留所有權利。* ORACLE 專有/機密。使用受許可條款約束。*********************/package java.util;import java.util.function.UnaryOperator;/*** 有序…

Vscode 解決 #include <> 找不到的問題

本人遇到的情況, 使用 ROS 的過程中, 發現 #include <pcl/point_types.h> 不被 VScode 識別, 在 AI 的幫助下解決了該問題, 現總結如下: 1. 查看是否有相應的文件 Linux 下, point_types.h 的存儲路徑一般為: /usr/include/pcl-1.x (我的路徑是 /usr/include/pcl-1.12)…

霹靂吧啦Wz_深度學習-圖像分類篇章_1.1 卷積神經網絡基礎_筆記

深度學習-圖像分類篇章 參考筆記 卷積神經網絡 英文&#xff1a;Convolutional Neural Network&#xff0c;CNN雛形&#xff1a;1998年LeCun的LeNet5&#xff0c;第一個卷積神經網絡包含&#xff1a; 卷積層&#xff1a;Convolutions下采樣層&#xff1a;Subsampling全連階層…

基于多模態腦電、音頻與視覺信號的情感識別算法【Nature核心期刊,EAV:EEG-音頻-視頻數據集】

簡述 理解情感狀態對于開發下一代人機交互界面至關重要。社交互動中的人類行為會引發受感知輸入影響的心理生理過程。因此&#xff0c;探索大腦功能與人類行為的努力或將推動具有類人特質人工智能模型的發展。這里原作者推出一個多模態情感數據集&#xff0c;包含42名參與者的3…

理解并解決高丟包率問題,構建清晰流暢的實時音視頻通話

丟包作為數字通信中的重要干擾因素&#xff0c;常常潛伏在表面之下&#xff0c;卻嚴重影響性能&#xff0c;將清晰的對話變的模糊不清&#xff0c;將連貫的演示變的斷斷續續。因此&#xff0c;對音視頻通話相關應用的開發者來說&#xff0c;理解丟包率非常重要。 什么是丟包&am…

RDS PostgreSQL手動刪除副本集群副本的步驟

由于PostgreSQL不支持直接刪除副本集群&#xff0c;而是需要先將副本集群升級到主實例(區域集群)&#xff0c;然后在逐一將寫入器實例刪除&#xff0c;然后才可以刪除副本集群 查看現有的主從實例集群 將副本集群提升到區域集群 選擇副本集群–>操作–>提升 提升只讀副本…

ElementUI表單驗證指南

ElementUI 是一套基于 Vue.js 的組件庫&#xff0c;提供了豐富的表單組件和驗證功能。其表單驗證通過 el-form 組件結合 rules 規則實現&#xff0c;支持同步和異步驗證。 基本表單驗證實現 在 ElementUI 中&#xff0c;表單驗證需要配置 el-form 的 rules 屬性&#xff0c;并…

通過ansible playbook創建azure 資源

安裝 Ansible 在 macOS 上 Ansible 可以通過多種方式在 macOS 上安裝,推薦使用 pip 或 Homebrew。 使用 Homebrew 安裝 Ansible 運行以下命令: brew install ansible使用 pip 安裝 Ansible 確保 Python 已安裝(macOS 通常自帶 Python),然后運行: pip install ansible…

Spring框架學習day4--Spring集成Mybatis(IOC)

Spring集成Mybatis1.添加jar包&#xff08;pom.xml&#xff09;2.配置sqlSessionFactiory&#xff08;spring.xml)3.再service類中注入Dao代理接口4.測試類5文件結構 Spring集成Mybatis Spring集成Mybatis其核心是將SqlSessionFactory交由Spring管理&#xff0c;并由 Spring管理…

可靠數據傳輸原理

目錄 構造可靠數據傳輸協議 一、rdt1.0&#xff1a;理想信道下的可靠傳輸 核心假設與功能 二、rdt 2.0&#xff1a;帶差錯檢測的停等協議 核心假設與功能 三、rdt 2.1&#xff1a;修復 ACK/NAK 不可靠性 核心改進 四、rdt 2.2&#xff1a;純 ACK 實現的可靠傳輸 核心改…

Python Day33

Task&#xff1a; MLP神經網絡的訓練 1.PyTorch和cuda的安裝 2.查看顯卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3.cuda的檢查 4.簡單神經網絡的流程 a.數據預處理&#xff08;歸一化、轉換成張量&#xff09; b.模型的定義 i.繼承nn.Module類 ii.定義每一個層 iii…

社群分享:義烏|杭州電商|店群賣家,私域魚塘運營的排單系統開源|私域魚塘運營|返款軟件開源

熟悉東哥的朋友都知道&#xff0c;我自己也運營一個電商社群&#xff0c;主要是針對玩私域|魚塘的電商玩家。 在當前電商環境下&#xff0c;社群分享型電商、店群賣家及私域魚塘運營者&#xff0c;面臨著日益復雜的訂單管理和客服調度問題。傳統的人工處理不僅效率低…

github雙重認證怎么做

引言 好久沒登陸github了&#xff0c; 今天登陸github后&#xff0c;提醒進行2FA認證。 查看了github通知&#xff0c;自 2023 年 3 月起&#xff0c;GitHub 要求所有在 GitHub.com 上貢獻代碼的用戶啟用一種或多種形式的雙重身份驗證 (2FA)。 假如你也遇到這個問題&#xf…

Linux Docker 安裝oracle19c數據庫教程

Oracle 19c 是甲骨文公司&#xff08;Oracle Corporation&#xff09;發布的一款關系型數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;屬于 Oracle Database 19c 版本。它是 Oracle 12c 和 18c 系列的后續版本&#xff0c;提供了多個重要的功能改進和新特性&#xf…

jenkins報錯java.lang.OutOfMemoryError: Java heap space

報錯信息 2025-05-27 09:17:16.2340000 [id38] WARNING j.u.ErrorLoggingScheduledThreadPoolExecutor#afterExecute: failure in task not wrapped in SafeTimerTask java.lang.OutOfMemoryError: Java heap spaceat java.base/java.lang.StringUTF16.compress(StringUTF16.j…

【Bug】定時任務中 Jpa Save 方法失效

【Bug】定時任務中 Jpa Save 方法失效 首先說一下問題&#xff0c;在定時任務中調用 jpa 的 save 方法沒有效果&#xff0c;但是通過外界調用&#xff0c;比如 controller 中注入 service 來調用是可以的&#xff0c;真是巨巨巨離譜&#xff0c;我被折磨了好幾天。 我這個問題…

【Redis】熱點key問題,的原因和處理,一致性哈希,刪除大key的方法

熱點 Key 指單個 Key 被高并發訪問&#xff08;如爆款商品&#xff09;&#xff0c;導致 Redis 壓力驟增。解決方案應針對 “單個 Key 高并發”&#xff1a; 分片緩存&#xff1a;將熱點 Key 分散到不同 Redis 節點&#xff08;如按一致性哈希算法分片&#xff09;。本地緩存&…