수색…
소개
Meteor 1.3이 출시되기 전에 Meteor 개발자는 Meteor.js의 파일 종속성 및 전역 변수 처리에 대해 좌절감을 나타 냈습니다. 이에 따라 Meteor는 프로젝트 의존성 시스템을보다 간소화하기 위해 프로젝트 구조에 대한 새로운 표준을 설정했습니다. 이 항목에서는 표준화 된 프로젝트 구조와 그 기본 원리를 설명합니다.
비고
고객
클라이언트 디렉토리의 모든 코드는 클라이언트 측 또는 웹 브라우저에서만 실행됩니다.
클라이언트 / 호환성
호환성 디렉토리에는 jQuery 라이브러리 등의 레거시 또는 제 3 자 코드가 들어 있습니다.
lib
lib 디렉토리는 Meteor 프로젝트의 다른 디렉토리보다 먼저로드되고 서버와 클라이언트 모두에로드됩니다. 데이터 모델, 동형 라이브러리 및 비즈니스 논리를 정의하는 데 선호되는 곳입니다.
수입
imports 디렉토리는 클라이언트 번들이 클라이언트로 전달되기 전에 서버와 클라이언트 모두에서 사용할 수있는 서버의 디렉토리입니다.
꾸러미
packages 디렉토리는 로컬 개발 중에 사용자 정의 패키지가 저장되는 곳입니다. meteor add package:name
를 추가하기 위해 표준 명령 meteor add package:name
을 사용할 때, Meteor는 로컬 패키지가 해당 package.js
파일에 해당 설명 이름을 가지고 있다면이 디렉토리를 먼저 찾습니다. 그렇지 않은 경우 평소대로 대기를 폴링합니다.
은밀한
전용 디렉토리에는 웹 서버에서만 사용할 수있는 정적 파일이 들어 있습니다.
공공의
공용 디렉토리에는 응용 프로그램 클라이언트에서만 사용 가능한 정적 파일이 들어 있습니다. 브랜드 자산 등을 포함 할 수 있습니다.
섬기는 사람
서버 디렉토리는 서버 측 자산을 포함합니다. 여기에는 인증 논리, 메소드 및 보안 고려 사항이 필요할 수있는 기타 코드가 포함될 수 있습니다.
검사들
테스트 디렉토리는 응용 프로그램이 번들되고 배포 될 때 기본적으로 생략됩니다.
Richard Silverton 이 제안한 것처럼 버전 관리하에 유성 프로젝트 디렉토리뿐만 아니라 상위 디렉토리도 넣는 것이 편리한 아이디어입니다.
그렇게하면 유추하지 않고도 버전 관리하에 파일을 처리 할 수 있습니다.
기본 디렉토리 구조
앱을 구조화 할 때 가장 먼저 알아야 할 점은 Meteor 도구에는 특정 로직으로 하드 코딩 된 일부 디렉토리가 있다는 점입니다. 아주 기본적인 수준에서 다음 디렉토리는 Meteor bundler에서 "구워집니다".
client/ # client application code
client/compatibility/ # legacy 3rd party javascript libraries
imports/ # for lazy loading feature
lib/ # any common code for client/server.
packages/ # place for all your atmosphere packages
private/ # static files that only the server knows about
public/ # static files that are available to the client
server/ # server code
tests/ # unit test files (won't be loaded on client or server)
참조 페이지 : Meteor Guide> 특별 디렉토리
패키지 전용 디렉토리 구조
많은 사람들이 결국 여러 응용 프로그램을 지원하고 응용 프로그램간에 코드를 공유하고자합니다. 이것은 마이크로 서비스 아키텍처와 모든 패키지 애플리케이션의 개념으로 이어집니다. 근본적으로 전체 클래식 디렉토리 구조의 코드가 패키지로 리팩토링됩니다.
패키지에 디렉토리에 대한 하드 코딩 된 논리가 없더라도 패키지를 만들 때 고전적인 디렉토리 구조를 사용하는 것이 좋습니다. 이렇게하면 앱에서 기능을 프로토 타이핑 한 다음 패키지로 추출하여 게시 및 공유 할 때 자연스러운 리팩터링 경로가 만들어집니다. 디렉토리 이름은 공유되므로 팀 구성원간에 혼동이 적습니다.
client/ # client application code
packages/ # place for all your atmosphere packages
packages/foo/client # client application code
packages/foo/lib # any common code for client/server
packages/foo/server # server code
packages/foo/tests # tests
server/ # server code
가져 오기 / 모듈 디렉토리 구조
Meteor의 최신 버전은 ecmascript
, 일명 ES6 또는 ES2015를 지원합니다. 패키지 대신 Javascript는 패키지 전용 응용 프로그램의 필요성을 대체하는 import
문 및 모듈을 지원합니다. 최신 디렉토리 구조는 패키지 전용 구조와 유사하지만 /packages
대신 /imports
디렉토리를 사용 /packages
.
imports #
imports/api # isomorphic methods
imports/lib # any common code for client/server
imports/client # client application code
imports/server # server code
혼합 모드 디렉토리 구조
물론 이러한 접근 방식을 혼합하여 응용 프로그램 특정 코드와 함께 패키지와 가져 오기를 모두 사용할 수 있습니다. 믹스 모드 구조는 세 가지 상황에서 가장 일반적입니다 : franken-app는 전반적인 전략없이 여기 저기에서 조금 벗어납니다. 클래식 패키지 또는 패키지 전용 구조에서 수입 / 모듈 구조로 적극적으로 리팩토링되는 앱입니다.
client/ # client application code
client/compatibility/ # legacy 3rd party javascript libraries
imports #
imports/api # isomorphic methods
imports/lib # any common code for client/server
imports/client # client application code
imports/server # server code
lib/ # any common code for client/server.
packages/ # place for all your atmosphere packages
packages/foo/client # client application code
packages/foo/lib # any common code for client/server
packages/foo/server # server code
packages/foo/tests # tests
private/ # static files that only the server knows about
public/ # static files that are available to the client
server/ # server code
tests/ # unit test files (won't be loaded on client or server)
디렉토리로드 순서
HTML 템플릿 파일은 항상 그 전에로드됩니다.
main으로 시작하는 파일 . 마지막으로로드되었습니다.
lib / 디렉토리 안에있는 파일들이 다음에로드됩니다.
깊은 경로가있는 파일이 다음에로드됩니다.
파일은 전체 경로의 알파벳 순서로로드됩니다.
참조 페이지 : Meteor Guide> Application Structure> 기본 파일로드 순서