不僅僅是web端,貌似很多地方,都有一定的富文本編輯器輪子,但是像我這樣針對(duì)不同用戶不同業(yè)務(wù)不同需求的,幾乎玩轉(zhuǎn)過(guò)所有能找到的富文本編輯器工具,基本上就沒(méi)個(gè)讓人省心的。
如果你要罵我自己去造個(gè)輪子,如果你我是這水平的人,咱就沒(méi)必要看下文啦,還用得著上@今日頭條 嗎?聽(tīng)說(shuō)這里的用戶都是月薪2萬(wàn)。我說(shuō)如果能自己造個(gè)比市面上輪子更好的富文本編輯器,恐怕都是月薪NN萬(wàn)了,何必來(lái)這浪費(fèi)時(shí)間呢?
目前將就使用的是Tinymce編輯器,但是在Vue里自己封裝了一個(gè)編輯器組件,以便所有表單編輯時(shí)候可以調(diào)用,奇怪的問(wèn)題一大堆。

我的使用方法是根據(jù)網(wǎng)絡(luò)博客文章的方式引入,使用Tinymce5與Vue整合。、
參考文章為:
https://liubing.me/vue-tinymce-5.html
然而,如上方法,一模一樣的使用方式,在項(xiàng)目里,奇怪的問(wèn)題就是,同一個(gè)URL,點(diǎn)擊第一次可以編輯內(nèi)容,返回,然后再點(diǎn)擊就出現(xiàn)空白了。搞了三天沒(méi)解決!
不喜歡Vue最大的一點(diǎn)就是,路由是否配置keep-alive,需要每次打開(kāi)頁(yè)面更新數(shù)據(jù),沒(méi)有angular那種生命周期函數(shù)ngAfterViewInit,可以每次等到渲染節(jié)點(diǎn)渲染完成再自己去根據(jù)已經(jīng)渲染好的HTML節(jié)點(diǎn)獲取元素進(jìn)行再次js操作。使用mounted函數(shù)進(jìn)行編輯器初始化,可以,我切換路由再次訪問(wèn),不會(huì)再次運(yùn)行,這就需要activated,但是不會(huì)讓組件重新渲染。關(guān)于這個(gè)Vue數(shù)據(jù)更新的,一種就是activated里,一種就是watch里監(jiān)聽(tīng)$route。這種操作真是要命咯!
從N多項(xiàng)目來(lái)看,一般組件化復(fù)用組件都是在render函數(shù)進(jìn)行渲染!還是angular一把梭,沒(méi)這么多蛋疼的生命周期渲染過(guò)程的操作。

除了Tinymce,還有quill/wangeditor/vueditor、ckeditor等很多富文本編輯器,但是太差了。編輯內(nèi)容操作十分有限!
目前只能看看那些付費(fèi)的編輯器如何了,付費(fèi)編輯器從Demo來(lái)看功能不少。
如果只是我自己使用,最適合的編輯器是Editor.js,結(jié)果直接輸出結(jié)構(gòu)化數(shù)據(jù)。這樣非常適合內(nèi)容放在不同的前端Android、IOS、小程序等任何地方方便展示,根據(jù)預(yù)設(shè)格式進(jìn)行自定義標(biāo)準(zhǔn)化渲染,就不會(huì)出現(xiàn)編輯時(shí)期的排版和結(jié)果不一致的問(wèn)題。

而給普通用戶使用的系統(tǒng),要做到不令用戶吐槽,傻瓜式使用,目前還真是無(wú)法滿足。
以前傳統(tǒng)web開(kāi)發(fā),使用百度Ueditor編輯器,功能很多,但是目前很多內(nèi)容要放在手機(jī)上,或者響應(yīng)式頁(yè)面,這個(gè)編輯器也是太臃腫了。編輯結(jié)果的HTML夾雜了太多沒(méi)必要的標(biāo)簽,或者是不能很好的使用移動(dòng)端。而且編輯器已經(jīng)多年不更新了,在Vue、angular、react不同地方的引入也是會(huì)出現(xiàn)不同的問(wèn)題。