springboot+layui 整合百度富文本編輯器ueditor入門使用教程(踩過的坑)

来源:https://www.cnblogs.com/rainbow-1/archive/2022/06/10/16365016.html
-Advertisement-
Play Games

springboot+layui 整合百度富文本編輯器ueditor入門使用教程(踩過的坑) 寫在前面: ​ 富文本編輯器,Multi-function Text Editor, 簡稱 MTE, 是一種可內嵌於瀏覽器,所見即所得的文本編輯器。 ​ UEditor 是由百度「FEX前端研發團隊」開發的 ...


springboot+layui 整合百度富文本編輯器ueditor入門使用教程(踩過的坑)

寫在前面:

​ 富文本編輯器,Multi-function Text Editor, 簡稱 MTE, 是一種可內嵌於瀏覽器,所見即所得的文本編輯器

​ UEditor 是由百度「FEX前端研發團隊」開發的所見即所得富文本web編輯器,具有輕量,可定製,註重用戶體驗等特點,開源基於 MIT協議,允許自由使用和修改代碼。

效果如圖:

01 首先去官網下載ueditor包

官方網址:http://fex.baidu.com/ueditor/#start-start(下載jsp版本就可以)

02 解壓

你會看到這樣的界面:

​ dialogs:彈出對話框對應的資源和JS文件
​ lang:編輯器國際化顯示的文件
​ themes:樣式圖片和樣式文件
​ php/jsp/.net:涉及到伺服器端操作的後臺文件,根據你選擇的不同後臺版本,這裡也會不同,這裡我們選擇jsp
​ third-party:第三方插件(包括代碼高亮,源碼編輯等組件)
​ index.html:源碼文件,用於演示完整的界面
​ ueditor.all.js:開發版代碼合併的結果,目錄下所有文件的打包文件
​ ueditor.all.min.js:ueditor.all.js文件的壓縮版,建議在正式部署時採用
​ ueditor.config.js:編輯器的配置文件,建議和編輯器實例化頁面置於同一目錄
​ ueditor.parse.js:編輯的內容顯示頁面引用,會自動載入表格、列表、代碼高亮等樣式
​ ueditor.all.min.js:ueditor.parse.js文件的壓縮版,建議在內容展示頁正式部署時採用

03 寫個小demo測試一下(layui)

第一步、把解壓後的文件夾整個放到springboot項目中的static目錄下

第二步、放入示例代碼

testLayui_Ueditor.html

<!DOCTYPE html>
<html>
<head>
    <title>layui ueditor</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://www.layuicdn.com/layui-v2.5.5/css/layui.css">
    <script src="https://www.layuicdn.com/layui-v2.5.5/layui.js"></script>
    <style>
        .box {
            width: 60%;
            margin: 60px auto;
        }
    </style>
</head>
<body>

<form class="box" action="">
    <div class="layui-form-item">
        <label class="layui-form-label">標題</label>
        <div class="layui-input-block">
            <input type="text" name="title" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">內容</label>
        <div class="layui-input-block">
            <textarea id="container" name="content"></textarea>
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>
</form>

<!-- 配置文件 -->
<script type="text/javascript" src="../../../../../static/UEditor/ueditor.config.js"></script>
<!-- 編輯器源碼文件 -->
<script type="text/javascript" src="../../../../../static/UEditor/ueditor.all.js"></script>
<script type="text/javascript" src="../../../../../static/UEditor/lang/zh-cn/zh-cn.js"></script>
<script>
    layui.use('form', function(){
        var form = layui.form;
        // 實例化編輯器
        var ue = UE.getEditor('container');
        // var content = ue.getContent();
        // console.log(content)
        //監聽提交
        form.on('submit(formDemo)', function(data){
            console.log(data.field)
            return false;
        });
    });
</script>
</body>
</html>

