Vue.js結(jié)合Ueditor富文本編輯器的實(shí)例代碼
在前端開(kāi)發(fā)的項(xiàng)目中。難免會(huì)遇到需要在頁(yè)面上集成一個(gè)富文本編輯器。
前一段時(shí)間公司Vue.js項(xiàng)目需要使用UEditor富文本編輯器,在百度上搜索一圈沒(méi)有發(fā)現(xiàn)詳細(xì)的說(shuō)明,決定自己嘗試,忙活了一天終于搞定了。
1. 總體思路
1.1 模塊化
vue的很大的一個(gè)優(yōu)勢(shì)在于模塊化,我們可以通過(guò)模塊化實(shí)現(xiàn)頁(yè)面和邏輯的復(fù)用。所以可以把Ueditor重新封裝成一個(gè).vue的模板文件。其他組件通過(guò)引入這個(gè)模板實(shí)現(xiàn)代碼復(fù)用。
1.2 數(shù)據(jù)傳輸
首先父組件需要設(shè)置編輯器的長(zhǎng)度、寬度、初始文本,這些數(shù)據(jù)可以通過(guò)props來(lái)傳遞。編輯器中的文本變化可以通過(guò)vue自定義事件向父組件傳遞。
2. 具體實(shí)現(xiàn)步驟
2.1 引入關(guān)鍵的JS以及CSS文件
將以下文件全部拷貝到項(xiàng)目中
2.2 配置Ueditor.config.js
首先配置URL參數(shù),我們需要將這個(gè)路徑指向剛才拷貝的文件的更目錄,注意這里最好使用相對(duì)路勁。
var URL = window.UEDITOR_HOME_URL || '/static/ueditor/';
然后是默認(rèn)寬度高度的設(shè)置
,initialFrameWidth:null // null表示寬度自動(dòng) ,initialFrameHeight:320
其他功能的配置可以在官方文檔查看
2.3 創(chuàng)建編輯器模板
我們需要在編輯器模板中import Ueditor核心JS庫(kù),并添加contentChange回調(diào)函數(shù)就大功告成了。
之所以使用import語(yǔ)法來(lái)引入核心JS庫(kù)是因?yàn)檫@樣更符合ES6模塊化的規(guī)范,我看到網(wǎng)上有人建議在main.js中引入JS,但是過(guò)早地引入JS可能導(dǎo)致頁(yè)面首次加載緩慢。
<template> <div ref="editor"></div> </template> <script> /* eslint-disable */ import '../../../assets/js/ueditor/ueditor.config'; import '../../../assets/js/ueditor/ueditor.all'; import '../../../assets/js/ueditor/lang/zh-cn/zh-cn'; import { generateRandonInteger } from '../../../vuex/utils'; export default { data() { return { id: generateRandonInteger(100000) + 'ueditorId', }; }, props: { value: { type: String, default: null, }, config: { type: Object, default: {}, } }, watch: { value: function value(val, oldVal) { this.editor = UE.getEditor(this.id, this.config); if (val !== null) { this.editor.setContent(val); } }, }, mounted() { this.$nextTick(function f1() { // 保證 this.$el 已經(jīng)插入文檔 this.$refs.editor.id = this.id; this.editor = UE.getEditor(this.id, this.config); this.editor.ready(function f2() { this.editor.setContent(this.value); this.editor.addListener("contentChange", function () { const wordCount = this.editor.getContentLength(true); const content = this.editor.getContent(); const plainTxt = this.editor.getPlainTxt(); this.$emit('input', { wordCount: wordCount, content: content, plainTxt: plainTxt }); }.bind(this)); this.$emit('ready', this.editor); }.bind(this)); }); }, }; </script> <style> body{ background-color:#ff0000; } </style>
3. 編輯器的使用
使用編輯器模板的時(shí)候我需要通過(guò)props傳入config以及初始文本value。
<template xmlns:v-on="http://www.w3.org/1999/xhtml"> <div class="edit-area"> <ueditor v-bind:value=defaultMsg v-bind:config=config v-on:input="input" v-on:ready="ready"></ueditor> </div> </template> <script> import ueditor from './ueditor.vue'; export default { components: { ueditor, }, data() { return { defaultMsg: '初始文本', config: { initialFrameWidth: null, initialFrameHeight: 320, }, }; }, }; </script>
如果需要讓Ueditor上傳圖片的話,還需要在后臺(tái)配置一個(gè)接口。這部分還沒(méi)有時(shí)間研究,等過(guò)幾天補(bǔ)上
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js 公式編輯器 - 自定義匹配規(guī)則 - 帶提示下拉框 - 動(dòng)態(tài)獲取光標(biāo)像素坐標(biāo)
- 不到200行 JavaScript 代碼實(shí)現(xiàn)富文本編輯器的方法
- 使用JavaScript實(shí)現(xiàn)表格編輯器(實(shí)例講解)
- JSP實(shí)用教程之簡(jiǎn)易頁(yè)面編輯器的實(shí)現(xiàn)方法(附源碼)
- JS模仿編輯器實(shí)時(shí)改變文本框?qū)挾群透叨却笮〉姆椒?/a>
- 分享9個(gè)最好用的JavaScript開(kāi)發(fā)工具和代碼編輯器
- node.js集成百度UE編輯器
- Javascript實(shí)現(xiàn)簡(jiǎn)單的富文本編輯器附演示
- javascript獲取ckeditor編輯器的值(實(shí)現(xiàn)代碼)
- 4個(gè)頂級(jí)JavaScript高級(jí)文本編輯器
相關(guān)文章
element滾動(dòng)條組件el-scrollbar的使用詳解
本文主要介紹了element滾動(dòng)條組件el-scrollbar的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Vue數(shù)據(jù)雙向綁定底層實(shí)現(xiàn)原理
這篇文章主要為大家詳細(xì)介紹了Vue數(shù)據(jù)雙向綁定底層實(shí)現(xiàn)原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Vue學(xué)習(xí)筆記進(jìn)階篇之函數(shù)化組件解析
本篇文章主要介紹了Vue學(xué)習(xí)筆記進(jìn)階篇之函數(shù)化組件探究,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題匯總
這篇文章主要介紹了Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題匯總,在這里我整理了部分Vue Router路由無(wú)法跳轉(zhuǎn)問(wèn)題,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09vue實(shí)現(xiàn)自定義樹(shù)形組件的示例代碼
這篇文章主要介紹了vue實(shí)現(xiàn)自定義樹(shù)形組件的示例代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08vue項(xiàng)目中vue-i18n和element-ui國(guó)際化開(kāi)發(fā)實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了vue項(xiàng)目中vue-i18n和element-ui國(guó)際化開(kāi)發(fā)實(shí)現(xiàn)過(guò)程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04vue項(xiàng)目在打包時(shí),如何去掉所有的console.log輸出
這篇文章主要介紹了vue項(xiàng)目在打包時(shí),如何去掉所有的console.log輸出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04解決vue無(wú)法設(shè)置滾動(dòng)位置的問(wèn)題
這篇文章主要介紹了解決vue無(wú)法設(shè)置滾動(dòng)位置的問(wèn)題 ,需要的朋友可以參考下2018-10-10