Chuẩn bị phát triển

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