0

오히려 큰 Angular 응용 프로그램을 사용하고 있으며 현재 내보낼 항목이 필요할 때마다 가져 오는 공유 모듈 안에 모든 공유 구성 요소와 모듈이 있습니다.각도 - 불필요한 ngModule을 가져 오면 다른 곳으로 가져온 경우 파일 크기가 커지나요?

그러나 공유 모듈에서 필요한 모듈이 거의없는 몇 가지 작은 기능 모듈이 있으므로 다른 곳으로 가져온 경우에도 필요한 모듈을 가져 오기 위해 아키텍처의 복잡성과 모듈성을 높여야합니다. ?

다른 모듈에서 이미 가져온 모듈을 캐쉬하고 문제는 없지만 그게 무슨 뜻입니까?

예 : 모듈 1 개 수입 A는, C, D.

가 성능 손실 I 가져올 경우, 두 모듈에서 B, C, D (예는 A, B, C. 모듈 2 개 수입 공유 모듈을 통해)?

+0

응용 프로그램을 느린로드 된 부분으로 분할하는 기능이 느슨합니다. 이상적으로는 기능 당 모듈을 만든 다음 필요할 때 해당 기능 모듈을 가져 오는 것이 좋습니다.그런 다음 나중에 초기로드 시간을 향상시키려는 경우 초기로드에 표시된 응용 프로그램 부분에서 필요하지 않은 모듈을 느리게로드하면 다른 모든 요소가 쉽게 자리에 놓입니다. –

+0

공유 모듈을 가져 오는로드 된 모듈이 많습니다. 하지만 내가 A, B, C를 가져오고 D를 가져 오면 이것들은 더 빨라지나요? 이전에 다른 모듈에 D가로드 되었더라도? –

+0

여러 곳에서 여러 번 가져 오는 모듈을 신경 쓸 필요가 없습니다. Angular는 인용 한 문서에서 언급 한대로 처리합니다. 주요 문제는 작은 모듈 만 실제로 사용하는 경우에도 큰 모듈을로드 할 때입니다. –

답변

2

아마도. 앱의 구조에 따라 다릅니다.

lazy-loading을 사용하지 않는 경우 문서를 따라갈 수 있으며 코드를 복제하지 않습니다. 원래 설정의 angle-cli로 만들어진 기본 chunks은 모듈을위한 하나의 scripts.bundle.js을 생성합니다 (다른 것들은 다른 덩어리 중에서). 이제

사용중인 경우lazy-loading (당신이 당신의 질문의 의견에 말했듯이)가 각각 게으른로드 모듈에 대한 chunk를 작성하고 당신은 신중하게 진행해야한다.

각도-CLI는이 덩어리를 만들 수 webpack을 사용하며이 댓글의 시간, 그것은 에게 가져온 모듈 (그리고 제 3의 라이브러리!)을해야하는 모든 덩어리에 중복됩니다.

이것은 known issue이며 partially addressed이지만 웹 팩을 해결하는 데 필요한 implement a feature을 기다리고 있습니다.

제안 :

이/당신의 게으른 laoaded 모듈과 수입의 각각에 대해 SharedModule을 생성하는 모듈에 대한 필요한 경우에만 물건을 선언 만이 SharedModule을 사용합니다. 게으른로드 모듈에서 주 앱의 SharedModule을 가져 오지 마십시오.

다른 청크에서 필요로하는 모듈을 복제하지만 적어도 불필요한 모듈은 추가하지 않습니다.

위에서 링크 된 문제를 주시하십시오. 그러면이 대안을 피할 수있는시기를 알 수 있습니다.

건배!

+0

감사합니다. 훌륭한 답변입니다. 나는 그 스레드에 주시 할 것입니다. 지금은 게으른 모듈에서의 공개는 비 게으른 모듈에서 훌륭한 시스템이므로 저에게 다소 부정적인 것입니다. –