Require.js/AMD Modular Loading
개발자는 스크립트 로더를 사용하여 혼란스럽고 풍부한 스크립트 애플리케이션을 보다 질서있게 만들고 싶어하며 Require.js가 그러한 옵션입니다. Require.js는 AMD 기술과 자동으로 작동하여 가장 복잡한 스크립트 종속성 그래프도 매끄럽게 만드는 강력한 툴킷입니다.
이제 동일한 이름의 Require.js 함수를 사용한 간단한 스크립트 로딩 예제를 살펴보겠습니다.
require(['moment'], function(moment) { console.log(moment().format('dddd')); // 星期几 });
require 함수는 모듈 이름 배열을 받아들이고 이러한 모든 스크립트 모듈을 병렬로 로드합니다. yepnope와 달리 Require.js는 대상 스크립트가 순서대로 실행된다는 것을 보장하지 않고 실행 순서가 해당 종속성 요구 사항을 충족할 수 있도록 보장하지만 전제는 이러한 스크립트의 정의가 AMD(Asynchronous Module Definition, Asynchronous Module Definition, 비동기 모듈 정의) 사양.
Case 1: JavaScript 파일 로드
<script src="./js/require.js"></script> <script> require(["./js/a.js", "./js/b.js"], function() { myFunctionA(); myFunctionB(); }); </script>Case 1에 표시된 것처럼 두 개의 JavaScript 파일 a.js 및 b.js가 있으며 각각 myFunctionA 및 myFunctionB라는 두 가지 메서드를 정의합니다. RequireJS를 사용하여 이 두 파일을 로드하면 함수 부분의 코드가 이 두 파일의 메서드를 참조할 수 있습니다.
Case 2: 페이지 로딩 후 JavaScript 실행
<script src="./js/require.js"></script> <script> require(["domReady!", "./js/a.js", "./js/b.js"], function() { myFunctionA(); myFunctionB(); }); </script>Case 2의 코드를 실행한 후 a.js와 b.js에 RequireJS가 삽입되는 것을 Firebug를 통해 확인할 수 있습니다. 현재 페이지에는 JavaScript 파일을 비동기적으로 다운로드하는 데 사용되는 3f1c4e4b6b16bbbd69b2ee476dc4f83a 태그가 각각 선언됩니다. 비동기 속성은 현재 대부분의 브라우저에서 지원됩니다. 이는 27835793f4768f4164d1421d99e293bc 태그의 js 파일이 다른 페이지 콘텐츠의 다운로드를 차단하지 않음을 나타냅니다.
사례 3: RequireJS 모듈 이름으로 삽입된 3f1c4e4b6b16bbbd69b2ee476dc4f83a,
모듈 종속성 목록,
RequireJS를 사용하여 JavaScript 모듈 정의
먼저 간단한 예제를 살펴보겠습니다. 이 예제에서는 학생 모듈과 클래스 모듈을 정의하여 메인 프로그램에 학생 개체가 생성되고 클래스에 배치됩니다.
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="js/a.js" src="js/a.js"></script>
define(function(){ return { createStudent: function(name, gender){ return { name: name, gender: gender }; } }; });
define(function() { var allStudents = []; return { classID: "001", department: "computer", addToClass: function(student) { allStudents.push(student); }, getClassSize: function() { return allStudents.length; } }; } );
학생 모듈과 수업 모듈은 독립적인 모듈입니다. 다음으로, 이 모듈은 학생과 수업 모듈에 의존하므로 주요 프로그램 부분의 논리도 가능합니다. 포장.
사례 7: 학생 및 수업 모듈의 관리자 모듈에 종속됨,manager.js
require(["js/student", "js/class"], function(student, clz) { clz.addToClass(student.createStudent("Jack", "male")); clz.addToClass(student.createStudent("Rose", "female")); console.log(clz.getClassSize()); // 输出 2 });
사례 8: 새로운 메인 프로그램
require(["js/manager"], function(manager) { manager.addNewStudent("Jack", "male"); manager.addNewStudent("Rose", "female"); console.log(manager.getMyClassSize());// 输出 2 });
通过上面的代码示例,我们已经清楚的了解了如何写一个模块,这个模块如何被使用,模块间的依赖关系如何定义。
其实要想让自己的站点更快捷,可以异步加载那些暂时用不到的脚本。为此最简单的做法是审慎地使用defer 属性和async 属性。如果要求根据条件来加载脚本,请考虑像yepnope 这样的脚本加载器。如果站点存在大量相互依赖的脚本,请考虑Require.js。选择最适合任务的工具,然后使用它,享受它带来的便捷。
위 내용은 Javascript의 Require.js/AMD 모듈러 로딩 사용 사례 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!