<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Echo 是如何支持 MarkDown 的

          共 1834字,需瀏覽 4分鐘

           ·

          2021-08-03 10:29

          這個點其實沒啥技術(shù)含量,就是集成一下開源的 MarkDown 編輯器,按照說明按部就班地走就行了。

          這里我選的 MarkDown 編輯器是 Editor.md。大家可能會碰壁的地方應(yīng)該就是圖片上傳的部分。

          第一步:下載 Editor.md 源碼

          Editor.md 源碼下載地址:https://pandao.github.io/editor.md/index.html

          下載解壓之后將文件夾整個放入 static 目錄下:

          做完這一步各位的第一想法應(yīng)該就是要去配置下我們的攔截器(對除靜態(tài)資源外所有路徑進行攔截),不要攔截 editor-md 這個文件夾下的所有資源。

          另外,editor.md 自帶的 examples 文件夾下的 example.html 文件就是一個示例界面,我們直接將其拷貝到 templates/site 目錄下,并重命名為 discuss-publish.html,作為我們的發(fā)帖界面。然后將里面所有的靜態(tài)資源引用都改成這些引用的絕對路徑,比如:

          第二步:修改 discuss-publish.html 代碼

          下面貼一下核心的前端代碼:


          MarkDown 文本的渲染區(qū)域就是 textarea 標簽包裹的那個區(qū)域

          下圖中框出來的地方填的就是包裹 textarea 的 div 的 id:

          另外,需要注意的是 path 路徑的配置(lib 文件夾的路徑)以及 imageUploadURL(后端上傳圖片的方法地址),這個在上圖中都用黃線標注出來了。

          第三步:編寫后端上傳圖片代碼

          關(guān)于上傳圖片這里,我就沒有做圖床服務(wù)器這種了,直接把圖片上傳到本地了

          編寫后端之前首先要做的就是與前端協(xié)調(diào)好接口格式,那 editor.md 官方說期望我們上傳圖片的服務(wù)返回如下 JSON 格式:

          {
              success : 0 | 1// 0 表示上傳失敗; 1 表示上傳成功
              message : "提示的信息",
              url     : "圖片地址" //上傳成功時才返回
          }

          另外,editor.md 中選擇圖片的控件 id 默認是 editormd-image-file

          下面這段上傳圖片的代碼在 DiscussPostController.java 中:


          圖片上傳路徑 editormdUploadPath 定義在配置文件中(這里如果各位小伙伴需要將項目部署到服務(wù)器上,需要將本地路徑修改為線上路徑):

          圖片上傳四步走:

          • ① 獲取上傳文件的名稱
          • ② 生成圖片存儲路徑
          • ③ 保存圖片到存儲路徑
          • ④ 生成圖片訪問地址

          第四步:配置虛擬路徑映射訪問

          不知道各位會不會遇到這樣的問題,這主要是 IDEA 對服務(wù)器的保護措施導(dǎo)致的:SpringBoot 中上傳圖片到當前目錄下,不能立即顯示,需要重啟服務(wù)器才會顯示上傳的圖片。服務(wù)器不能對外部暴露真實的資源路徑,需要配置虛擬路徑映射訪問。

          在我們的 WebMvcConfig.java 中添加如下方法,對圖片上傳的文件夾 editor-md-upload 配置虛擬路徑映射訪問:


          第五步:解決跨域問題

          上述步驟做完后,可能會遇到報錯跨域問題,需要在 Security 配置中增加一行配置:

          http.headers().frameOptions().sameOrigin();

          第六步:配置 MarkDown 渲染

          至此,我們做完了寫 MarkDown 的工作,接下來做的就是將 MarkDown 渲染成 Html 顯示在頁面上。

          我們需要在帖子詳情頁 dicuss-detail.html 中做一些修改。

          引入 editor.md 的 css 和必要的 js 文件:


          可以看見,上面配置了一些 MarkDown 渲染規(guī)則,圖中標注出來的 md-content 就表示要渲染的區(qū)域,即包裹帖子內(nèi)容的 div 的 id:

          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91在线观看你懂的 | 男女嗯嗯嗯视频网站 | 国产精品色婷婷综合 | 欧美操逼视频免费 | 亚洲黄色网页在线观看 |