幾個註意的點:

  1. 註意引入正確的layui.css和layui.js

  2. 引入ueditor需要的js文件,註意引入順序必須為 .config 在前,之後 .all,其他的js文件可以引也可以不引,不引入也會自動調用到,主要是config和all,要按先後順序引入!

  3. 實例化編輯器:

    var ue = UE.getEditor('container'); //此處放的是id

小結

這個文件直接使用瀏覽器打開就是可以看到如下圖的效果的。

但是註意,這裡引入js文件的路徑為完整的路徑

04 整合到springboot項目中

基本步驟和上述靜態整合類似,只不過上面的只需要打開靜態html頁面就可以看到效果了,而下麵我們要做的是把ueditor整合到整個項目里,也就是說要在項目運行之後,載入頁面。

第一步 還是把整個解壓縮的文件放到static目錄下

第二步 整合html頁

  1. 首先引入js文件

這裡有個坑需要註意!

因為Springboot預設的靜態資源路徑為static,我們不需要再添加/static/首碼,所以需要使用正確的方式來引用,否則就會導致404的問題。

也就是說如果我們的路徑中多寫了static,使用相對路徑來獲取js文件,可能會找不到。

例如:../static/UEditor/ueditor.all.js

  • 推薦使用thymeleaf方式(從static的下一個目錄開始寫相對路徑!
<html xmlns:th="http://www.thymeleaf.org" >
<script type="text/javascript" th:src="@{/UEditor/ueditor.config.js}"></script>
<script type="text/javascript" th:src="@{/UEditor/ueditor.all.js}"></script>
  1. 然後把ueditor放在你需要放的地方(一般是textarea

    例如:

<div class="layui-input-block">
    <textarea id='container' name='text' ></textarea>
</div>
  1. 實例化
<script>
    if(document.getElementById('container')!=null){
        var ue = UE.getEditor('container');
    }
    ue.ready(function() {
        ue.setHeight(400);
        var html = ue.getContent();
        console.log("正文部分:"+html)
    })
</script>

最關鍵的一步

!!!!!!

註意看

如果按上面的步驟跑了一遍,會發現還是會失敗,因為靜態載入和運行項目之後的載入,ueditor的運行狀態是不一樣的,下麵我介紹一下ueditor大概是怎麼跑起來的。

首先 當我們靜態載入這個插件的時候,會發現路徑大概是這個樣子的:也就是我們可以看到localhost開始一直後面跟的是項目的完整路徑!

![image-20220610232118981](springboot+layui 整合百度富文本編輯器ueditor使用教程(踩過的坑)/image-20220610232118981.png)

那麼這個插件我們只引入了兩個js文件,那其他的文件是怎麼運行的呢?

我們可以打開其中的 config.js 文件一探究竟!

所以我們不難發現,這個插件大概是這麼運行的:

  1. 載入兩個引入的js文件,通過js文件獲取其他文件的訪問路徑,例如jsp文件夾、css文件等等。
  2. 通過路徑訪問載入其他文件,完成整個插件的部署配置!

下麵我們打開jsp文件夾看看:

雖然我沒太看懂這些是啥,但是我大概可以猜到,這個文件可能和我們上面分析的調用其他資源有關係

下麵我們來驗證一下這個猜想,我們還是用靜態的方式先看一下:

F12打開調試可以看到

所以我們大致可以確定,其他文件需要通過這個jsp文件完成調度。


好了,講完了上面的過程,下麵我們分析一下,靜態的和動態的有什麼區別,也就是項目跑沒跑到底為什麼會影響ueditor的載入呢?

其實道理很簡單,問題就出在訪問的路徑上!

靜態的方式,訪問路徑是固定的本地路徑,所以不存在配置問題,但是當你項目跑起來了,比如springboot項目是存在項目的路徑的,而這個項目的路徑,如果你不去告訴ueditor,它是不清楚在哪裡的,所以也就沒辦法去用jsp調用其他資源了!

下麵兩張圖告訴你區別:可以看到同樣的 jsp?,但是前面是不一樣的,這也就導致瞭如果不去配置前面的路徑,ueditor的其他資源必然是找不到的!

  1. 靜態頁面

http://localhost:63342/science/static/UEditor/jsp/controller.jsp?action=config&&noCache=1654874890533

  1. 項目跑起來之後的訪問路徑

http://169.254.208.81:8008/UEditor/jsp/controller.jsp?action=config&&noCache=1654875217963

ueditor為我們提供了一種很方便的方式來配置這個路徑,只需要在你引用了插件的html文件的最開頭加上這樣一句話:

<script type="text/javascript">
    window.UEDITOR_HOME_URL = "http://169.254.208.81:8008/UEditor/";
</script>

之後再次運行項目可以看到ueditor正常顯示!好了,分享完畢,希望對大家有幫助!

好看請贊,養成習慣!

本文來自博客園,作者:靠譜楊,轉載請註明原文鏈接:https://www.cnblogs.com/rainbow-1/p/16365016.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 由於我使用ubuntu20.04的火狐瀏覽器時,總是播放不了視頻。說是要下載Flash,但是我順著網址進去,發現並沒有linux版本的(也可能是我沒找到而已?)。於是一直放著沒管,看不了就看不了,真要看我就用筆記本的win10看好了。但是偶爾看到 ...
  • 本文參考書:操作系統真像還原 什麼是malloc? malloc 是用戶態申請記憶體時使用的函數。 malloc在哪裡申請? 堆中。 什麼是堆? 程式運行過程中需要申請額外的記憶體都會在堆中分配,堆中的記憶體分為幾個規格類型的塊用鏈表保存,程式需要記憶體就分配一個大於等於所需記憶體大小的塊。如果一個規格的塊用 ...
  • 資料庫概述 資料庫的概念 名稱 簡稱 資料庫 DataBase(DB) 資料庫管理系統 DataBase Management System(DBMS) SQL Structured Query Language(SQL) MySQL的啟動、停止 啟動: net start mysql80 停止: ...
  • 近十年來,中國基礎軟體發展勢頭迅猛,市場前景看高,越來越多的企業也正在進行基礎軟體升級。那中國基礎軟體行業目前在國際市場上有什麼優勢,面臨哪些困境,以及未來基礎軟體行業會如何發展呢?騰訊雲資料庫邀請沙利文中國高級分析師胡竣傑、華雲中盛資料庫事業部總經理楊光、中軟國際資料庫業務總監範利軍及騰訊雲資料庫 ...
  • 不僅 SQL,對所有的編程語言來說,函數都起著至關重要的作用。函數就像是編程語言的“道具箱”,每種編程語言都準備了非常多的函數。 使用函數,我們可以實現計算、字元串操作、日期計算等各種各樣的運算。 本文重點 根據用途,函數可以大致分為算術函數、字元串函數、日期函數、轉換函聚合函數。 函數的種類很多, ...
  • 導讀: 大家好,今天主要分享數據分析平臺的平臺演進以及我們在上面沉澱的一些數據分析方法是如何應用的。 具體分以下四部分: Part1:主要介紹下我所在的部門,數據平臺部主要是做什麼的,大概涉及到哪些業務,在整個數據流程當中數據平臺部負責哪些東西; Part2:既然我們講數據分析平臺,那麼數據分析是什 ...
  • 前幾篇我們一起學習了 SQL 如何對錶進行創建、更新和刪除操作、SQL SELECT WHERE 語句如何指定一個或多個查詢條件 和 SQL 如何插入、刪除和更新數據 等資料庫的基本操作方法。 從本文開始,我們將會在這些基本方法的基礎上,學習一些實際應用中的方法。 本文將以此前學過的 SELECT ...
  • 華為運動健康服務(HUAWEI Health Kit)為三方生態應用提供了REST API介面,通過其介面可訪問資料庫,為用戶提供運動健康類數據服務。在實際的集成過程中,開發者們可能會遇到各種問題,這裡我們將典型問題進行分享和總結,希望為其他遇到類似問題的開發者提供參考。 1. 註冊訂閱通知能力後, ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...