노드와 함께 몇 년 후 , 디렉토리 / 파일 구조에 대한 규칙 이 없다고 말할 수 있습니다 . 그러나 대부분의 (전문) 익스프레스 애플리케이션은 다음과 같은 설정을 사용합니다.
/
/bin - scripts, helpers, binaries
/lib - your application
/config - your configuration
/public - your public files
/test - your tests
이 설정을 사용하는 예는 nodejs-starter 입니다.
개인적으로이 설정을 다음과 같이 변경했습니다.
/
/etc - contains configuration
/app - front-end javascript files
/config - loads config
/models - loads models
/bin - helper scripts
/lib - back-end express files
/config - loads config to app.settings
/models - loads mongoose models
/routes - sets up app.get('..')...
/srv - contains public files
/usr - contains templates
/test - contains test files
제 생각에 후자는 유닉스 스타일의 디렉토리 구조와 더 잘 어울립니다 (전자는 이것을 약간 혼합합니다).
나는 또한 파일을 분리하는이 패턴을 좋아합니다.
lib / index.js
var http = require('http');
var express = require('express');
var app = express();
app.server = http.createServer(app);
require('./config')(app);
require('./models')(app);
require('./routes')(app);
app.server.listen(app.settings.port);
module.exports = app;
lib / static / index.js
var express = require('express');
module.exports = function(app) {
app.use(express.static(app.settings.static.path));
};
이를 통해 종속성을 방해하지 않고도 모든 소스 코드를 깔끔하게 분리 할 수 있습니다. 불쾌한 Javascript와 싸우는 데 정말 좋은 솔루션입니다. 이 설정을 사용 하는 실제 예제가 근처에 있습니다 .
업데이트 (파일 이름) :
가장 일반적인에 관한 파일 이름은 짧은 , 소문자 파일 이름. 파일을 두 단어로만 설명 할 수있는 경우 대부분의 JavaScript 프로젝트는 구분 기호로 밑줄을 사용합니다.
업데이트 (변수) :
변수와 관련하여 파일 이름과 동일한 "규칙"이 적용됩니다. 그러나 프로토 타입이나 클래스는 camelCase 를 사용해야 합니다 .
업데이트 (스타일 가이드) :