在 Angular 應(yīng)用程序和庫中,secondary entry points(次要入口點)是指與主入口點不同的導(dǎo)出和發(fā)布方式。主入口點是指在 package.json 文件中聲明的默認的入口點,它通常包含了該庫的主要功能和 API。而 secondary entry points 則是在 Angular library 項目中定義的額外的入口點,它們可以導(dǎo)出不同的 API,以適應(yīng)不同的使用場景。
在 Angular library 項目中,可以使用 ng-packagr 工具來創(chuàng)建 secondary entry points。每個次要入口點都是一個獨立的文件夾,它包含了一個單獨的 tsconfig.lib.json 文件、一個獨立的 Angular 模塊和一個 index.ts 文件。index.ts 文件是次要入口點的入口文件,它導(dǎo)出了該次要入口點所定義的所有符號。
通過創(chuàng)建 secondary entry points,開發(fā)人員可以將庫的代碼組織成更小、更專業(yè)化的模塊,以便更好地滿足不同的使用場景。例如,一個大型的 UI 庫可以將不同的 UI 控件組織成不同的 secondary entry points,以便開發(fā)人員可以僅僅使用他們所需要的那部分功能。此外,secondary entry points 還可以提高代碼的可重用性,因為它們可以被其他庫或應(yīng)用程序所使用。
SAP Spartacus 是一個基于 Angular 的電商平臺解決方案,它包含了多個庫和模塊,其中就包括一些 secondary entry points。以下是一個具體的例子,來自于 Spartacus 庫中的 storefrontlib 庫:
在 Spartacus 3.0 的 storefrontlib 庫的根目錄下,有一個名為 src 的文件夾,其中包含了該庫的主要模塊 StorefrontModule。此外,還有一個名為 cms-components 的文件夾,它是 storefrontlib 庫的一個 secondary entry point,用于導(dǎo)出與 CMS(內(nèi)容管理系統(tǒng))相關(guān)的組件和服務(wù)。在 cms-components 文件夾下,有一個名為 cms-components.module.ts 的文件,它定義了 CmsComponentsModule 模塊,該模塊導(dǎo)出了與 CMS 相關(guān)的多個組件和服務(wù)。