vue后臺管理項(xiàng)目中使用froala-editor富文本編輯器教程

先上成品圖


????????????代碼貼在最下面,方便大家復(fù)制。????????????

補(bǔ)充:記得 把 富文本編輯器的版本改成2.9.0,否則工具欄會顯示不全。 直接按照版本安裝 cnpm install vue-froala-wysiwyg@2.9.0? --save? 就不會出現(xiàn)補(bǔ)充中的問題了

然后在main.js內(nèi),window.$ = jQuery 下面 在加上一句?window.jQuery = jQuery 就可以了?

一開始用的時(shí)候會出現(xiàn)項(xiàng)目跑不起來的情況,直接安裝? @babel/runtime-corejs2 ,

? ? font-awesome 這兩個(gè)插件,就可以跑起來了。

ueditor是百度團(tuán)隊(duì)研發(fā)的一款編輯器,同樣小編也實(shí)現(xiàn)了基于vue.js的集成使用,實(shí)現(xiàn)了v-model雙向綁定。有需要的同學(xué)點(diǎn)擊這里進(jìn)入我的github下載源碼,不懂或者遇到問題的話可以加我微信1115009958聯(lián)系我協(xié)助你解決,有時(shí)間我會寫一篇教程上傳到簡書,敬請期待。

這個(gè)是ueditor編輯器,第二個(gè)是froala

froala-editor富文本編輯器介紹:

WYSIWYG HTML編輯器是一款有史以來最強(qiáng)大的JavaScript富文本編輯器之一。它采用了最新的技術(shù),并利用jQuery和HTML5的巨大優(yōu)勢,創(chuàng)造了出色的編輯體驗(yàn)。擁有非常多的示例讓你輕松集成,讓你的用戶愛上它清晰的設(shè)計(jì)。它能和Ruby On Rails,Django,Angular.js,Meteor,Symgony.CakePHP等集成,具有如下特點(diǎn)。

~微小 - 只需添加您需要的插件(30+ 官方插件)

客戶端框架集成

~可以向如PHP,Node.JS,.NET,Java, 和Python提供服務(wù)端開發(fā)工具包

~代碼注釋精美

在線文檔更新

~簡單可擴(kuò)展- 良好的插件注釋使你更容易使用和開發(fā)自己的插件

~良好的維護(hù) -持續(xù)更新

~很好的支持 -幫助中心

選擇這個(gè)編輯器的原因就是他可以全屏顯示,可以復(fù)制代碼,圖片上傳和后端配置都賊方便,大大滿足現(xiàn)有的項(xiàng)目,哦對了,主要是這個(gè)編輯器特么的支持v-model雙向綁定~~~有木有??

演示

基本演示:https://www.froala.com/wysiwyg-editor

在線演示:https://www.froala.com/wysiwyg-editor/inline

完整列表:https://www.froala.com/wysiwyg-editor/examples

開始使用

??注意:本文只講vue2.0的用法,3.0的話請自行測試,有時(shí)間了小編會把3.0使用教程上傳上來。

初始化編輯器

Froala WYSIWYG HTML編輯器是一個(gè)易于集成和易于使用的插件。它需要jQuery1.11.0或更高版本,以及名為Font Awesome4.4.0的圖標(biāo)字體。你也可以使用舊版本的Font Awesome,但是某些編輯器的圖標(biāo)將不會出現(xiàn)。

下面是如何在vue.js上初始化編輯器的基本示例。

首先,我們需要在項(xiàng)目列表中新建一個(gè)組件,例如該組件起名為?editor.vue ,就放在components目錄下。前提是我們已經(jīng)裝上了插件支持和main.js配置

cnpm install vue-froala-wysiwyg@2.9.0? --save

cnpm install jquery --save

在main.js插入這段代碼

第二,editor.vue組件內(nèi)這樣寫入代碼


里面各個(gè)配置參數(shù)啥意思這里就不做解釋了,各位自行百度吧。

第三:在需要調(diào)用該組件的組件內(nèi),這樣寫

1)要先把editor組件引進(jìn)來,這個(gè)要是還不會的話,建議先去學(xué)習(xí)下vue基礎(chǔ)

2)這里要注意下調(diào)用子組件的方法引發(fā)的問題,詳細(xì)情況請查看我另一篇博文(前端踩坑小結(jié):當(dāng)element-ui的el-dialog組件中包含子組件時(shí),用refs調(diào)用子組件時(shí)的undefined問題

ps:我的項(xiàng)目是做的后臺管理,需要用到編輯器添加,編輯圖文,這里用到了vue指令v-model雙向綁定,很是方便。formData數(shù)據(jù)是該組件的父組件傳過來的,沒有這個(gè)數(shù)據(jù)的話自己在data里聲明一個(gè)。前端的話到這里就結(jié)束了,圖片上傳,視頻上傳的接口找你們公司后端要就行,填在我打馬賽克的那幾個(gè)地方就可以了。不說了,我去飛了。哈哈??

ps:正式打包上線的時(shí)候,可能有些問題,比如會出現(xiàn)圖標(biāo)字體找不到等等,有時(shí)間我會把問題的解決方案更新上來,敬請關(guān)注

更新:

打包上線后會出現(xiàn)以下幾個(gè)問題:

1).woff等圖標(biāo)字體找不到,導(dǎo)致下圖這個(gè)情況~

