현재 Angular CLI &을 통해 생성되는 각형 응용 프로그램에서 webpack을 사용하고 있습니다.각 도메인 모델
우리는 employee.model.ts 등의 데이터를 보유하는 50 개 이상의 모델 타이프 라이터 클래스를 가지고, 우리의 프로젝트에 등
person.model.ts 현재 그것은 모든 다른 모듈에 여기 저기 흩어져있다. 우리는 모든 모델을 하나의 각도 모듈 &에 넣기로 결정했습니다. 그런 다음 다른 모든 모듈은 하나의 특정 모듈에서이 도메인 모델을 가져와야합니다.
어떻게해야합니까?
tsconfig.json 파일에서 typescript 별칭 기능과 관련된 몇 가지 게시물을 읽었으며 경로 속성을 추가 할 수 있습니다. 그래서 여기까지 내가 지금까지 시도한 것이있다.
ProjectDirectory/src/app
ProjectDirectory/src/app/models
모델 폴더, employee.model.ts을 포함 & 50 개 이상의 다른 모델을 person.model.ts.
내가 다른 구성 요소에 노력
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": ["node_modules/@types"],
"lib": ["es2017", "dom"],
"baseUrl": "src",
"paths": {
"@my-models/*": ["models/*"]
}
}
}
가져 오기 문을 tsconfig.js.
import { Employee } from '@my-models'; //<== DOESN'T WORK & THROWS ERROR.
오류
src/app/app.module.ts (20,26): Cannot find module '@my-models'.
한 곳 & 이러한에서
import {Xyz} from './././././abc.module';
감사합니다 모두 같은 상대 경로가없는 청소기 import 문을 모든 모델을 구성 할 수있는 깨끗한 방법이 있나요 질문을 읽는 데 시간이 걸릴 수 있도록 사전에 준비하십시오.
참고 : 다음 기사는 읽었지만 작동하지 않았습니다.
https://decembersoft.com/posts/say-goodbye-to-relative-paths-in-typescript-imports/
https://www.typescriptlang.org/docs/handbook/module-resolution.html
당신은 할 수 있습니다
지금 가져와야 무엇 배럴에서 온다 : 당신의
models
폴더에서은 해당 폴더에 포함 된 모든 클래스를 내보내는
index.ts
파일을 추가 할 수 있습니다 재사용 가능한 각도 모듈을 생성하십시오. 이 작업을 쉽게 수행하려면 ng-packagr : https : //www.npmjs.com/package/ng-packagr을 방문하십시오. 그러나이 작업을 수행 하시겠습니까? Google 스타일 가이드 및 LIFT 원칙 (https://angular.io/guide/styleguide#lift)은 모든 모델을 한 곳에서, 모든 서비스를 한 곳에서 처리하는 등의 전통적인 접근 방식에서 벗어나도록 권장합니다. 대신, 기능적으로 관련된 코드를 최대한 가깝게 유지하십시오. – pixelbitsLIFT를 따라 가면 많은 중첩 된 import 문이 필요 없다는 것을 알 수 있습니다 (예 :'import {...} from .. '../../../../ ..) 문제 /../약간.모듈이 떨어져 간다.) – pixelbits
pixelbit을 올바른 방향으로 가리켜 주셔서 감사합니다. 그러나 동일한 모듈을 반환하는 다른 모듈에있는 다른 서비스에서 사용할 수있는 특정 도메인 모델이 있습니다. 우리는 모든 모듈에서 이러한 모델을 복제하고 싶지 않습니다. 그래서 내가 도메인 모델이 필요한 모듈에 상관없이보다 깨끗한 import 문을 사용할 수있는 솔루션을 찾고 있습니다. – hp8888