我建议从一个简单的项目开始,尝试找到一些你想在组织中使用的最佳实践。就像Angular本身一样,Nx Workspace是有意见的,但只限于某种程度。您仍然有责任决定如何将代码分成逻辑单元。
需要记住的一个主要事项是,Nx使用“应用程序”和“库”的概念。理想情况下,“应用程序”非常小,大部分(如果不是全部)实际功能都在“库”中。在Angular中,这通常意味着您需要延迟加载存在于libs中的组件。
关于如何构造libs的结构,有不同的方法可以采取。您可以阅读
this blogpost以获得一些想法。
此外,请记住,工作在单个存储库中并不意味着您必须将所有公司代码放入其中。例如,我与许多不同的客户项目合作,为每个客户项目创建Nx Workspace更加合理。然后,如果我需要在项目之间共享代码,我会确保将其发布到npm,并将其视为第三方库。
我该如何做到这一点?我需要使用NX cli来创建一个空白应用程序,然后将所有代码复制到空白应用程序中吗?然后,我们需要npm安装此新项目所需的所有包吗?
是的,我个人会从完全空白的状态开始。
您可以通过使用“empty”预设创建一个Nx Workspace,并确保选择Angular CLI来实现。
$ yarn create nx-workspace <project-name>
接下来,进入您的目录并添加Nrwl Angular包:
$ cd <project-name>
$ yarn add -D @nrwl/angular
从那时起,您可以这样生成应用程序和库:
ng g @nrwl/angular:app <app-name>
ng g @nrwl/angular:lib <lib-name>
你现在可以将之前项目中的代码移动到
lib
文件夹,并从
app
中引用该代码。如果你已经有了一个在Angular中运作良好的现有模块结构,你可以为每个模块创建一个库。希望这能帮到你。