.woff等圖標(biāo)字體找不到

分析:

仔細(xì)檢查控制臺報(bào)的錯(cuò)誤 xxxx404,不要怕,404不就是沒找到嘛,在看路徑發(fā)現(xiàn)多了css/static這兩層路徑,打包后static文件夾下面直接就可以找到fonts文件夾的,原來這都是webpack搞的鬼,我們這樣解決就好,當(dāng)然,你也可以在css目錄下新建一個(gè)static文件夾,再把fonts文件夾復(fù)制過去,不過這是最笨的方法,下面看標(biāo)準(zhǔn)解決方案。

解決方案:

在build文件夾下的webpack.prod.conf.js文件中修改extract: true為false,然后在重新打包上傳即可。

webpack.prod.conf.js

上傳服務(wù)器后,你發(fā)現(xiàn)控制臺不報(bào)錯(cuò)了,圖標(biāo)字體頁找到了,界面頁正常了,(腰也不痛了,腎也好了,一晚上又可以好幾次了,哈哈哈??)可是~~怎么會出現(xiàn)紅色背景警告一樣的英文呢,什么鬼~

這就是第二個(gè)問題,froala編輯器其實(shí)是收費(fèi)的,但是我們可以免費(fèi)使用他(什么亂七八糟的,就是干)別急,看看怎么解決他個(gè)狗日的。

你可能會想到,用css的display:none隱藏掉不就可以了嗎。?錯(cuò) ?,none了一時(shí)爽,none后變textarea。

所以還是換種方式吧,也是用css,但是我們這樣搞:(截圖中的代碼請?jiān)谧钕路綇?fù)制)寫在App.vue這個(gè)組件中的style下。style不要加scoped

上面的空白怎么辦呢,也是用css解決,廢話不多說,看代碼:

然后,光標(biāo)上去了,也可以在上方輸入文字了。但是提示文字沒上來,請繼續(xù)看下方解決方案,自然也是用css。


在然后,你會發(fā)現(xiàn)都正常了,看著真心舒服。

本教程到此結(jié)束。??代碼貼下面,方便大家復(fù)制。

.fr-wrapper > div[style*="z-index: 9999"] {

? position: absolute;

? top: -10000px;

? opacity: 0;

}

.fr-element.fr-view {

? position: absolute;

? top: 0;

}

.fr-placeholder{

? margin-top: 0 !important;

}

//下面這段代碼是封裝好的上面提到的editor.vue組件,直接復(fù)制過去,然后格式化代碼即可。xxxxx換成你自己都接口地址

<template> <froala :config="config"></froala></template><script>export default { data() { return { editor: null, config: { zIndex: 2501, height: "600", toolbarSticky: false, autofocus: true, toolbarButtons: [ "fullscreen", "bold", "italic", "underline", "strikeThrough", "subscript", "superscript", "|", "fontFamily", "fontSize", "color", "inlineClass", "inlineStyle", "paragraphStyle", "lineHeight", "|", "paragraphFormat", "align", "formatOL", "formatUL", "outdent", "indent", "quote",? "-", "insertLink", "insertImage", "insertVideo", "embedly", "insertFile", "insertTable", "|", "emoticons", "fontAwesome", "specialCharacters", "insertHR", "selectAll", "clearFormatting", "|", "print", "getPDF", "spellChecker", "help", "html", "|", "undo", "redo" ],? placeholder: '請?zhí)顚憙?nèi)容', language: "zh_cn", imageDefaultWidth: 500,? imageUploadURL: "xxxxxxxx", videoUploadURL: "xxxxxxx", fileUploadURL: "xxxxxxx", imageManagerLoadURL:"xxxxxx",? requestHeaders: { Authorization: localStorage.eleToken }, events: {? "froalaEditor.initialized": (e, editor) => { this.editor = editor; },? "froalaEditor.contentChanged": (e, editor) => { this.$emit("on-change", editor.html.get(true)); }, } } }; }, methods: { setHtml(html) { if (this.editor) { this.editor.html.set(html); } } }};</script><style></style>


<Editor ref="froalaEditor" @on-change="changeContent" v-model="formData.content"></Editor>

import Editor from '@/components/editor.vue'

components: { Editor },

@open="init()"

init () {

? ? ? ? this.$nextTick(()=>{

? ? ? ? console.log(this.formData.content)

? ? ? ? this.$refs.froalaEditor.setHtml(this.formData.content)

? ? ? ? })


? ? },

? ? changeContent (html) {

? ? ? this.formData.content = html

? ? ? // console.log(html)

? ? },

//-------------------- 富文本編輯配置區(qū) --------------------------------------------------//

import jQuery from 'jquery'

import VueFroala from 'vue-froala-wysiwyg'

// Require Froala Editor js file.

require('froala-editor/js/froala_editor.pkgd.min')

// Require Froala Editor css files.

require('froala-editor/css/froala_editor.pkgd.min.css')

require('font-awesome/css/font-awesome.css')

require('froala-editor/js/languages/zh_cn')

require('froala-editor/css/froala_style.min.css')

window.$ = jQuery

Vue.use(VueFroala)

//------------------------------------ 富文本編輯配置區(qū) -----------------------------------//

給個(gè)關(guān)注點(diǎn)個(gè)贊唄老鐵!!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,995評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容