Chuẩn bị phát triển #
Phiên bản JHipster: 7.9.4
Mã nguồn JHipster #
Khi có ý định tùy biến code, bạn cần khoanh vùng xem cần tác động đến các sub-generator nào trong
generator-jhipster
để sinh được code như ý muốn. Do đó bạn cần clone
generator-jhipster
về máy để:
- Tra cứu mọi thứ nhanh chóng.
- Sao chép code, đặc biệt là biểu mẫu về blueprint rồi sửa trên đó.
Ghi nhớ
Bạn phải checkout đến đúng tag release tương ứng với phiên bản JHipster đang cài ở máy. Tài liệu này đang dùng bản 7.9.4.
Nguyên lý sub-generator #
flowchart LR subgraph JHipster PrivateBase --> YeomanGenerator BaseGenerator --> PrivateBase BaseBlueprintGenerator --> BaseGenerator AppGenerator --> BaseBlueprintGenerator AwsClientGenerator --> BaseBlueprintGenerator AzureAppServiceGenerator --> BaseBlueprintGenerator SpringServiceGenerator --> BaseBlueprintGenerator OpenApiClientGenerator --> BaseBlueprintGenerator HerokuGenerator --> BaseBlueprintGenerator ClientGenerator --> BaseBlueprintGenerator EntityClientGenerator --> BaseBlueprintGenerator ServerGenerator --> BaseBlueprintGenerator EntityServerGenerator --> BaseBlueprintGenerator LanguagesGenerator --> BaseBlueprintGenerator EntityI18nGenerator --> BaseBlueprintGenerator end subgraph MyBlueprint MyClientGenerator --> ClientGenerator MyEntityClientGenerator --> EntityClientGenerator MyServerGenerator --> ServerGenerator MyEntityServerGenerator --> EntityServerGenerator MyLanguagesGenerator --> LanguagesGenerator MyEntityI18nGenerator --> EntityI18nGenerator end
Danh sách đầy đủ các generator tại đường dẫn:
generators\generator-list.js
Tổ tiên của mọi sub-generator là YeomanGenerator
, nên bạn có thể sử dụng API của Yeoman trong mọi sub-generator.
Ôn lại về Yeoman tại đây.
Nguyên tắc khi viết blueprint:
Khi cần tác động đến code sinh bởi sub-generator nào, bạn cần kế thừa sub-generator đó. Hãy nhìn các sub-generator của
MyBlueprint
ở diagram phía trên.
BaseGenerator #
Đường dẫn:
generators\generator-base.js
BaseGenerator
là lớp cha, mà như tên gọi, đóng vai trò lớp nền tảng của generator JHipster. BaseGenerator
đã thêm mới cũng như override nhiều method phục vụ cho nghiệp vụ của JHipster, mà các lớp con kế thừa có thể khai thác.
- Thông tin ứng dụng
getFrontendAppName
- Caching
addEntryToEhcache
- Build tool
addNpmScript
buildApplication
addMavenRepository
addMavenPlugin
addGradleProperty
addGradlePlugin
- Filesystem
writeFilesToDisk
editFile
Danh sách đầy đủ các method các bạn không cần nhớ, hãy tra cứu trực tiếp trong source của generator-jhipster
khi cần.
BaseBlueprintGenerator #
Đường dẫn:
generators\generator-base-blueprint.js
Lớp con của BaseGenerator
và là lớp cha trực tiếp của mọi sub-generator JHipster. Method quan trọng nhất trong lớp này là
composeWithBlueprints
. Mỗi lớp con trực tiếp đều gọi đến method này.
Priority #
Xem lại priority trong Yeoman.
JHipster mở rộng số hàng đợi ưu tiên so với Yeoman.
flowchart TD INI["**initializing**"] PRO["**prompting**"] CON["**configuring**"] COM["**composing**"] LOA["**loading**"] PRE["**preparing**"] DEF["**default**"] WRI["**writing**"] POW["**postWriting**"] INS["**install**"] POI["**postInstall**"] END["**end**"] subgraph JHipster priorities in Run loop INI --> PRO --> CON --> COM --> LOA --> PRE --> DEF --> WRI --> POW --> INS --> POI --> END end