vue引入ueditor及node后臺(tái)配置詳解
最近公司的某個(gè)客戶要用上我們公司的產(chǎn)品,他的后臺(tái)管理里的富文本編輯器要求有點(diǎn)多,開(kāi)始打算用Quill,但是發(fā)現(xiàn)Quill根本滿足不了他的需求。在調(diào)研了市面上的富文本編輯器后,最后似乎只剩了百度的ueditor。雖然很丑~~~,不過(guò)沒(méi)關(guān)系,政府網(wǎng)站和這種效果更搭:-D 我是不是說(shuō)了什么(逃
vue引入ueditor
步驟
- 百度ueditor下載,隨便哪個(gè)版本就好(本文章以php版為例),不需要特別全面功能的可以考慮下UM嘍
- 將對(duì)應(yīng)的文件夾放到static中
- 修改前端vue部分引用的ueditor.confg.js,設(shè)置路徑window.UEDITOR_HOME_URL = "/static/utf8-php/"
window.UEDITOR_HOME_URL = "/static/utf8-php/"
var URL = window.UEDITOR_HOME_URL || getUEBasePath();
/**
* 配置項(xiàng)主體。注意,此處所有涉及到路徑的配置別遺漏URL變量。
*/
window.UEDITOR_CONFIG = {
//為編輯器實(shí)例添加一個(gè)路徑,這個(gè)不能被注釋
UEDITOR_HOME_URL: URL
// 服務(wù)器統(tǒng)一請(qǐng)求接口路徑
, serverUrl: "http://localhost:3000/ueditor/ue"
// ............ 下面忽略................
編寫vue文件,我已經(jīng)把static配置到webpack的路徑里了,自己可以相應(yīng)更改,ueditor中的各項(xiàng)方法可以在自己下載的百度ueditor包的index.html中找。
<template>
<div class="hello">
<script id="editor" type="text/plain"></script>
<button @click="show">你敢點(diǎn)一下嗎?</button>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data () {
return {
editor: null
}
},
methods: {
show () {
console.log(this.editor.getContent())
}
},
mounted () {
require('static/utf8-php/ueditor.config.js')
require('static/utf8-php/ueditor.all.min.js')
require('static/utf8-php/lang/zh-cn/zh-cn.js')
require('static/utf8-php/ueditor.parse.min.js')
this.editor = window.UE.getEditor('editor')
},
destroyed () {
this.editor.destroy()
}
}
</script>
注意事項(xiàng)
- 在步驟3中的路徑一定要有最后一個(gè)"/"
- 步驟3中的serverUrl寫成對(duì)應(yīng)的服務(wù)端地址
node后端處理
express 實(shí)現(xiàn)
網(wǎng)上有人已經(jīng)實(shí)現(xiàn)了express版的,使用express的有福了。不過(guò)我直接用他的是不能直接用的,在瀏覽器中報(bào)": unexcepected ",我將他的代碼改了一下,不讓它在返回配置是重定向,而是直接返回一個(gè)jsonp,jsonp內(nèi)容設(shè)置為百度的ueditor包中的php文件下的config.json,記得用正則表達(dá)式或者直接用手把注釋去掉,json是沒(méi)有注釋的。
這時(shí)你可能發(fā)現(xiàn)不報(bào)錯(cuò)了,但是圖片上傳會(huì)錯(cuò)誤,報(bào)404。其實(shí)圖片已經(jīng)上傳成功了,只是沒(méi)有正確的加載,因?yàn)榉祷氐穆窂街皇锹窂?,不是完整的url,就會(huì)請(qǐng)求到前端服務(wù)域下。(例如"http://localhost:8080/**")。此時(shí)修改config.json中"imageUrlPrefix": "http://localhost:3000",就可以將圖片路徑補(bǔ)充完整??缬騿?wèn)題自己解決哈-----
- res.jsonp(config.json)
- 給config.json的imageUrlPrefix加后端域
koa實(shí)現(xiàn)
這時(shí)個(gè)比較精巧的庫(kù),而且將在v3中去掉了generator寫法,generator現(xiàn)在已經(jīng)漸漸不被支持,所以使用async寫法吧。我主要用了await-busboy這個(gè)庫(kù),實(shí)現(xiàn)文件處理。
實(shí)現(xiàn)判斷
const ActionType = ctx.query.action
// 當(dāng)ActionType為config時(shí)返回與express中一樣的json
// 當(dāng)為uploadimage或uploadfile時(shí)處理
處理上傳
const parse = require('await-busboy')
const parts = parse(ctx)
let part,
stream,
tmp_name,
file_path,
filename
while ((part = await parts)) {
if (part.length) {
// 此處解析到form的fields
console.log({ key: part[0], value: part[1] })
} else {
// 此處解析到文件并以可讀流形式返回,通過(guò)nodejs官方API存儲(chǔ)
if(ActionType === 'uploadimage' && img_type.indexOf(path.extname(part.filename)) >= 0 ){
filename = 'pic_'+ (new Date()).getTime() + '_' + part.filename
file_path = path.join(img_path, filename)
} else if (ActionType === 'uploadfile'){
filename = 'file_'+(new Date()).getTime()+'_'+part.filename
file_path = path.join(files_path, filename)
}
stream = fs.createWriteStream(path.join(static_path,file_path))
part.pipe(stream)
tmp_name = part.filename
}
// 返回json要引用koa-jsonp哦~~
到這大概可以了,自己去試一下吧~~希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue?+?SpringBoot?實(shí)現(xiàn)文件的斷點(diǎn)上傳、秒傳存儲(chǔ)到Minio的操作方法
這篇文章主要介紹了Vue?+?SpringBoot?實(shí)現(xiàn)文件的斷點(diǎn)上傳、秒傳存儲(chǔ)到Minio的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-06-06
el-input限制輸入正整數(shù)的兩種實(shí)現(xiàn)方式
el-input框是Element UI庫(kù)中的一個(gè)輸入框組件,用于接收用戶的輸入,這篇文章主要介紹了el-input限制輸入正整數(shù),需要的朋友可以參考下2024-02-02
Vue子組件向父組件通信與父組件調(diào)用子組件中的方法
這篇文章主要介紹了Vue子組件向父組件通信與父組件調(diào)用子組件中的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
vue里的axios如何獲取本地json數(shù)據(jù)
這篇文章主要介紹了vue里的axios如何獲取本地json數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue中使一個(gè)div鋪滿全屏的實(shí)現(xiàn)
最近在項(xiàng)目開(kāi)發(fā)中,就遇到了這個(gè)問(wèn)題,Vue中如何使一個(gè)div鋪滿全屏,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
ant?design?vue的table取消自帶分頁(yè)問(wèn)題
這篇文章主要介紹了ant?design?vue的table取消自帶分頁(yè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

