AG 메쉬:어플리케이션 패키지 크기 최소화
11906 단어 tutorialjavascriptperformance
AG 전력망 용어
우리가 시작하기 전에, 중요한 것은 본 문서를 읽을 때 헷갈리지 않도록 AG 격자 용어를 포함하는 것이다.응용 프로그램에 AG Grid를 포함할 경우 패키지와 모듈을 두 가지 옵션 방법으로 부릅니다.이 용어들은 코드를 발표하거나 사용하는 방식과 상관없이 다시 불러옵니다.이러한 용어를 CJS, ESM, UMD 등의 다른 Javascript 모듈 형식과 혼동하지 마십시오.
가방에 대해 우리는 npm가방
ag-grid-community
과 ag-grid-enterprise
을 가리키는데 각각 모든 지역사회/기업 기능을 포함한다.패키지는 패키지에 포함된 모든 AG 메쉬 기능으로 간주되므로 패키지라고 합니다.그들은 모든 물건을 다 싸서 출발할 준비를 했다.Packages Overview 모듈에 따라 우리는
@ag-grid-community/***
또는 @ag-grid-enterprise/***
(즉 @ag-grid-enterprise/row-grouping
와 일치하는 범위 내의 npm 패키지를 가리킨다.이것들은 모두 단독 격자 특성으로 자신의 가방에 포장된 것이다.우리는 이미 격자 기능 모듈을 단독 모듈로 바꾸어서 당신이 필요로 하는 내용만 포함할 수 있습니다.Modules Overview 어떻게 소포 크기를 최대한 줄입니까
패키지의 크기를 최소화하려면 AG Grid Modules 프로그램에 필요한 기능만 포함하는 코드를 사용해야 합니다.예를 들어, 응용 프로그램에서 Excel로 파일을 내보낼 필요가 없을 수 있으므로 이를 지원하는 코드를 포함하지 않아도 됩니다.
AG 그리드 모듈
모듈을 사용하는 첫 번째 단계는 응용 프로그램에 어떤 모듈이 필요한지 결정하는 것이다.이 페이지documentation에는 AG Grid에서 지원하는 각 기능 모듈이 나열되어 있습니다.
이름만 잘 보이지 않으면 모듈 옵션을 선택하여 특정 코드에 어떤 모듈이 필요한지 확인할 수 있습니다.그리고 원본 코드를 보면 필요한 모듈을 가져오는 것을 볼 수 있습니다.
본 문서에서 우리는 응용 프로그램이 다음과 같은 기능만 필요로 한다고 가정한다.
필요한 모듈 설치
첫 번째 단계는 위에서 열거한 모든 모듈에 npm 패키지를 가져오는 것입니다.우리의
package.json
파일에는 다음과 같은 AG Grid 패키지만 포함되어야 합니다."dependencies": {
"@ag-grid-community/client-side-row-model" : "^27.0.0",
"@ag-grid-enterprise/row-grouping" : "^27.0.0",
"@ag-grid-enterprise/set-filter" : "^27.0.0",
}
Make sure you have not accidentally included any other AG Grid package, especially not
ag-grid-community
orag-grid-enterprise
when working with modules as they will dramatically bloat your bundle size!
프레임을 사용하는 경우 관련 프레임 모듈
@ag-grid-community/angular
, @ag-grid-community/react
또는 @ag-grid-community/vue3
중 하나가 포함됩니다.@ag-grid-community/core
에 모듈을 명확하게 포함하지 않았음에도 불구하고 모듈의 의존항으로 설치되어 있음을 알 수 있습니다.어떤 기모 도구에 필요한 것을 발견할 수 있기 때문에 자유롭게 그것을 포함할 수 있습니다.등록 모듈
이제 모듈을 설치했으며 AG Grid 애플리케이션에 모듈을 등록합니다.이 점을 실현할 수 있는 두 가지 방법이 있다.
package.json
전역적으로 등록할 수도 있고, 격자 실례에 전달할 수도 있습니다. 이 실례는 전역적으로 등록할 수 있습니다.전체 설명/프레임별 세부 정보는 Registering AG Grid Modules을 참조하십시오.다음은 전역 등록 모듈의 코드입니다.모든 격자를 실례화하기 전에 이 코드를 실행해야 합니다. 그렇지 않으면 모듈이 사용할 수 없다고 불평할 것입니다.
import { ModuleRegistry } from '@ag-grid-community/core';
import { ClientSideRowModelModule } from "@ag-grid-community/client-side-row-model";
import { RowGroupingModule } from "@ag-grid-enterprise/row-grouping";
import { SetFilterModule } from "@ag-grid-enterprise/set-filter";
ModuleRegistry.registerModules([
ClientSideRowModelModule,
RowGroupingModule,
SetFilterModule
]);
이렇게격자를 줄 그룹을 나누고 필터를 설정할 수 있으며 격자의 모든 다른 핵심 기능을 사용할 수 있도록 설정합니다.기능 모듈 없음
사람들이 모듈을 사용할 때 보편적으로 걱정하는 것은 어떤 모듈을 포함해야 할지 모른다는 것이다.대부분의 경우 기능을 활성화했지만 필요한 모듈이 제공되지 않은 경우 AG Grid에서 경고합니다.예를 들어, 열 정의에
ModuleRegistry
플래그를 추가했지만 rowGroup
가 포함되지 않은 경우 다음 콘솔 경고가 표시됩니다. AG Grid: rowGroup is only valid with AG Grid Enterprise Module @ag-grid-enterprise/row-grouping - your column definition should not have rowGroup
이 규칙의 주요 예외는 RowGroupingModule
와SetFilterModule
이다.MenuModule
가 있는 경우 기본 필터는 간단한 텍스트 필터가 아닌 설정 필터로 바뀝니다.마찬가지로 SetFilterModule
가 있는 경우 격자를 마우스 오른쪽 버튼으로 클릭하면 브라우저 메뉴 대신 격자의 컨텍스트 메뉴가 표시됩니다.패키지에서 기능 모듈로 전환하는 경우 원하는 모든 기능을 사용하여 원하는 모듈이 누락되지 않았는지 확인합니다.
패키지: 모든 기능만 원합니다.
프로그램 패키지 크기를 최소화하는 것이 우선순위가 아니라면 AG Grid 패키지를 더 좋아할 것입니다.패키지
MenuModule
와 ag-grid-community
는 비교적 간단합니다.너의 소포.json 파일은 이 의존항만 포함합니다. (프레임워크 패키지 ag-grid-enterprise
, ag-grid-angular
, ag-grid-react
."dependencies": {
"ag-grid-community" : "^27.0.0",
"ag-grid-enterprise" : "^27.0.0",
}
유일한 다른 단계는 모든 enterprise 기능을 한꺼번에 사용할 수 있도록 enterprise 패키지를 가져오는 것입니다.import `ag-grid-enterprise`;
이렇게!패키지가 등록되므로 모듈을 등록할 필요가 없습니다.보시다시피 개발자의 체험을 더욱 간단하게 하고, 모든 새로운 기능이 응용 프로그램에 즉시 사용될 수 있음을 의미합니다.예를 들어 최근에 추가된Sparklines 기능은 구축 변경 없이 사용할 수 있으며 이는 패키지에 모듈을 추가해야 하는 모듈과 다르다.json 파일, 그것도 등록해야 한다는 것을 기억하세요.
모듈 및 번들 크기
우리의 예시에 구체적인 데이터를 제공하기 위해서, 우리는 두 개의 React 응용 프로그램에 상기 기능을 가진 격자를 설치했고, 하나는 사용 패키지, 하나는 사용 모듈을 설치했다.보시다시피 저희가 필요로 하는 기능만 포함하면 최종 응용 프로그램 패키지 크기가 감소
ag-grid-vue3
합니다.모듈
포장하다
% 감소
메인 파이프를 압축하다.js
300 kB
520 kB
43%
소포 크기
> [email protected] build
Creating an optimized production build...
File sizes after gzip:
520.0 kB build/static/js/main.3c41a45e.js
27.77 kB build/static/css/main.2e8b3952.css
1.79 kB build/static/js/787.20674135.chunk.js
모듈 번들 크기
> [email protected] build
Creating an optimized production build...
File sizes after gzip:
300.0 kB build/static/js/main.d50bef7e.js
28.1 kB build/static/css/main.f1ce7d1f.css
1.78 kB build/static/js/787.eaa7384c.chunk.js
AG Grid Bundle Size Github Repo를 사용하면 Angular, React, Vue에 사용되는 패키지 vs 모듈 응용 프로그램을 자유롭게 실험할 수 있습니다.물론 프로그램이 실현할 수 있는 축소는 필요한 기능의 수량에 달려 있기 때문에 패키지의 크기에 관심이 있다면 시도해 볼 만하다.
모든 모듈 패키지에 대한 주의사항
npm를 검색할 때, 소프트웨어 패키지
43%
와 @ag-grid-community/all-modules
를 만났을 수도 있고, 이것들이 무엇인지 알고 싶을 수도 있습니다.이것들은 뒤로 호환되기 위해 제공되었지만 더 이상 추천하지 않습니다.이 패키지는 다른 모든 모듈을 포함하는 패키지이지만 해당 패키지처럼 등록되지 않습니다.그것들은 아직 불안정하기 때문에 한두 가지 기능만 가져올 수 있어도 결국 모든 코드를 포함할 것이다.이러한 모듈 중 하나를 사용하는 경우에는 번들 크기에 영향을 주지 않고 번들로 전환하는 것이 좋습니다.또는 필요한 기능을 심사하고 그 모듈만 가져오고 등록하면 프로그램의 패키지 크기를 줄일 수 있습니다.
결론
우리는 응용 프로그램에만 필요한 AG 격자 기능을 포함해서 응용 프로그램 패키지의 크기를 줄이는 방법을 이미 알고 있다.이것은 확실히 더 많은 개발자의 노력이 필요하기 때문에 반드시 그것이'가치'한지 고려해야 한다. 그렇지 않으면 우리 소프트웨어 패키지의 단순성과 완전한 기능 집합을 누릴 수 있다.
자세한 내용은 설명서Build 섹션을 참조하십시오.
Reference
이 문제에 관하여(AG 메쉬:어플리케이션 패키지 크기 최소화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ag-grid/ag-grid-minimising-application-bundle-size-3pk8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)