簡體   English   中英

是否可以不使用npm導入Angular庫?

[英]is It possible to import an Angular library without use npm?

我收到管理部門的要求,我們有一個Angular應用程序,我們正在嘗試在一個單獨的項目中構建一個新應用程序,但我們希望將其集成到主應用程序中。 目標是要有一個獨立的新應用程序,可以與主應用程序獨立開發和部署。

我考慮過創建庫項目的選項,以便我們可以導入到主應用程序中,並且如果要使用npm軟件包分發應用程序庫也可以使用,但是這不允許我們獨立部署新應用程序而不必部署主應用程序。

有沒有辦法以我可以執行的任何方式將單獨的應用程序(角度)導入到主應用程序(角度)中。

我試圖將庫的dist文件夾部署到Github,並將其導入angular-cli.json中的腳本中,但是沒有用。

任何幫助將不勝感激。

有兩種選擇,但是沒有“完美”的選擇,因為您必須確切地確定要使用的路線等,看看是否可行。 例如,如果您想要SPA,則兩個應用程序都將嘗試處理“ /”。

我將以一個示例為例,盡管您在文檔中有一個主應用程序,例如Tour of Heroes應用程序,但是您想添加一個Wiki應用程序。 根據您的規范,我假設您希望wiki應用程序在主應用程序中運行時位於/wiki下,並且位於/自身下。 例如,當Wiki獨立運行時,主應用程序中的主應用程序/wiki/pages/tutorial將與/pages/tutorial相同。

選項1:將應用程序完全分開,在主應用程序中使用編譯的Wiki

我認為這就是您想要做的。 這些應用程序將不會共享任何服務或組件,並且會分別進行編譯。 我能想到的唯一方法是將它們編譯成單獨的應用程序,並將其中一個托管在另一個應用程序的子文件夾中。 您的服務器無法重寫所有網址,但是取決於您應該能夠將/wiki路由到第二個應用程序的類型。 您將必須在SPA中捕獲指向“ / wiki”的所有鏈接,並強制重新加載整個頁面,以便瀏覽器選擇Wiki的index.html。 基本href也可能有一些問題需要克服,但應該可以解決。

選項2:在一個倉庫中分離應用

此頁面對此進行了很好的概述。 Angular的最后幾個版本使您可以在同一文件夾中創建單獨的模塊和應用程序。 無恥地復制:

App1模塊

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
@NgModule({})

App1SharedModule

export class App1SharedModule{
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: AppModule,
      providers: []
    }
  }
}

組合應用

imports: [
  BrowserModule,
  AppRoutingModule,
  App1SharedModule.forRoot(),
  App2SharedModule.forRoot()
],

每個人都可以單獨運行,但也可以一起運行。 不過,您的路由可能會受阻,因此您必須為兩個應用程序創建一個子路由,這些應用程序可以單獨運行,也可以與相同的URL一起運行。 即,即使單獨運行,第一個應用程序中的所有內容都將位於app1/下。

選項3:圖書館

您可以使用Wiki服務和組件創建一個庫 然后,您可以將npm將其安裝到您的主應用程序和骨架應用程序中,以使Wiki自行運行。 你可以暴露Routes對象,並使用forChild在主應用程序,並forRoot在您的wiki應用程序。

如果其他人不知道如何執行此操作,在這種情況下,我可以使用Github Tag解決此問題。

我跑了: npm install github:org/lib

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM