it-source

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

criticalcode 2023. 7. 25. 21:05
반응형

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

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

대문자로 할까요, 낙타 케이스로 할까요, 아니면 점수를 낮게 할까요?

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

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 프로젝트는 구분 기호로 밑줄을 사용합니다.

업데이트(변수):

변수와 관련하여 파일 이름과 동일한 "규칙"이 적용됩니다.그러나 프로토타입 또는 클래스는 camelCase를 사용해야 합니다.

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

사용하다kebab-case모든 패키지, 폴더 및 파일 이름에 대해 설명합니다.

왜요?

언젠가 폴더나 파일이 자체 패키지에 압축 해제될 수도 있다고 생각해야 합니다.패키지에는 대문자를 사용할 수 없습니다.

새 패키지는 이름에 대문자를 사용할 수 없습니다.https://docs.npmjs.com/files/package.json#name

그므로러,camelCase절대 사용해서는 안 됩니다.이것은 남습니다.snake_case그리고.kebab-case.

kebab-case오늘날 가장 일반적인 관습입니다.언더스코어는 내부 노드 패키지에만 사용되며, 이는 단순히 초기의 관례에 불과합니다.

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

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

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

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

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

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

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

'Google JavaScript 스타일 가이드' 기반

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

Node.js는 파일 명명 규칙을 적용하지 않습니다(예:index.js그리고 자바스크립트 언어는 일반적으로 그렇지 않습니다.여기에는 kamelCase, 하이픈 및 밑줄을 제안하는 수십 개의 스레드가 있으며, 이 중 어느 것이든 완벽하게 잘 작동합니다.그러니 당신에게 달렸어요.하나를 선택하고 그것을 고수하세요.

나에 따르면: 파일의 경우 module.exports가 객체라면 lower camel case를 사용하십시오. 즉, 싱글톤 모듈을 의미합니다.이것은 또한 싱글톤이기 때문에 JSON 파일에도 적용할 수 있습니다.module.exports가 클래스처럼 작동하는 생성자 함수를 반환하는 경우 상위 카멜 대소문자를 사용합니다.

폴더의 경우 짧은 이름을 사용합니다.여러 개의 단어가 필요한 경우 "-"로 구분하여 모든 플랫폼에서 일관되게 작동하도록 합니다.

대부분의 사람들이 사용합니다.camelCaseJS에서. 오픈 소스를 원한다면, 이것을 사용하는 것을 제안합니다 :-)

제 생각은 이렇습니다.

project-name
    app
        controllers
            somethings.controller.js
            user-story.controller.js
            users.controller.js
        models
                something.model.js
                user.model.js
        views
            some-things
                index.view.jade
            users
                login.view.jade
                signup.view.jade

언급URL : https://stackoverflow.com/questions/18927298/node-js-project-naming-conventions-for-files-folders

반응형