vue 引入tinymce編輯器

新來(lái)一需求 說(shuō)要在后臺(tái)管理里添加富文本 之前用了百度富文本 打包失敗boss這么跟我說(shuō)的 開(kāi)始pingvue 富文本 這里需要提到的是 富文本會(huì)將上傳的圖片轉(zhuǎn)成base64 保存時(shí)數(shù)據(jù)庫(kù)壓力太大 所以建議寫(xiě)成我這樣 先上傳到服務(wù)器然后生成個(gè)標(biāo)簽寫(xiě)進(jìn)去 這樣最好

tinymce 有vue組件 果斷用起來(lái)
github - vue-tinymce

基本步驟

建議一步一步來(lái) 別直接粘貼代

  1. 安裝 一下兩個(gè)包
    "@tinymce/tinymce-vue": "^2.0.0"
    "tinymce": "^5.0.6"

npm install tinymce -S npm --save @tinymce/tinymce-vue

  1. 下載中文包

語(yǔ)言設(shè)置鏈接

  1. 將node_moudles里面tinymce里的skins文件復(fù)制

    皮膚引入

  2. 將上述上個(gè)操作文件 放入一個(gè)目錄下 我這里是public根據(jù)你的項(xiàng)目文件結(jié)構(gòu)來(lái)定

我的中文包是在tinymce里跟skins一個(gè)層級(jí)

請(qǐng)注意上下層結(jié)構(gòu)

組件內(nèi)容

設(shè)置內(nèi)容基本都在備注里

<template>
  <div class="tinymce-editor">
    <editor v-model="myValue"
            :init="init"
            :disabled="disabled"
            @onClick="onClick">
    </editor>
  </div>
</template>
<script>
  import tinymce from 'tinymce/tinymce'
  import Editor from '@tinymce/tinymce-vue'
  import 'tinymce/themes/silver'
  // 編輯器插件plugins
  // 更多插件參考:https://www.tiny.cloud/docs/plugins/
  import 'tinymce/plugins/image'// 插入上傳圖片插件
  import 'tinymce/plugins/media'// 插入視頻插件
  import 'tinymce/plugins/table'// 插入表格插件
  import 'tinymce/plugins/lists'// 列表插件
  import 'tinymce/plugins/wordcount'// 字?jǐn)?shù)統(tǒng)計(jì)插件
  export default {
    components: {
      Editor
    },
    props: {
      value: {
        type: String,
        default: ''
      },
      disabled: {
        type: Boolean,
        default: false
      },
      plugins: {
        type: [String, Array],
        default: 'lists image media table wordcount'
      },
      toolbar: {
        type: [String, Array],
        default: 'undo redo |  formatselect | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat'
      }
    },
    data () {
      return {
        init: {
          language_url: '/tinymce/zh_CN.js',  //public目錄下
          language: 'zh_CN',
          skin_url: '/tinymce/skins/ui/oxide', //public目錄下
          height: 300,
          plugins: this.plugins,  // 父組件傳入 或者 填寫(xiě)個(gè)默認(rèn)的插件 要選用什么插件都可以 去官網(wǎng)可以查到
          toolbar: this.toolbar,  // 工具欄 我用到的也就是lists image media table wordcount 這些 根據(jù)需求而定
          images_upload_url: '', //上傳路徑
          // 此處為圖片上傳處理函數(shù)琐旁,這個(gè)直接用了base64的圖片形式上傳圖片,
          // 如需ajax上傳可參考https://www.tiny.cloud/docs/configure/file-image-upload/#images_upload_handler

         // 官網(wǎng)抄的圖片上傳 項(xiàng)目如果用了vue-resource可以用$http 因?yàn)楸容^懶就沒(méi)改
          images_upload_handler: (blobInfo, success, failure) => {

            var xhr, formData;
            xhr = new XMLHttpRequest();
            xhr.withCredentials = false;
            xhr.open('POST', `${config.webPath}` + "basic/upload/");

            xhr.onload = function() {
              var json;
              if (xhr.status != 200) {
                failure('HTTP Error: ' + xhr.status);
                return;
              }
              json = JSON.parse(xhr.responseText);

              // if (!json || typeof json.img_url != 'string') {
              //   failure('Invalid JSON: ' + xhr.responseText);
              //   return;
              // }
              console.log(json)
              success(json.img_url);
            };

            formData = new FormData();
            formData.append('file', blobInfo.blob(), blobInfo.filename());
            console.log('formData', formData)

            xhr.send(formData);
          }
        },
        myValue: this.value
      }
    },
    mounted () {
      tinymce.init({})
    },
    methods: {
      onClick (e) {
        this.$emit('onClick', e, tinymce)
      }
    },
    watch: {
      value (newValue) {
        this.myValue = newValue
      },
      myValue (newValue) {
        this.$emit('input', newValue)
      }
    }
  }

</script>

  1. 引入
import TinymceEditor from '@/components/tiny-editor'
  1. 使用
<tinymce-editor ref="editor"
                              v-model="newFrom.contents" // 富文本內(nèi)容
                              @onClick="onClick"> //事件
</tinymce-editor>

最終界面

界面 - 工具欄可以自己引入插件
  • 與這篇無(wú)關(guān) 如果有同學(xué)跟我一樣是新手 在組件引入的時(shí)候因?yàn)橄鄬?duì)絕對(duì)路徑想死的 請(qǐng)看這個(gè)webpack配置 在webpack.config.js里改路徑
 alias: {
    "@src":path.resolve("src"),
    "@component":path.resolve("src/component"),
    "@pages":path.resolve("src/pages"),
    "@utils":path.resolve("src/utils"),
    }

從此沒(méi)遇到過(guò)任何引入相關(guān)的問(wèn)題 開(kāi)心

這篇沒(méi)看明白的可以看一下鏈接 我也是從這里學(xué)習(xí)到很多

-作者直接打包 看的明明白白

-codesandbox 案例

遇到問(wèn)題或卡住 請(qǐng)指出

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忘分,一起剝皮案震驚了整個(gè)濱河市辣吃,隨后出現(xiàn)的幾起案子触徐,更是在濱河造成了極大的恐慌涩僻,老刑警劉巖皿伺,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件员辩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸵鸥,警方通過(guò)查閱死者的電腦和手機(jī)奠滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)妒穴,“玉大人宋税,你說(shuō)我怎么就攤上這事∷嫌停” “怎么了杰赛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)矮台。 經(jīng)常有香客問(wèn)我乏屯,道長(zhǎng),這世上最難降的妖魔是什么瘦赫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任辰晕,我火速辦了婚禮,結(jié)果婚禮上确虱,老公的妹妹穿的比我還像新娘含友。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布窘问。 她就那樣靜靜地躺著扎唾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪南缓。 梳的紋絲不亂的頭發(fā)上胸遇,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音汉形,去河邊找鬼纸镊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛概疆,可吹牛的內(nèi)容都是我干的逗威。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岔冀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凯旭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起使套,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罐呼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后侦高,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嫉柴,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年奉呛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了计螺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞧壮,死狀恐怖登馒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咆槽,我是刑警寧澤陈轿,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站罗晕,受9級(jí)特大地震影響济欢,放射性物質(zhì)發(fā)生泄漏赠堵。R本人自食惡果不足惜小渊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茫叭。 院中可真熱鬧酬屉,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谬擦,卻和暖如春切距,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惨远。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工谜悟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人北秽。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓葡幸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贺氓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔚叨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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