Sea.js

4440 단어 cmdseajs
모듈 정의
Sea. js 에 서 는 모든 JavaScript 파일 을 모듈 형식 으로 써 야 하 며, 하나의 파일 은 하나의 모듈 만 포함 합 니 다.
전역 함수 define 을 사용 하여 모듈 을 정의 합 니 다:
define([id], [dependencies], factory);

id
현재 모듈 의 유일한 표 시 를 선택 할 수 있 습 니 다.기본 파일 의 접근 경로 입 니 다.지정 하면 최상 위 또는 절대 표시 로 해 야 합 니 다.
dependencies
현재 모듈 이 의존 하 는 모듈 은 모듈 로 구 성 된 배열 로 선택 할 수 있 습 니 다.지정 되 지 않 으 면 모듈 로 더 는 factory. toString () 에서 배열 을 분석 합 니 다.
factory
모듈 의 공장 함수, 모듈 이 초기 화 될 때 이 공장 함 수 를 한 번 호출 합 니 다.factory 는 함수 일 수도 있 고 대상 문자열 일 수도 있 습 니 다. 이때 module. exports 는 factory 값 으로 직접 설정 합 니 다.
define(function (require, exports, moudle) {
    //do someing
})

exports
exports 는 모듈 의 API 를 외부 에 제공 합 니 다.
define(function (require, exports) {
    //snip...
    exports.foo = 'bar';
    exports.doSomething = function() {};
});

exports 대상 에 구성원 을 추가 하 는 것 외 에 return 을 사용 하여 API 를 직접 제공 할 수 있 습 니 다.
define(function (require, exports) {
    // ..
    return {
        foo : 'bar',
        doSomeing : function () {}
    }
});

만약 return 문장 이 모듈 의 유일한 코드 라면 다음 과 같이 간소화 할 수 있 습 니 다.
define({
    foo : 'bar',
    doSomething : function () {}
});

* * 아래 의 형식 이 잘못 되 었 습 니 다.
define(function (require, exports) {
    exports = {
        foo : 'bar',
        doSomething : function () {}
    }
});

모듈 로 더 는 exports 변수 에 부 여 된 값 을 가 져 올 수 없습니다. return 이나 module. exports 를 사용 하 십시오.
require
다른 모듈 에 접근 할 API
define(function () {

    var test = require('test');

    test.doSomething();

})

require.async
이 방법 은 비동기 로드 모듈 에 사용 되 며, 로드 완료 후 리 셋 함 수 를 실행 합 니 다.
define(function (require, exports, module) {
    
    //    
    require.async('./test', function () {
        //....
    });
    //    
    require.async(['./a', './b'], function () {
        //....
    });
})

require.resolve
require. resolve () 의 내부 메커니즘 을 사용 하여 템 플 릿 경 로 를 분석 하고 되 돌려 줍 니 다.이 함 수 는 모듈 을 불 러 오지 않 고 분 석 된 경로 만 되 돌려 줍 니 다.
require.load
이 방법 은 스 크 립 트 를 비동기 로 불 러 오고 불 러 온 후에 지정 한 리 셋 함 수 를 실행 할 수 있 습 니 다.플러그 인 을 개발 할 때 사용자 정의 자원 로드 를 덮어 쓰 는 방법 으로 실천 할 수 있 습 니 다.
require.constructor
때때로 우 리 는 모든 require 매개 변수 대상 에 게 공용 방법 을 추가 해 야 한다.이 때 는 require. constructor 를 사용 하여 실현 하 는 것 이 매우 편리 하 다.
module
module 매개 변수 춘 촌 모듈 의 메타 정보.다음 멤버 가 있 습 니 다:
module.id
현재 모듈 의 유일한 표시, 이 모듈 의 exports 를 되 돌려 줍 니 다.
define(function (require, exports, module) {
    console.log(module.id); //http://path/to/this/file.js   
})

module.dependencies
module. dependencies 는 현재 모듈 의 의존 목록 을 나타 내 는 배열 입 니 다.
이 배열 은 읽 기만 하고 모듈 로드 가 완료 되면 배열 을 수정 하 는 데 아무런 효과 가 없습니다.
module.exports
exports 대상 은 모듈 시스템 에 의 해 만들어 집 니 다. 이것 은 개발 자의 모든 수 요 를 만족 시 키 지 못 하고 가끔 은 exports 가 특정한 실력 이 기 를 바 랍 니 다.이 때 module. exports 로 구현 할 수 있 습 니 다.
define(function (require, exports, module) {
    console.log(module.exports === exports); //true
    module.exports = new SomeClass();
    console.log(module.exports === exports); //false
});

module. exports 는 동기 화 되 어야 합 니 다. 리 셋 함수 에 넣 을 수 없습니다.
// test.js
define(funcion (require, exports, module) {
    setTimeout(function () {
        module.exports = {a : 'hello'}
    }, 0);
});

// app.js

define(function (require, exports, module) {
    var test = require('test');
    console.log(test.a) //undefined
});

module.constructor
어떤 때 는 모든 module 매개 변수 에 공용 속성 이나 방법 을 추가 해 야 합 니 다.이런 상황 에서 module. constructor 는 수 요 를 잘 만족 시 킬 수 있다.예 를 들 면:
extend.js:
define(function (require, exports, module) {
	var Module = module.constructor;
	Module.prototype.filename = function (arg) {
		var id = arg.id;
		console.log(id, 'id');
		var parts = id.split('/');
		console.log(parts[parts.length - 1], 'parts');
		return parts[parts.length - 1];
	}
	exports.filename = function (arg) {
		return module.filename(arg);
	}
});

test.js
define(function (require, exports, module) {
    var extend = require('./extend.js');
    console.log(extend.filename(module)); //  test.js
});

seajs 추천 here.
이것 은 나의 github 의 아주 간단 한 예 click here 입 니 다.

좋은 웹페이지 즐겨찾기