파일 및 폴더에 대한 Node.js 프로젝트 명명 규칙

대규모 Node.js 프로젝트의 파일 및 폴더에 대한 이름 지정 규칙은 무엇입니까?

대문자, camelCase 또는 밑줄을 사용해야합니까?

즉. 이것이 유효한 것으로 간주됩니까?

project-name
    app
        controllers
            someThings.js
            users.js
        models
                someThing.js
                user.js
        views
            some-things
                index.jade
            users
                logIn.jade
                signUp.jade
    ...


답변

노드와 함께 몇 년 후 , 디렉토리 / 파일 구조에 대한 규칙 이 없다고 말할 수 있습니다 . 그러나 대부분의 (전문) 익스프레스 애플리케이션은 다음과 같은 설정을 사용합니다.

/
  /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 를 사용해야 합니다 .

업데이트 (스타일 가이드) :


답변

사용 kebab-case하는 모든 패키지, 폴더와 파일 이름을.

왜?

언젠가 모든 폴더 나 파일이 자체 패키지로 추출 될 수 있다고 상상해야합니다. 패키지는 대문자를 포함 할 수 없습니다.

새 패키지에는 이름에 대문자가 없어야합니다.
https://docs.npmjs.com/files/package.json#name

따라서 camelCase절대 사용해서는 안됩니다. 이 잎 snake_casekebab-case.

kebab-case오늘날 가장 일반적인 대회입니다. 밑줄은 내부 노드 패키지 용으로 만 사용되며 이것은 단순히 초기의 관례입니다.


답변

규칙이 없습니다. 논리적 구조가 있습니다.

내가 말할 수있는 단 한가지 : camelCase 파일과 디렉토리 이름을 사용하지 마십시오. 왜? 작동하지만 Mac과 Windows에서는 someAction과 일부 작업간에 차이가 없습니다. 나는이 문제를 한 번도 만난 것이 아닙니다. 다음과 같은 파일이 필요합니다.

var isHidden = require('./lib/isHidden');

하지만 슬프게도 소문자로 가득 찬 파일을 만들었습니다 : lib/ishidden.js. Mac에서 저에게 효과적이었습니다. 내 동료의 Mac에서 잘 작동했습니다. 테스트는 오류없이 실행됩니다. 배포 후 큰 오류가 발생했습니다.

Error: Cannot find module './lib/isHidden'

오 예. 리눅스 박스입니다. 따라서 camelCase 디렉토리 구조는 위험 할 수 있습니다. Windows 또는 Mac에서 개발중인 동료에게는 충분합니다.

따라서 필요한 경우 밑줄 (_) 또는 대시 (-) 구분 기호를 사용하십시오.


답변

Google JavaScript 스타일 가이드 ‘를 기반으로 함

파일 이름은 모두 소문자 여야하며 밑줄 (_) 또는 대시 (-)를 포함 할 수 있지만 추가 구두점은 없습니다. 프로젝트에서 사용하는 규칙을 따르십시오. 파일 이름의 확장자는 .js 여야합니다.


답변

대부분의 사람들 camelCase은 JS에서 사용 합니다. 오픈 소스를 원한다면 이것을 사용하는 것이 좋습니다 🙂


답변

Node.js는 파일 이름 지정 규칙을 적용하지 않습니다 (제외 index.js). 그리고 일반적으로 자바 스크립트 언어도 마찬가지입니다. 여기에서 camelCase, 하이픈 및 밑줄을 제안하는 수십 개의 스레드를 찾을 수 있으며 이들 중 어느 것이 든 완벽하게 작동합니다. 그래서 그것은 당신에게 달려 있습니다. 하나를 선택하고 고수하십시오.


답변

나에 따르면 : 파일의 경우 module.exports가 객체이면 소문자 카멜 케이스를 사용하면 싱글 톤 모듈을 의미합니다. 이것은 또한 단일 톤 방식으로 JSON 파일에도 적용됩니다. module.exports가 클래스처럼 작동하는 생성자 함수를 반환하는 경우 대문자 낙타 대문자를 사용합니다.

폴더의 경우 짧은 이름을 사용하십시오. 여러 단어가 필요한 경우 모든 플랫폼에서 일관되게 작동하도록 “-“로 완전히 소문자로 구분하십시오.