Heim > Web-Frontend > Layui-Tutorial > Einführung in die Methode zur Umwandlung traditioneller JQuery-Erweiterungen in Laui-Module

Einführung in die Methode zur Umwandlung traditioneller JQuery-Erweiterungen in Laui-Module

Freigeben: 2019-11-23 13:54:06
nach vorne
2759 Leute haben es durchsucht

Einführung in die Methode zur Umwandlung traditioneller JQuery-Erweiterungen in Laui-Module

Layui verfügt über eine integrierte JQuery

Es wird nur geladen, wenn das von Ihnen verwendete Modul davon abhängt . und wenn Ihre Seite JQuery per Skript eingeführt hat, wird sie nicht wiederholt geladen. Das integrierte JQuery-Modul entfernt das globale $ und jQuery.

Dies ist die Beschreibung im Laui-Dokument. Es verfügt über integriertes jq, aber die globalen $- und jQuery-Objekte werden entfernt, d. h. die globale externe Schnittstelle im Fenster wird gelöscht.

Implementierung von Drag-and-Drop-Komponenten
Angenommen, siam.js ist eine Erweiterung, die eine Methode wie diese bereitstellt

<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内容变为 > 这是新内容
Nach dem Login kopieren

Das Dies ist das Implementierungsprinzip einiger herkömmlicher jq-Erweiterungen. Für das von Ihnen aufgerufene DOM wird die Verarbeitung des DOM fortgesetzt. Wie am Anfang dieses Artikels erwähnt über eine solche externe Schnittstelle von und mit Elementen anderer Ereignisse ziehbar sein.

Problemkonflikt

Die beiden oben genannten Punkte sind die grundlegenden Ergänzungen zum Problem. In Laui werden die globalen $- und Jquery-Objekte entfernt Die Standarderweiterung Am Ende befindet sich der folgende Code

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

, der darauf basiert, das window.Jquery-Objekt, das Fensterobjekt und das Dokumentobjekt

zu laden und an den entsprechenden Abschluss
zu übergeben zu $, window, document , undefiniert (dasselbe, weil es nicht übergeben wird)

Das im Abschluss verwendete $ hat also keinen Wert und es wird ein Fehler gemeldet, sobald die Erweiterung geladen wird

$ is not defined
或者
Typeerror Cannot Read Property fn of undefined
Nach dem Login kopieren

Ich habe es getestet und die JQ-Datei separat importiert und das Problem ist gelöst. Kein Problem, (aufgrund der von mir verwendeten Vorlagenladereihenfolge wurde das integrierte JQ von Laui zuerst geladen)

Layui-benutzerdefiniertes Modul

Dies ist eine Einführung von der offiziellen Website

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);
});
Nach dem Login kopieren

Wir können die Methode des benutzerdefinierten Laui-Moduls verwenden, um andere Module zu übergeben von Laui, damit die Erweiterung das JQ-Objekt in Laui bedienen kann

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

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

Verwenden Sie

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

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

Beachten Sie, dass dieser Artikel keine universelle Methode ist. Es erklärt nur kurz meine Ideen und Lösungen zur Lösung dieses Problems, Sie können es zum Studium heranziehen.

Weitere Informationen zum Laui-Framework finden Sie im Layui-Framework-Tutorial.

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zur Umwandlung traditioneller JQuery-Erweiterungen in Laui-Module. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:siammm
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage