vue2.0 實(shí)現(xiàn)富文本編輯器功能
前端富文本編譯器使用總結(jié):
UEditor:百度前端的開(kāi)源項(xiàng)目,功能強(qiáng)大,基于 jQuery,但已經(jīng)沒(méi)有再維護(hù),而且限定了后端代碼,修改起來(lái)比較費(fèi)勁
bootstrap-wysiwyg:微型,易用,小而美,只是 Bootstrap + jQuery...
kindEditor:功能強(qiáng)大,代碼簡(jiǎn)潔,需要配置后臺(tái),而且好久沒(méi)見(jiàn)更新了
wangEditor:輕量、簡(jiǎn)潔、易用,但是升級(jí)到 3.x 之后,不便于定制化開(kāi)發(fā)。不過(guò)作者很勤奮,廣義上和我是一家人,打個(gè)call
quill:本身功能不多,不過(guò)可以自行擴(kuò)展,api 也很好懂,如果能看懂英文的話...
summernote:沒(méi)深入研究,UI挺漂亮,也是一款小而美的編輯器,可是我需要大的
在這里著重說(shuō)一下這個(gè) tinymce這個(gè)插件,
優(yōu)勢(shì)有三:
1. GitHub 上星星很多,功能也齊全;
2. 唯一一個(gè)從 word 粘貼過(guò)來(lái)還能保持絕大部分格式的編輯器;
3. 不需要找后端人員掃碼改接口,前后端分離;
上代碼(vue中使用)
1.引入
npm install @tinymce/tinymce-vue -S
2.在 node_modules 中找到 tinymce/skins 目錄,然后將 skins 目錄拷貝到 static 目錄下
// 如果是使用 vue-cli 3.x 構(gòu)建的 typescript 項(xiàng)目,就放到 public 目錄下,文中所有 static 目錄相關(guān)都這樣處理
3.給你們個(gè)語(yǔ)言包(https://www.tiny.cloud/download/language-packages/)地址都給了要是還不會(huì)那就沒(méi)救了
4.然后將這個(gè)語(yǔ)言包放到 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 是一個(gè)組件,需要在 components 中注冊(cè),然后直接使用
<editor id="tinymce" v-model="tinymceHTML" :init="tinymceInit"></editor>
這里的 init 是 tinymce 初始化配置項(xiàng),后面會(huì)講到一些關(guān)鍵的 api,完整 api 可以參考https://www.tiny.cloud/docs/configure/
編輯器需要一個(gè) skin 才能正常工作,所以要設(shè)置一個(gè) skin_url 指向之前復(fù)制出來(lái)的 skin 文件
data () {
return {
tinymceHtml: '請(qǐng)輸入內(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.同時(shí)在 mounted 中也需要初始化一次:
mounted(){
tinymce.init({}) // 特別注意這個(gè)空對(duì)象的存在,如果這個(gè)初始化空對(duì)象不存在依舊會(huì)報(bào)錯(cuò)
}
完整代碼如下:
<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: '請(qǐng)輸入內(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 實(shí)現(xiàn)富文本編輯器功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue3 element-plus如何使用icon圖標(biāo)組件
這篇文章主要介紹了vue3 element-plus如何使用icon圖標(biāo)組件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue實(shí)現(xiàn)動(dòng)態(tài)查詢規(guī)則生成組件
今天我們來(lái)給大家介紹下在Vue開(kāi)發(fā)中我們經(jīng)常會(huì)碰到的一種需求場(chǎng)景,本文主要介紹了Vue動(dòng)態(tài)查詢規(guī)則生成組件,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Vue3 實(shí)現(xiàn)雙盒子定位Overlay的示例
這篇文章主要介紹了Vue3 實(shí)現(xiàn)雙盒子定位Overlay的示例,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-12-12
vue中實(shí)現(xiàn)點(diǎn)擊按鈕滾動(dòng)到頁(yè)面對(duì)應(yīng)位置的方法(使用c3平滑屬性實(shí)現(xiàn))
這篇文章主要介紹了vue中實(shí)現(xiàn)點(diǎn)擊按鈕滾動(dòng)到頁(yè)面對(duì)應(yīng)位置的方法,這段代碼主要使用c3平滑屬性實(shí)現(xiàn),需要的朋友可以參考下2019-12-12
vue 3 中watch 和watchEffect 的新用法
本篇文章主要通過(guò) Options API 和 Composition API 對(duì)比 watch 的使用方法,讓大家快速掌握 vue3 中 watch 新用法,需要的朋友可以參考一下哦,希望對(duì)大家有所幫助2021-11-11
詳解搭建一個(gè)vue-cli的移動(dòng)端H5開(kāi)發(fā)模板
這篇文章主要介紹了詳解搭建一個(gè)vue-cli的移動(dòng)端H5開(kāi)發(fā)模板,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
vue計(jì)算屬性想要傳入?yún)?shù)如何解決
這篇文章主要介紹了vue計(jì)算屬性想要傳入?yún)?shù)如何解決問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue 監(jiān)聽(tīng)是否切屏和開(kāi)啟小窗的實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了vue 監(jiān)聽(tīng)是否切屏和開(kāi)啟小窗的過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
vue+vant實(shí)現(xiàn)購(gòu)物車全選和反選功能
這篇文章主要為大家詳細(xì)介紹了vue+vant實(shí)現(xiàn)購(gòu)物車全選和反選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11

