最近自己在專案中使用到了 simplemde 這款 markdown 編輯器,實際使用過程中遇到了部分問題,記錄在這裡,希望對遇到同樣問題的人有所幫助。peace & love。
- 問題 1:上傳圖片功能缺失。simplemde 這款 Markdown 編輯器沒有上傳圖片功能
- 問題 2:圖示不能正常顯示。simplemde 這款編輯器使用的是老版本的 fontAwesome 的圖示樣式(4. 的版本),會存在和新版本(5.)樣式不相容,無法正常顯示的問題。
針對問題 1, simplemde 的作者明確表示不做圖片上傳功能,因為 Simplemde 只關注前端相關功能,而圖片上傳需要和後端互動。
還好在 issue 裡面找到了一個能用上傳圖片的方法,InlineAttachment,這個庫能夠很方便的在 textarea 中貼上圖片實現上傳效果,首先引入 inline-attachment.min.js 和 codemirror-4.inline-attachment.min.js 兩個檔案 (具體的可以參考 InlineAttachment 官方文件 & Demo),具體參考配置如下:
var inlineAttachmentConfig = {
uploadUrl: 'upload_image', //後端上傳圖片地址
uploadFieldName: 'upload_file', //上傳的檔名
jsonFieldName: 'file_path', //返回結果中圖片地址對應的欄位名稱
progressText: '![圖片上傳中...]()', //上傳過程中使用者看到的文案
errorText: '圖片上傳失敗',
urlText:'![圖片描述]({filename})', //上傳成功後插入編輯器中的文案,{filename} 會被替換成圖片地址
extraHeaders: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
};
$(document).ready(function() {
var editor = new SimpleMDE({
element: $("#simple_editor")[0],
autoDownloadFontAwesome: false,
status: false,
autofocus: true,
placeholder: '請使用 Markdown 編寫',
status: false,
styleSelectedText: false,
spellChecker: false,
});
//這裡是 inlineAttachment 的呼叫配置
inlineAttachment.editors.codemirror4.attach(editor.codemirror,\
inlineAttachmentConfig);\
});
針對問題 2,自己想過降級 fontAwesome 的版本,但是感覺不太好,看了下 simplemde 裡面的配置,是可以配置對應的 icon 的 className 的,所以就將沒有辦法正常顯示的 標題 和 圖片上傳圖示給改寫了。
改寫時主要要注意看下文件,文件中都有列出 action 對應的具體方法名稱,自己對應著填充進去就好了。
toolbar: [
{name:"heading", className:'fa fa-heading', action:SimpleMDE.toggleHeadingSmaller},{name:"image", className: 'fa fa-images', action: SimpleMDE.drawImage}
],
本作品採用《CC 協議》,轉載必須註明作者和本文連結