엔터프라이즈급 프로젝트 구조 구축
어떤 사람들은 이것이 간단한 부차적인 방면이라고 생각한다 — 그것은 종종 보기보다 더 복잡한 것을 숨기고 있다.대부분의 경우 완벽한 해결 방안이 없지만 — 우리는 업계의 최상의 실천과 나의 경험에 근거하여 가장 의미 있는 일들을 탐색할 수 있다.
이 문서에서는 다음을 설명합니다.
각형 솔리드
새 코드 라이브러리를 설정할 때, 내가 자주 하는 첫 번째 일은 창고를 구성하는 프로그래밍 실체를 생각하고 정의하는 것이다.Angular 개발자로서 우리는 이미 그 중 일부를 잘 알고 있다.
그래서 — HighlightPipe라는 클래스의 파이핑을 만들면 해당 파일의 이름이 Highlight입니다.담뱃대.ts, 만약 Dropdown Component라는 구성 요소가 있다면, 파일을 아래로 당기기를 원합니다.구성 요소ts, 드롭다운 목록.구성 요소html 및 드롭다운 목록.구성 요소scss.
기능 모듈
각도 모듈을 먼저 논의하지 않으면 각도 프로젝트의 구조를 논의할 수 없다.
Angular 응용 프로그램은 다른 모듈을 가져올 수 있는 모듈로 구성되어 있기 때문에 Angular 프로젝트를 구성하는 루트 폴더가 됩니다.각 모듈에는 해당 폴더에 포함된 다른 각도 엔티티가 모두 포함됩니다.
만약에 우리가 전자상거래 응용 프로그램을 구축하고 있다고 가정하면 우리는 쇼핑 카트 기능 모듈을 만들었는데 그 구조는 다음과 같다.
💡As you may notice, I tend to differentiate between containers (smart) and components (dumb) so I place them in different folders, but it’s not something I necessarily advocate
기능 모듈은 상부 구성 요소를 제외한 어떤 내용도 내보내서는 안 되기 때문에 우리가 정의한 어떤 내용도 다른 곳에서 사용하지 않습니다.
공유 모듈
하지만 어떤 물건을 다른 곳에서 중복 사용해야 한다면?
이 예에서 공유 모듈인 Shared Module을 만들었습니다. 공유 실체는 프로젝트의 모든 모듈에 제공됩니다.
SharedModule은 일반적으로 프로젝트의 다른 모듈 간에 공유되는 실체로 구성된다 — 하지만 그 외에는 필요 없다.우리가 서로 다른 팀과 프로젝트를 뛰어넘어 다시 사용할 수 있는 서비스나 구성 요소를 만났을 때 이상적인 상황에서 자주 바뀌지 않기 때문에 각도 라이브러리를 구축해야 할 수도 있다.
💡For a detailed overview of all the different module types, you can check that out on Angular’s official website.
도서관, Monorepos 및 마이크로 프런트엔드
고도로 다시 사용할 수 있는 서비스나 구성 요소 (서비스 모듈과 작은 위젯 모듈로 나눌 수 있음) 를 사용할 때, 이 모듈을 각도 라이브러리로 구축하기를 원할 수도 있고, 자신의 저장소에서 만들 수도 있고, 더 큰 monorepo에서 만들 수도 있습니다.
강력한 CLI 덕분에 다음과 같은 간단한 명령을 통해 Project라는 폴더에 Angular 라이브러리를 쉽게 생성할 수 있습니다.
ng generate library my-lib
각도 라이브러리에 대한 자세한 내용은 official documentation on Angular.io를 참조하십시오.라이브러리 사용은 로컬 모듈에 비해 다음과 같은 이점을 제공합니다.
예를 들어 모든 팀에서 사용하는 메시징 시스템을 사용하는 경우 — 많은 라이브러리들이 실질적으로 일반적인 기초 작업을 하지 않도록 추상적인 것을 공유하고 싶을 수도 있습니다.
따라서 메시지 라이브러리를 만들고 @big company/messaging으로 NPM에 발표합니다.
단 환매 협의는?마이크로 앞머리는요?
이것은 더 큰 문장이 필요할 수 있지만, 기업급 프로젝트에 대해 이야기할 때, 우리는 다음과 같은 두 가지 방식을 언급하지 않을 수 없다.
💡 You may want to take a look at Nx Workspaces
각진 프로젝트를 더 많은 프로젝트와 라이브러리를 포함하는 모노페오로 구축하는 것은 매력적인 해결 방안이지만 대형 과학 기술 회사에 있어서는 현실적으로 실현하기 어렵다. 왜냐하면 이런 회사에서 많은 팀과 프로젝트가 분리되어 서로 멀리 떨어져 있기 때문이다.
그럼 도서관은 어디에 세워야 하나요?
유형 스크립트 엔티티
만약 당신이 Angular와 Typescript를 사용하고 있다면 — 나는 네가 옳다고 생각한다. 너는 Typescript 자체의 강력한 실체를 고려해야 한다. 우리는 이러한 실체를 이용하여 구조적이고 좋은 코드 라이브러리를 구축할 수 있다.
프로젝트에서 가장 많이 사용할 Typescript 엔티티 목록은 다음과 같습니다.
백엔드 엔티티마다 일치하는 Typescript 파일을 생성하는 것이 좋습니다.여기에는 열거, DTO(요청 및 응답용) 및 데이터 클래스가 포함됩니다.
예를 들어 우리는 회사 내 여러 팀이 공유하는 마이크로 서비스를 개발할 때도 있다.유사한 상황에서, 나는 각도 라이브러리를 구축하는 것이 의미가 있다고 생각한다. 이것은 로컬 개발 모듈이 아닌 일치하는 클래스, 인터페이스, 매거진을 탑재할 것이다.
국가 관리
어떤 상태 관리 라이브러리를 사용할 계획이든지 간에, 업무 논리와 역 모듈을 분리하는 것을 권장합니다.우리는 서비스 모듈 모델을 이용하여 관련 기능 모듈로 가져올 수 있다.
상태 관리 서비스 모듈은 다음 두 가지만 내보내면 됩니다.
이런 모델은 어떤 우세가 있습니까?
NGRX 프로그래밍 엔티티
NGRX에는 어떤 프로그래밍 엔티티가 있습니까?
/영향
/솔리드
💡 If we create a test for each file we create, it's a good idea to place them in a separate folder
배달하다⭐
만약 당신이 어떤 해명을 필요로 하거나, 어떤 일이 분명하지 않거나 틀렸다고 생각한다면, 평론을 남겨 주십시오.
나는 네가 이 문장을 좋아하길 바란다.있다면 저Medium나 my website를 주목하여 소프트웨어 개발, 전단, RxJS, Typescript 등에 관한 글을 더 많이 얻으세요!
Reference
이 문제에 관하여(엔터프라이즈급 프로젝트 구조 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gc_psk/building-an-enterprise-grade-angular-project-structure-3ihk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)