角度6-在项目之间共享通用代码的最佳做法

问题描述 投票:7回答:2

如何在项目之间共享代码?

我有两个应用程序是使用创建的:

ng generate application app1

ng generate application app2

我要projects/app1/src/app.module.tsprojects/app2/src/shared/common.module.ts导入模块

没有创建名为common或诸如此类的第三个项目的最佳实践是什么?创建一个项目/普通项目,或者仅创建一个名为common的文件夹,然后在此处放置TypeScript文件并导入它们。

angular6 angular-cli-v6
2个回答
14
投票

使用库项目!

ng generate library common

这会自动将路径别名添加到主tsconfig.json

  "common": [
    "dist/prod/common"
  ],
  "common/*": [
    "dist/prod/common/*"
  ]

将允许您引用common库项目中定义的模块和导出的组件,服务和管道。

例如,在您的app.module.ts中的任何一个:

import { SharedModule } from 'common';

@NgModule({
  imports: [
    SharedModule,
    ...
  ],
  declarations: [...],
  exports: [...]
  bootstrap: [AppComponent]
})
export class AppModule { }

在使用中的应用程序ng serve(例如,用于开发)中支持热重装的替代方法是从项目级别的通用public_api导入,如下所示:

import { SharedModule } from 'projects/common/src/public_api';

@NgModule({
  imports: [
    SharedModule,
    ...
  ],
  ...
})
export class AppModule { }

尝试一下,我已经大量使用它了,而且效果惊人!我强烈建议您阅读此文档:


0
投票

[如果大多数Apps共享通用代码,我将建议另一种使用动态路由和延迟加载模块的方法。在同一代码库中,您可以将所有特定于应用程序的代码添加到新模块中。然后,在环境文件中添加一个附加标志,并创建一个新的环境文件,以便可以通过实习配置--c将应用程序构建到其他捆绑软件中。有关更多详细信息,请查看此article

© www.soinside.com 2019 - 2024. All rights reserved.