> 웹 프론트엔드 > 레이이 튜토리얼 > 기존 jquery 확장을layui 모듈로 변환하는 방법 소개

기존 jquery 확장을layui 모듈로 변환하는 방법 소개

풀어 주다: 2019-11-23 13:54:06
앞으로
2766명이 탐색했습니다.

기존 jquery 확장을layui 모듈로 변환하는 방법 소개

Layui에는 jquery가 내장되어 있습니다

사용 중인 모듈이 이에 의존하는 경우에만 로드되며, 페이지에 이미 스크립트를 통해 jquery가 도입된 경우에는 반복적으로 로드되지 않습니다. 내장된 jquery 모듈은 전역 $ 및 jQuery를 제거합니다.

layui 문서에 나온 설명입니다. jq가 내장되어 있지만 전역 $ 및 jQuery 개체가 제거됩니다. 즉, 창의 전역 외부 인터페이스가 삭제됩니다.

드래그 앤 드롭 구성요소 구현
siam.js가 다음과 같은 메소드를 제공하는 확장이라고 가정합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<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을 처리하고 이러한 외부 인터페이스를 통해 다른 이벤트를 갖습니다.

문제 충돌

layui에서 전역 $ 및 Jquery 개체가 제거되는 기본 보완 사항은 다음과 같습니다. 로딩 창에서 Jquery 객체, window 객체, document 객체

는 $, window, document, undefound에 해당하는 위의 클로저

로 전달됩니다(전달되지 않기 때문에 동일함)


따라서 클로저에 사용된 $는 값이 없습니다. 이 확장 프로그램을 로드할 때 오류가 보고됩니다

1

2

3

;(function($, window, document, undefined){

    .....扩展内容

})(window.jQuery || window.Zepto, window, document);

로그인 후 복사

jq 파일을 도입하는 것만으로는 문제를 해결할 수 없다는 것을 테스트했습니다(제가 사용하는 템플릿 로드 순서는layui에 내장된 jq를 먼저 로드하기 위한 것입니다)

layui custom module공식 홈페이지에서 소개한 내용입니다

1

2

3

$ is not defined

或者

Typeerror Cannot Read Property fn of undefined

로그인 후 복사

layui custom module 메소드를 사용하여 Layui의 다른 모듈을 넘겨주면 확장 프로그램이layui에서 jq 객체를 동작시킬 수 있습니다

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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);

});

로그인 후 복사

Use

1

2

3

4

5

6

7

8

9

10

layui.define(["jquery"], function (exports) {

    var $ = layui.jquery;

    // 把第一行的 ;(function($, window, document, undefined){ 换成以上

    ...扩展内容

 

    // 把最后一行的换成以下

    var obj = {

    };

    exports("自定义模块名", obj);

});

로그인 후 복사
주의하세요, 이 글은 일반적인 방법이 아니며, 참고하고 배울 수 있는 이 문제를 해결하기 위한 나의 아이디어와 계획을 간략하게 설명하는 것입니다.

layui 프레임워크에 대한 자세한 내용은

layui 프레임워크 튜토리얼

을 참조하세요.

위 내용은 기존 jquery 확장을layui 모듈로 변환하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:siammm
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