JavaScript 코드 조직 구조 가 좋 은 5 가지 특징 [reuqire. js]
4145 단어 코드 규범reuqire.js자바 script
시종 우리 의 의존 을 성명 하 다
우리 가 가장 자주 만 나 는 문 제 는 불 러 올 의존 항목 을 무시 하 는 것 이다.예 를 들 어, 만약 우리 가 jQuery 플러그 인 을 만 들 었 다 면, 일반적으로 jQuery 의 의존 도 를 신고 할 필요 가 없다 고 생각 합 니 다. 왜냐하면 대부분의 페이지 에서 기본적으로 불 러 오기 때 문 입 니 다.대부분의 웹 페이지 에 적용 되 는 것 같 지만 유닛 테스트 를 하거나 새로운 페이지 에 불 러 오 려 고 할 때 문제 가 됩 니 다.시종 우리 의 의존 을 성명 하면 우 리 는 자 바스 크 립 트 의 90 퍼센트 의 문 제 를 없 앨 수 있다.재 활용 가능 한 코드 가 더 신뢰 할 수 있 고 유닛 테스트 의 수량 이 4 배 증가 한 것 도 한 요인 이다.
제3자 코드 라 이브 러 리 에 shim (패드) 추가
자바 스 크 립 트 의존 을 관리 할 때 자주 발생 하 는 재 미 있 는 문 제 는 오래된 제3자 라 이브 러 리 가 귀하 의 의존 관계 관리 시스템 과 협조 하지 못 할 수도 있다 는 것 입 니 다.예 를 들 어, 당신들 내 부 는 jQuery 의 멋 진 플러그 인 을 사 용 했 지만, require. js 에 대해 서 는 아무것도 모 릅 니 다.이것 은 문제 가 될 것 입 니 다. 첫 번 째 특징 때문에 우 리 는 이 플러그 인 에 대한 인용 을 추가 합 니 다.해결 방법 은 관리 도구 에 의존 하여 이 플러그 인 을 위해 패드 를 만 드 는 것 이다.require. js 에서 설정 을 통 해 쉽게 완성 할 수 있 습 니 다.
var require = {
"shim": {
"lib/cool-plugin": {
"deps": ["lib/jquery"]
}
}
}
이 간단 한 설정 이 있 으 면 lib / cool - plugin. js 를 불 러 오 는 스 크 립 트 마다 jQuery 를 자동 으로 불 러 옵 니 다.모든 관련 성 을 만족 시 키 는 데 도움 이 될 것 입 니 다. 최종 결 과 는 코드 가 더 쉽게 테스트 되 고 재 활용 되 는 것 입 니 다. 항상 require () 가 필요 한 기능 을 호출 하기 때 문 입 니 다.
정의 와 호출 은 분리 되 어야 합 니 다.
이것 은 자 바스 크 립 트 코드 의 중용 성과 테스트 가능성 을 제한 하 는 흔 한 문제 이다.문 제 는 하나의 파일 에서 클래스 / 함 수 를 정의 하고 호출 하 는 데 나타난다.다음 코드 를 고려 하 십시오:
## js/User.js
define(functino(require) {
var User = function(name, greeter) {
this.name = name;
this.greeter = greeter;
};
User.prototype.sayHello = function() {
this.greeter("Hello, " + this.name);
};
var user = new User('Alice', window.alert);
user.sayHello();
});
이 예 에서 하나의 파일 은 user 클래스 를 정의 하고 호출 합 니 다.이 스 크 립 트 를 불 러 오기 만 하면 alert 가 나타 나 기 때문에 이 코드 를 다시 사용 하기 어 려 울 것 입 니 다.마찬가지 로 greeter 는 테스트 하기 가 매우 어렵다.해결 방법 은 정의 와 집행 의 분 리 를 유지 하 는 것 이다.이것 은 중용 성과 측정 가능성 을 확보 하 는 데 도움 이 된다.
## js/User.js
define(functino(require) {
var User = function(name, greeter) {
this.name = name;
this.greeter = greeter;
};
User.prototype.sayHello = function() {
this.greeter("Hello, " + this.name);
};
return User;
});
## js/my-page.js
define(functino(require) {
var User = require('js/User');
var user = new User('Alice', window.alert);
user.sayHello();
});
이러한 변 화 는 User 클래스 가 많은 스 크 립 트 에서 안전하게 재 활용 할 수 있 습 니 다.
의존 비동기 로드
스 크 립 트 를 동기 화 하려 고 시도 하면 브 라 우 저가 잠 겨 죽 기 때문에 매우 중요 합 니 다. 스 크 립 트 와 모듈 은 비동기 로 딩 메커니즘 을 사용 해 야 합 니 다.Require. js 는 기본 적 인 상황 에서 모든 비동기 로 모듈 을 불 러 옵 니 다. 모든 의존 이 불 러 온 후에 만 모듈 코드 의 함 수 를 실행 할 수 있 습 니 다.하나의 패 키 지 를 사용 함으로써 우 리 는 'use strict' 의 장점 을 더욱 이용 할 수 있다.
모듈 은 전역 변수 에 의존 해 서 는 안 됩 니 다.
자바 스 크 립 트 코드 라 이브 러 리 를 더욱 강화 하기 위해 서, 우 리 는 전역 변 수 를 완전히 소멸 시 켰 습 니 다. (require. js 가 제공 하 는 전역 변 수 를 제외 하고, 예 를 들 어 require () 와 define ().전역 변 수 는 모듈 에 잠재 적 으로 들 어 가 는 '숨겨 진 의존 관계' 로 코드 를 다시 사용 하거나 테스트 하기 어렵 다 는 악명 이 높다.Require. js 도 제3자 전역 변 수 를 변환 합 니 다. require () - 보충 기능 을 통 해 모듈 을 사용 할 수 있 습 니 다.이 예 에서 lib / calculator 는 전역 계산기 대상 을 만 들 었 습 니 다. 이 라 이브 러 리 는 require 화 되 었 습 니 다.
var require = {
"shim" : {
"lib/calculator": {
"export": "Calc"
}
}
}
결론.
관리 의존 은 어렵 지만 못 하 는 것 은 아 닐 것 이다 (difficult).의존 관 리 를 사용 하면 코드 가 더 신뢰 할 수 있 습 니 다.
via ourjs
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JavaScript 코드 조직 구조 가 좋 은 5 가지 특징 [reuqire. js]자 바스 크 립 트 프로젝트 가 성장 하면 서 조심 하지 않 으 면 관리 하기 어려워 지 는 경우 가 많다.우 리 는 새로운 페이지 를 만 들 때 이전에 쓴 코드 를 다시 사용 하거나 테스트 하기 어렵 다 는 것 을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.