vue2.0 實現(xiàn)富文本編輯器功能
前端富文本編譯器使用總結(jié):
UEditor:百度前端的開源項目,功能強(qiáng)大,基于 jQuery,但已經(jīng)沒有再維護(hù),而且限定了后端代碼,修改起來比較費勁
bootstrap-wysiwyg:微型,易用,小而美,只是 Bootstrap + jQuery...
kindEditor:功能強(qiáng)大,代碼簡潔,需要配置后臺,而且好久沒見更新了
wangEditor:輕量、簡潔、易用,但是升級到 3.x 之后,不便于定制化開發(fā)。不過作者很勤奮,廣義上和我是一家人,打個call
quill:本身功能不多,不過可以自行擴(kuò)展,api 也很好懂,如果能看懂英文的話...
summernote:沒深入研究,UI挺漂亮,也是一款小而美的編輯器,可是我需要大的
在這里著重說一下這個 tinymce這個插件,
優(yōu)勢有三:
1. GitHub 上星星很多,功能也齊全;
2. 唯一一個從 word 粘貼過來還能保持絕大部分格式的編輯器;
3. 不需要找后端人員掃碼改接口,前后端分離;
上代碼(vue中使用)
1.引入
npm install @tinymce/tinymce-vue -S
2.在 node_modules 中找到 tinymce/skins 目錄,然后將 skins 目錄拷貝到 static 目錄下
// 如果是使用 vue-cli 3.x 構(gòu)建的 typescript 項目,就放到 public 目錄下,文中所有 static 目錄相關(guān)都這樣處理
3.給你們個語言包(https://www.tiny.cloud/download/language-packages/)地址都給了要是還不會那就沒救了
4.然后將這個語言包放到 static 目錄下,為了結(jié)構(gòu)清晰,我包了一層 tinymce 目錄
5.import
import tinymce from 'tinymce/tinymce' import 'tinymce/themes/modern/theme' import Editor from '@tinymce/tinymce-vue'
tinymce-vue 是一個組件,需要在 components 中注冊,然后直接使用
<editor id="tinymce" v-model="tinymceHTML" :init="tinymceInit"></editor>
這里的 init 是 tinymce 初始化配置項,后面會講到一些關(guān)鍵的 api,完整 api 可以參考https://www.tiny.cloud/docs/configure/
編輯器需要一個 skin 才能正常工作,所以要設(shè)置一個 skin_url 指向之前復(fù)制出來的 skin 文件
data () {
return {
tinymceHtml: '請輸入內(nèi)容',
init: {
language_url: '/static/tinymce/zh_CN.js',
language: 'zh_CN',
skin_url: '/static/tinymce/skins/lightgray',
height: 300,
plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu',
toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat',
branding: false
}
}
},
6.同時在 mounted 中也需要初始化一次:
mounted(){
tinymce.init({}) // 特別注意這個空對象的存在,如果這個初始化空對象不存在依舊會報錯
}
完整代碼如下:
<template>
<div class='tinymce'>
<h1>tinymce</h1>
<!-- 富文本編輯組件 -->
<editor id='tinymce' v-model='tinymceHtml' :init='init'></editor>
<div v-html='tinymceHtml'></div>
</div>
</template>
<script>
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/modern/theme'
import Editor from '@tinymce/tinymce-vue'
import 'tinymce/plugins/image'
import 'tinymce/plugins/link'
import 'tinymce/plugins/code'
import 'tinymce/plugins/table'
import 'tinymce/plugins/lists'
import 'tinymce/plugins/contextmenu'
import 'tinymce/plugins/wordcount'
import 'tinymce/plugins/colorpicker'
import 'tinymce/plugins/textcolor'
export default {
name: 'tinymce',
data () {
return {
tinymceHtml: '請輸入內(nèi)容',
init: {
language_url: '/static/tinymce/zh_CN.js',
language: 'zh_CN',
skin_url: '/static/tinymce/skins/lightgray',
height: 300,
plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu',
toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat',
branding: false
}
}
},
mounted () {
tinymce.init({})
},
components: {Editor}
}
</script>
其中的帶plugins為擴(kuò)展性操作,如果不需要,可以不引入。
效果如下圖:

總結(jié)
以上所述是小編給大家介紹的vue2.0 實現(xiàn)富文本編輯器功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
vue3 element-plus如何使用icon圖標(biāo)組件
這篇文章主要介紹了vue3 element-plus如何使用icon圖標(biāo)組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue實現(xiàn)動態(tài)查詢規(guī)則生成組件
今天我們來給大家介紹下在Vue開發(fā)中我們經(jīng)常會碰到的一種需求場景,本文主要介紹了Vue動態(tài)查詢規(guī)則生成組件,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
vue中實現(xiàn)點擊按鈕滾動到頁面對應(yīng)位置的方法(使用c3平滑屬性實現(xiàn))
這篇文章主要介紹了vue中實現(xiàn)點擊按鈕滾動到頁面對應(yīng)位置的方法,這段代碼主要使用c3平滑屬性實現(xiàn),需要的朋友可以參考下2019-12-12
vue 3 中watch 和watchEffect 的新用法
本篇文章主要通過 Options API 和 Composition API 對比 watch 的使用方法,讓大家快速掌握 vue3 中 watch 新用法,需要的朋友可以參考一下哦,希望對大家有所幫助2021-11-11
vue 監(jiān)聽是否切屏和開啟小窗的實現(xiàn)過程
這篇文章主要介紹了vue 監(jiān)聽是否切屏和開啟小窗的過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04

