>웹 프론트엔드 >JS 튜토리얼 >require.js의 모듈식 개발

require.js의 모듈식 개발

php中世界最好的语言
php中世界最好的语言원래의
2018-03-19 17:06:091415검색

이번에는 require.js의 modular개발에 대해 알려드리겠습니다. require.js의 모듈러 개발 시 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

1. Require.js 및 AMD

Require.js: 매우 작은 JavaScript 모듈 로딩 프레임워크이자 AMD 사양의 최고의 구현자 중 하나입니다.

AMD(비동기 모듈 정의): 비동기 모듈 정의 사양(AMD)은 모듈 및 모듈 종속성을 비동기적으로 로드할 수 있도록 모듈 정의 규칙을 설정합니다. 이는 브라우저의 비동기식 모듈 로드와 일치합니다(브라우저에 의한 모듈의 동기식 로드는 성능, 유용성, 디버깅 및 도메인 간 액세스와 같은 문제를 야기합니다).

// AMD规范// 第一个参数,id,是个字符串。它指的是定义中模块的名字,这个参数是可选的。如果没有提供该参数,模块的名字应该默认为模块加载器请求的指定脚本的名字。如果提供了该参数,模块名必须是“顶级”的和绝对的(不允许相对名字)。// 第二个参数,dependencies,是个定义中模块所依赖模块的数组。依赖模块必须根据模块的工厂方法优先级执行,并且执行的结果应该按照依赖数组中的位置顺序以参数的形式传入(定义中模块的)工厂方法中。// 第三个参数,factory,为模块初始化要执行的函数或对象。如果为函数,它应该只被执行一次。如果是对象,此对象应该为模块的输出值。define(id?, dependencies?, factory);

2. Require.js는

1을 사용합니다. 디렉토리 구조

예시에서는 중국어 병음 변환 플러그인을 사용했습니다. (GitHub 주소: https:// github.com/sxei/pinyinjs/) 이 플러그인은 사용하기 매우 쉽지만 중국어의 다성 문자로 인해 (Jia Baoyu=> "gu bao yu")

와 같은 색다른 병음이 자주 나타납니다.
  ├─scripts
     │─plus
        ├─pinyin
        │ ├─dist
        │ │  ├─pinyin_dict_firstletter.js
        │ │  ├─pinyin_dict_notone.js
        │ │  ├─pinyin_dict_polyphone.js
        │ │  └─pinyin_dict_withtone.js
        │ └─pinyinUtil.js
        ├─jquery.js
        ├─plusMain.js
        ├─require.js
        └─test.js

2, require.js

<script src="/scripts/plus/require.js"></script>

3을 소개합니다. 마운트 모듈

  [1] 부분 로딩

//test.jsdefine(function () {    return {
        add: function (a, b) {
            alert("传参没用上,哈哈");
        }
    }
});//页面代码$(function () {
    require(["/scripts/plus/test.js"], function (h) {
        h.add(1, 2);
    );
})

  [2] 글로벌 로딩

//plusMain.jsrequire.config({
    paths: {        jquery: "jquery",
    }
});//页面引用<script src="/scripts/plus/require.js" data-main="/scripts/plus/plusMain" defer async="true></script>

이런 식으로 로드할 때 "/scripts/plus"가 기본적으로 루트 디렉터리가 되며, baseUrl 매개변수를 사용하여 루트 디렉터리를 재설정할 수 있습니다.

//效果相同require.config({
    baseUrl: "/scripts/plus",
    paths: {        jquery: "jquery"
    }
});

  원격 파일이나 로컬 파일을 동시에 참조할 수도 있습니다. 원격 파일 로드에 실패하면 로컬 파일이 로드됩니다.

require.config({
    paths: {        jquery: ["http://libs.baidu.com/jquery/2.0.3/jquery", "jquery"],
    }
});

  require加载的模块一般都需要符合AMD规范即使用define를 사용하여 모듈을 선언하지만 때로는 AMD 표준이 아닌 js를 로드해야 할 때도 있습니다. 이때 다른 기능인 shim을 사용해야 합니다.

  shim심은 "패드"로 직접 번역되는데 실제로는 이런 의미를 가지고 있습니다.

 하나는 모듈의 종속성을 구성하는 것입니다. 예를 들어, 병음 플러그인 pinyinUtil.js는 일반적인 변환을 위해 사전에 의존해야 합니다.

 1 require.config({ 2     paths: { 3         jquery: "jquery", 4         pinyin_dict_firstletter: "pinyin/dict/pinyin_dict_firstletter", 5         pinyin_dict_withtone: "pinyin/dict/pinyin_dict_withtone", 6         pinyin: "pinyin/pinyinUtil" 7     }, 8     shim: { 9         pinyin: {10             deps: ["pinyin_dict_firstletter", "pinyin_dict_withtone"],// 依赖模块集合11         }12     }13 });14 15 //可以简写成16 shim: {17     pinyin: ["pinyin_dict_firstletter", "pinyin_dict_withtone"]18 }

 CSS 파일을 사용할 수도 있습니다

require.config({
    paths: {
        select2: "select2/select2.min"
    },
    shim: {
        select2: ["/scripts/plus/select2/select2.min.css"]
    },
});

 다른 하나는 비AMD 모듈 출력을 로드하고 비표준 AMD 모듈을 사용 가능한 모듈에 "패딩"하는 것입니다.

// test.js(function () {    var NGY = {
        Hi: function() {
            alert("跨越过去之后");
        }
    }
    window.NGY = NGY;
})();//配置require.config({
    paths: {
        ngy: "test"
    },
    shim: {
        ngy: { exports: "NGY" }
    },
});//使用,不需要声明变量就可以直接使用require(["ngy"], function () {
    NGY.Hi();
});

4. require

require(["jquery", "pinyin"], function ($, pinyin) {
    $("span").html("谁最可爱?");    var dl = pinyin.getPinyin('当然是我');
});

사용하세요. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 참고하세요. !

추천 자료:

React에는 어떤 클래스 정의 구성요소가 있나요?

navigator.clipboard 브라우저에서 기본 클립보드를 만드는 방법

위 내용은 require.js의 모듈식 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.