Seajs Github 모듈 식별은 비교적 분명했습니다. 그러나 특히 직접 작성된 [모듈 ID] 및 [모듈 종속성]이 필요하거나 전송하기 위해 고유 한 자동화 도구를 작성할 때 (PS : SPM은 적응력이없고 쉽지 않은 것 같습니다. 결국, 프로젝트의 모든 디렉토리 구조는 크게 다를 수 있으며, 포지셔닝이 패키지 관리 도구 인 경우, 프로젝트를위한 자동화 된 시공 도구가 될 것으로 기대하지 않습니다). 그리고 ID 파싱 규칙은 철저히 이해되어야합니다.
참고 :
1. 최상위 식별자는 항상 기본 기본 경로에 비해 구문 분석됩니다.
2. 절대 경로와 루트 경로는 항상 현재 페이지에 비해 구문 분석됩니다.
3. 요구 및 요구의 상대 경로는 현재 모듈 경로에 비해 구문 분석됩니다.
4. Seajs.use의 상대 경로는 항상 현재 페이지에 비해 구문 분석됩니다.
SEAJS에서 모듈 ID는 대략 세 가지 유형의 유형으로 나눌 수 있습니다 : [상대 식별자], [최상층 식별자] 및 [일반 경로].
일반 경로에는 "절대 경로", "루트 경로"등이 포함됩니다.
여기서 우리는 [상대 로고] 및 [상단 로고]에 중점을 둡니다.
상대 식별자는 "./", "../", 예 : "./othermodule", "../lib/base"를 참조하십시오.
최상위 식별자는 파일 또는 디렉토리를 참조하십시오 (포함 할 수 있습니다 : 문자, -, _) : "App/Widget/Select"
모듈 ID가 필요한 세 곳이 있습니다.
코드 사본은 다음과 같습니다. define ( "id (1)", [ "../ id2 (2)"], 함수 (요구, 내보내기, 모듈) {
var modulea = 요구 ( './ modulea (3)');
})
참고 : 첫 번째 매개 변수 [module id] 또는 두 번째 매개 변수 [module id] 또는 [신뢰할 수있는 모듈 ID]이든, 최종 비교 표준은 [Parsed File URI]입니다.
따라서 ID를 작성 해야하는이 세 곳은 어떤 식 으로든 작성할 수 있으며, 마침내 동일한 URI로 구문 분석되는 한 동일한 모듈로 간주됩니다.
ID를 구문 분석하는 과정에서 Seajs.config에 정의 된 별칭 및 경로에 의해 미리 처리됩니다.
기본 경로 해상도 규칙
(레이어 1, 경로 자체는 어떤 설정에도 의존하지 않습니다)
1. [최상위 레벨 식별]은 기본 기본 경로에 비해 상단 레벨 식별이 구문 분석되므로 기본 자체는 [상대 식별] 또는 [루트 경로] 등만 사용할 수 있기 때문에 사용할 수 없습니다.
2. 기본 경로는 SEAJS 디렉토리의 경우 SEEJS가 권장하는 소스 코드 디렉토리 구조가 아닌 경우 기본 경로를 수동으로 설정하십시오.
3. [상대 식별] : 현재 페이지와 관련하여 분석.
경로에서의 경로 해상도
(레이어 1, 경로 자체는 어떤 설정에도 의존하지 않습니다)
1. [상대 식별] : 인용해야 할 곳, 상대 분석 위치는 인용되는 장소에 따라 다르며 지역 규칙을 따릅니다.
2. 경로의 필드는 사용 된 변수 형태로 대체 된 다음 구문 분석됩니다.
예를 들어:
다음과 같이 코드를 복사하십시오 : // 코드 블록 (1)
// 경로 정의 :
seajs.config ({
기본 : "./ app/src",
길:{
"A": "../ lib", // (1) 상대 경로
"lib": "path/to/lib", // (2) 최상위 로고
"L2": "/lib"// (3) 루트 경로
}
});
// 모듈 mod/m/m.js :
...
요구 ( "a/jQuery");
// => 변환 : "../../lib/jquery"
// => 로딩 : mod/lib/jQuery (특별 주 1)
...
// 모듈 mod/f.js :
...
요구 ( "a/jQuery");
// => 변환 : "../../lib/jquery"
// => 로딩 : lib/jQuery (특별 주 2)
...
별칭의 경로 해상도 규칙
(레이어 2에서 경로 자체는 경로 설정에 따라 달라질 수 있습니다)
1. 별칭의 규칙은 경로와 유사하며 별칭 경로는 경로에서 "변수"를 사용할 수도 있습니다.
2. 알림 : 경로와 별명에서 [최상위 식별], [루트 경로] 및 [절대 경로]를 사용하고 [상대 식별]을 사용하지 않으므로 다른 깊이의 모듈이 다른 경로로 구문 분석되므로 [상대 식별]을 사용하지 마십시오.
3. [상대 식별] : 인용해야 할 곳, 상대 분석 위치는 인용되는 장소에 따라 다르며 지역 규칙을 따릅니다.
Seajs.use 경로 해상도 규칙
[상대 식별] : 현재 페이지와 관련하여 분석.
모듈 정의 정의 ID 구문 분석 규칙 (1)
(레이어 3에서, 경로는 별칭 또는 경로에 대해 설정할 수 있습니다)
사용할 수 있습니다 : [상대 식별], [최상위 식별], [루트 경로]
[최상위 식별]을 사용하는 것이 좋습니다.
【상대 식별 ative : 현재 페이지와 관련된 분석
다음과 같이 코드를 복사하십시오 : // 코드 블록 (2)
// 구성 - [코드 블록 (1)]에서 구성을 사용하십시오.
// 모듈 1, 모호성 없음, 루트 경로 분석
정의 ( "/app/src/module/base", ..);
// 모듈 2, 모호하지 않은 최상위 식별, 기본 기본 경로에 비해 구문 분석
정의 ( "app/src/module/base", ..);
// 모듈 3, 모호성 및 상대 식별이 포함 된 현재 페이지에 대해 여기에 (이 모듈의 HTML 페이지 참조)
//하지만 [피상적으로 동일한 "ID"]가 다른 곳에서 사용 되더라도 다른 모듈이 구문 분석 될 수 있습니다.
정의 ( "./ app/src/module/base", ..);
모듈 종속성 ID 해결 규칙 (2)
(레이어 3에서, 경로는 별칭 또는 경로에 대해 설정할 수 있습니다)
【상대 식별 ative : 상대 기본 기본 경로 분석
다음과 같이 코드를 복사하십시오 : // 코드 블록 (3)
// 구성 - [코드 블록 (1)]에서 구성을 사용하십시오.
// 루트 경로 해상도에 비해 모호성이 없습니다
define ( "..", [ "/app/src/module/base"], ..)
// 기본 기본 경로 분석에 비해 모호성, 최상위 식별,
define ( "..", [ "app/src/module/base"], ..)
// 현재 모듈과 관련하여 모호성이 있습니다.
// 여기의 종속성은 [코드 블록 (2)의 '모듈 3'에 의존하는 것 같습니다.
//하지만 현재 모듈과 현재 페이지가 동일한 레벨 디렉토리에 있지 않으면`모듈 3 '에 구문 분석되지 않습니다.
define ( "..", [ "./app/src/module/base"], ..)
모듈 내의 다른 모듈에 대한 ID 해결 규칙이 필요합니다 (3)
(레이어 3에서, 경로는 별칭 또는 경로에 대해 설정할 수 있습니다)
【상대 식별 ative : 상대 기본 기본 경로 분석
다음과 같이 코드를 복사하십시오 : // 코드 블록 (4)
// 구성 - [코드 블록 (1)]에서 구성을 사용하십시오.
정의 ( "..", [..], function (require) {
// 루트 경로 해상도에 비해 모호성이 없습니다
요구 사항 ( "/app/src/module/base");
});
정의 ( "..", [..], function (require) {
// 기본 기본 경로 분석에 비해 모호성, 최상위 식별,
요구 사항 ( "app/src/module/base");
});
정의 ( "..", [..], function (require) {
// 현재 모듈과 관련하여 모호성이 있습니다.
// 여기의 종속성은 [코드 블록 (2)의 '모듈 3'에 의존하는 것 같습니다.
//하지만 현재 모듈과 현재 페이지가 동일한 레벨 디렉토리에 있지 않으면`모듈 3 '에 구문 분석되지 않습니다.
요구 사항 ( "./ app/src/module/base");
})
특별 알림 : 모듈에는 ID를 작성 해야하는 세 곳이 있으며 동일한 모듈에 구문 분석되는 한 동일한 문자열을 사용할 필요가 없습니다.
요약 :
1. 경로와 별명의 설정은 변수를 사용하는 곳과 동일합니다.
2. [상단 레벨 로고]를 가능한 한 많이 사용하십시오.
3. 디렉토리 범위와 같이 [최상위 식별자]를 사용할 수없는 경우, 디렉토리 범위가 비교적 큰 경우 [비 관계형 경로] 식별자를 통해 디렉토리로 찾아서 별명이나 경로를 설정 한 다음 아래의 ID를 정의하십시오. 이 식별자.