项目结构。 May Angular 2 app文件夹直接位于wwwroot中?

时间:2016-10-03 21:05:07

标签: angular asp.net-core

我已经面对两种不同的方法,如何为Angular 2的ASP.NET Core项目组织项目结构:

  1. 在根项目文件夹中创建Angular app文件夹,然后在部署期间使用脚本/任务运行程序(如gulp)将app文件夹内容复制到wwwroot文件夹。 / p>

  2. 可以在wwwroot文件夹中直接创建Angular app文件夹。没有像gulp copy任务那样的其他行动。

  3. 对我而言,第一个选项被认为是更好的选项,因为您可以使用gulp复制任务更灵活地控制wwwroot最终内容。但过去几天我发现不同的例子采用了第二种方法。此外,aspnetcore-angular2 yo生成器还将app文件夹直接放到wwwroot,并且不使用gulp。那么什么是最好的prectice?

1 个答案:

答案 0 :(得分:1)

我不会直接将内容放入wwwroot中,将wwwroot排除在检查源代码管理(git / svn / etc。)之外是明智的,这样你就可以根据你的构建配置重新创建wwwdata的内容(即创建最小化文件或不尽量减少开发。

SCM中的垃圾更少,更容易发布,因为在构建/发布过程开始时总是从干净的wwwroot文件夹开始。

对于开发,你可以(也许应该保持你的SCM更干净),只需将编译好的文件保存到wwwroot中,并且只在项目的app文件夹(不在wwwroot中)中有TypeScript(* .ts)文件,然后你赢了每次更改文件的源代码后都需要运行gulp任务。

您需要设置两个选项。

  1. compileOnSavetrue,因此* .ts会在每次保存时被转换
  2. outDir设置为wwwroot/app,以便将已转换的* .js文件保存在wwwroot/app文件夹(以及相对于项目根目录的子文件夹)
  3. 这是我使用的示例tsconfig.json

    {
      "compileOnSave": true,
      "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "noEmitOnError": true,
        "noImplicitAny": false,
        "removeComments": false,
        "outDir": "wwwroot/app",
        "strictNullChecks": false
      },
      "exclude": [
        "node_modules",
        "wwwroot"
      ]
    }
    

    这种开发方式足以保存* .ts文件并重新加载网页(假设您的web项目在后台运行时会编写angular2代码,因为每次更改后都无需重新启动)。 / p>

    保留用于构建和发布的gulp任务或将库复制到wwwroot / node_modules或wwwroot / lib文件夹。

    我的项目结构类似于

    ProjectRoot
    | wwwroot
    | | app
    | | | components
    | | | services
    | App
    | | components
    | | services
    ...