搜尋
首頁web前端Layui教程改造傳統jquery擴展為layui模組方法介紹

改造傳統jquery擴展為layui模組方法介紹

Layui中內建了jquery

#只有你所使用的模組有依賴到它,它才會載入,並且如果你的頁面已經script引入了jquery,它並不會重複載入。內建的jquery模組去除了全局的$和jQuery。

這是layui文件中的描述,它內建了jq,但是去除了全域的$和jQuery對象,也就是在window的全域對外介面被刪除了。

拖曳元件的實作
假設siam.js是一個擴展,裡面提供了一個類似這樣的方法

<div id=&#39;test&#39;>原始内容</div>

<script src="https://cdn.bootcss.com/jquery/3.4.0/jquery.min.js"></script>
<script>
$.fn.siam = function(params){
    var dom = this;
    dom.html(params);
};


setTimeout(function(){
    $("#test").siam(&#39;这是新内容&#39;);
},800);
</script>
// 延迟执行完之后会把div内容变为 > 这是新内容

這是一些傳統jq擴充功能的實作原理,對於你所呼叫的dom,它會繼續處理操作,如本文開始說的,我使用的是拖曳元件,擴充功能會透過這樣子的對外介面 將dom處理為可以拖曳的,並且帶有其他事件的元素。

問題衝突

以上兩點是問題的基礎補充,在layui中,去除了全局的$和Jquery對象,預設擴展中有以下程式碼

;(function($, window, document, undefined){
    .....扩展内容
})(window.jQuery || window.Zepto, window, document);

在最後面,它依賴載入window.Jquery物件,window物件,document物件

傳遞到上面的閉包中
對應$, window, document , undefined(因為沒有傳遞所以也一樣)

所以導致閉包中使用的$是沒有值的,一加載這個擴展就報錯

$ is not defined
或者
Typeerror Cannot Read Property fn of undefined

測試過單獨引入jq檔也解決不了問題,(我使用的模板載入順序的原因,先載入了layui內建的jq)

#layui自訂模組

##這是官網的介紹

layui.code
/**
  扩展一个test模块
**/

layui.define(function(exports){ //提示:模块也可以依赖其它模块,如:layui.define(&#39;layer&#39;, callback);
  var obj = {
    hello: function(str){
      alert(&#39;Hello &#39;+ (str||&#39;mymod&#39;));
    }
  };

  //输出test接口
  exports(&#39;mymod&#39;, obj);
});

我們可以使用layui自訂模組的方法,將layui的其他模組傳遞進來,使擴充能操作layui中的jq物件

layui.define(["jquery"], function (exports) {
    var $ = layui.jquery;
    // 把第一行的 ;(function($, window, document, undefined){ 换成以上
    ...扩展内容

    // 把最后一行的换成以下
    var obj = {
    };
    exports("自定义模块名", obj);
});

#使用

 layui.use([&#39;form&#39;,&#39;jquery&#39;,&#39;自定义模块名&#39;], function (admin, form) {
     var $ = layui.jquery;
     var obj = layui.自定义模块名;

     // 正常使用 即可  比如我的
     $("#test").desta(&#39;open&#39;);
});

注意,此篇文章並不是通用方法,只是簡單闡述了我解決這個問題的思路和方案,可以參考學習。

更多layui框架知識請關注

layui框架教程

以上是改造傳統jquery擴展為layui模組方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:siammm。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。