2012-05-16 3 views
1

큰 Node 프로젝트에서 작업하고 있습니다. 당연히이 파일을 여러 개의 소스 파일로 나누고 싶습니다. 내 소스 파일의 대다수에서 사용하는 표준 lib의 모듈이 많이 있으며, 거의 모든 곳에서 사용하고 싶은 파일이 꽤 많이 있습니다.대형 (대형) 다중 파일 노드 프로젝트에서 require()

저는 각 소스 파일의 시작 부분에 거대한 require 블록을 포함하여이 작업을 해왔습니다.하지만 이것은 매우 불편합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 또는 Node의 훌륭한 모듈 시스템의 의도 된 결과입니까?

답변

1

음, 여기 몇 가지가 있습니다.

첫 번째로, 너무 많은 파일이 동일한 라이브러리를 반복해서 필요로하는 경우, 뒤로 물러나 올바른 방법으로 코드를 해독할지 결정할 수 있습니다. 아마도 특정 라이브러리가 소스 파일의 하위 집합에서만 필요하게되는 더 나은 조직이있을 것입니다.

두 번째로 global 개체는 Node.js 앱의 모든 require 개의 파일간에 공유됩니다. "루트"소스 파일, 예를 들어 index.jsglobal.fs = require('fs');과 같은 작업을 수행 할 수 있으며 모든 다양한 파일에서 액세스 할 수 있습니다. 이렇게하면 require으로 가득 찬 파일 require이 필요하지 않습니다. (Node.js에서는 브라우저와 달리 global.을 붙임으로써 전역 변수에 액세스하고 있음을 명시해야합니다.)

이렇게하면 CRUD 유형 Express 응용 프로그램에 대한 좋은 생각이 될 수 있습니다. 모두 거의 같지만 각보기마다 조금씩 다른 컨트롤러에 대한 코드를 작성하고 특정 조직 구조가 아닌 분할하기를 원하지만 디버그하기 쉽도록 (이 파일의 오류가 아니라이 파일의 오류). 앱의 구조가 그보다 복잡하다면, 그 트릭을 사용하기 전에 전역 변수에 대한 일반적인 경고를 마음에 가져라.

+1

Node.js를 이미 캐시에있는 경우에는 파일이 두 번로드 할 것, 필요한 모든 파일을 캐시합니다. 나는'글로벌'이 필요하다고 생각하지 않는다. – xiaoyi

+0

필자는 (모듈의 전체적인 점과 C 스타일의 차이점을 포함하고 있습니다.)하지만 과도한''require'' 문을 제거함으로써 현재보다 DRY-er 코드를 유지할 수있는 방법이 있는지 질문하고 있습니다. ''지구 적''이 그렇게 할 가능성이있다. –

+0

하지만 네임 스페이스의'global' 누수가 있으며 요청한 객체가 캐시되어 있는지 확인해야합니다. C 스타일 포함을 사용하는 것이 각 모듈의 파일을위한 멋진 방법이라고 생각합니다. – xiaoyi

2

일반적으로 노드에서 전역을 사용하는 것보다 필요 블록이 더 좋습니다.

필요가 캐시되어 모든 코드 모듈에 넣을 때마다 매번 새로운 인스턴스가 아닌 동일한 인스턴스가 생성된다는 것을 기억해야합니다.

이 방법을 사용하면 원하는 네임 스페이스가있는 적절한 코드를 얻을 수 있으며, 글로벌을 사용하면 필요없는 것이 포함됩니다. require를 사용하여 Node 방식을 사용하면 코드를 좀 더 이식성있게 만드는 경향이 있습니다.

3

컨테이너 모듈을 사용하여 일련의 모듈을로드 할 수 있습니다. 당신은 index.js 가져 오기 라이브러리에서 다른 모듈을 가질 수

lib/ 
    index.js 
    module1.js 
    module2.js 
main.js 

예를 들어, 다음 프로젝트 구조를 제공. 여분의 수입을 감소

# main.js 
var lib = require('./lib'); 

lib.module1.doSomething(); 
lib.module2.doSomethingElse(); 

이 기술은 확장 할 수 있습니다 :

# index.js 
module.exports.module1 = require('./module1'); 
module.exports.module2 = require('./module2'); 

그런 다음 main.js은 하나의 모듈을 가져올 필요가있다.

0

require-file-directory를 통해 절대 경로가없는 파일을 두 개 이상 필요로합니다.

1- 단일 명령문에서 둘 이상의 파일을 요구할 수 있습니다. 2- 이름만으로 된 파일을 요구할 수 있습니다. 솔루션

방문일 : https://www.npmjs.com/package/require-file-directory

관련 문제