RingoJS는 그런 일을 할 수 있습니다
링고는 CommonJS 모듈 사양을 구현합니다. 즉,
모든 JavaScript 파일은 자체 최상위 범위에있는 모듈로 취급됩니다.
모듈의 내보내기 개체에 연결된 기능이나 속성이 노출됩니다.
require() 함수는 모듈의 엑스포트 객체를 반환합니다.
주어진 식별자 문자열이 ./ 또는 ../로 시작하는 경우 링고의 모듈 로더가 파일을 검색하여로드하려고 시도합니다. 그러므로 require ('./ foo') 링고가 ./foo.js 파일을 모듈로로드하도록 권고한다.
그렇지 않으면 링고는 모듈 경로의 모든 폴더에서 모듈을 찾습니다.
모듈 경로는 링고가 모듈을 찾을 표준 위치 목록입니다.
는 모듈 경로는 다음과 같은 방법으로 설정할 수 있습니다
RINGO_MODULE_PATH 환경 변수 설정.
ringo.modulepath Java 시스템 속성 설정.
ringo 명령 줄 도구에 -m 또는 --modules 옵션을 사용합니다.
JsgiServlet에서 module-path servlet init 매개 변수를 사용합니다.
require.paths에 요소 추가 또는 제거 Ringo 내에서 Array와 유사한 속성.
패키지는 여러 모듈과 다른 리소스를 하나의 단위로 묶는 수단을 제공합니다. 패키지는 package.json 패키지 설명자 파일이 들어있는 디렉토리입니다.
{
"main": "lib/main.js"
}
이 모듈 ID가 패키지 디렉토리와 package.json의 정의에 직접 해결하는 경우 : package.json 기술자의 주요 속성은 모듈의 주 진입 점으로 링고의 모듈 로더에 의해 인식 주요 속성 인 Ringo는 지정된 리소스를로드하려고 시도합니다. main 속성의 값은 패키지 루트에 상대적인 경로 여야합니다.
모듈 ID가 package.json 파일을 포함하지 않는 디렉토리로 해석되거나 package.json이 main 속성을 정의하지 않으면 Ringo는 해당 디렉토리에 index.js 파일을로드하려고 시도합니다.
모듈 ID의 일부가 패키지 디렉토리로 해석되면 링고는 해당 패키지의 lib 디렉토리에 대해 id의 나머지 부분을 해석하려고 시도합니다. lib 디렉토리의 위치는 package.json의 directories.lib 특성을 사용하여 대체 할 수 있습니다.
CommonJS 모듈 사양
{
"directories": {
"lib": "new-lib"
}
}
의도적으로 작게 유지 하였다. Ringo는 물건을 내보내고 가져 오기위한 몇 가지 추가 정보를 제공합니다. 이 코드를 사용하는 단점은 코드가 링고에 묶여 있지만 코드를 "순수한"CommonJS로 변환하는 것이 상대적으로 쉽고 그 목적을위한 명령 행 도구도 있다는 것입니다.
하나의 링고 확장은 포함 기능입니다. 이것은 require와 비슷하지만 다른 모듈의 내보내기 객체를 전체적으로 반환하는 대신 호출 모듈의 범위에 각 속성을 직접 복사하여 로컬에서 정의 된 것처럼 사용할 수있게 만듭니다.
include는 경제성이 가장 중요한 쉘 작업 및 빠른 스크립트에 적합하며 이것이 그 의미입니다. 프로그램에 사용 된 최상위 수준 기능의 기원을 은폐하면서 대용량, 수명이 긴 프로그램에이 프로그램을 사용하는 것은 대개 좋은 아이디어가 아닙니다.
var {foo, bar} = require("some/module");
위의 문이 수입이 목적
, 그것은 명시 적으로 로컬 범위에서 다른 모듈에서 선택한 속성을 포함하는 자바 스크립트 1.8 destructuring 할당과 함께 사용할 필요 더 권할 "some/module"이 내 보낸 API의 "foo"및 "bar"속성을 호출 범위에서 직접 호출합니다.
Ringo로 명령 줄 스크립트를 작성하는 것은 간단합니다.
ringo [script-file] [script-arg1] [script-arg2] ...
링고 스크립트 파일을로드하고 시스템 모듈의 args 배열을 통해 인수를 제공합니다 : 모든 임의의 자바 스크립트 파일은 링고 명령에 [스크립트 파일] 인수로 전달 될 수있다. args 배열의 첫 번째 요소는 스크립트 파일의 이름입니다.
참조
중복 가능성 (http://stackoverflow.com/questions/11074836/resolving-modules-using-require-js-and-java-rhino) –