具有Angular 4的平均堆栈应用

时间:2017-09-07 08:21:53

标签: javascript node.js angular express

我正在使用Angular 4制作一个MEAN堆栈应用程序。

我做了什么:

  1. 为我的Node / Express App创建了一个MVC目录结构。
  2. 创建了一个Node / Express服务器。
  3. 创建了一个基本API,使用前缀路径/api
  4. 表达
  5. 使用POSTMAN测试API
  6. 使用Angular-Cli在MEAN堆栈应用程序的根目录中创建角度项目。
  7. .angular-cli.json已将outDir属性更改为../public
  8. 将我的服务器文件更改为发送将所有其他请求(不是/api)发送到Angular应用
  9. 我的目录结构:

    enter image description here

    1. angular-src 文件夹包含angular-cli生成的角度应用
    2. app-api 文件夹包含执行所有CRUD操作的API。这是所有/api路由定向到的地方。
    3. app-server 文件夹只包含一个路径文件,该文件将所有/发送到角度应用(public/index.html
    4. 运行index.html 后,
    5. 公开文件夹是角度应用的ng build个文件所在的文件夹
    6. app.js 是我的节点/快速服务器所在的位置,并重定向传入的api请求
    7. 当我运行应用程序时,它可以运行。节点服务器将我的请求发送到带有index.html文件夹的Angular Apps public,并显示我的app.component.html模板。

      我的问题:

      • 我运行nodemon启动我的节点/快速服务器&然后导航到angular-src文件夹并运行ng build以设置我的角度应用。对于我来说,这个过程对我来说是一个更好的方法吗?

      • 每次我更改角度时,我都必须运行ng build 应用程序,以便它可以读取更改。有什么像nodemon但是 用于观察变化并自动重置的角度。

      • 我有2个package.json个文件。一次用于node / express,另一次用于angular。项目中是否只有1个package.json文件?

      • 该应用程序最终必须在 Heroku 上启动,目前我有 Procfile ,其中包含web: npm start。如何在heroku中管理角度4?我是否需要在Procfile中添加ng build命令?

      • Angular App& Node / express运行不同的端口(即端口3000和4200),还是应该都在一个端口上?

      • 我使用Angular 4实现的结构是否适用于MEAN App。

      我知道其中一些问题可能是基于意见的,但我正在寻找您的专业建议,以便在这些情况下考虑最佳做法

1 个答案:

答案 0 :(得分:1)

这是我的两分钱(我在生产模式下也在Heroku上运行了一个应用程序,我遵循了每个Heroku教程和最知名的教程):

  • 您必须每次都运行ng build。构建允许您缩小代码,而ng服务不会。我不知道你怎么能自动完成它,但如果你正在使用Heroku,只需按下你的仓库即可建立你的项目(如果你当然使用正确的命令)

  • 是的,您必须在每次更改时重建。如果您使用的是应用程序,则必须针对您实施的每种语言运行ng build。因此,考虑到时间(对我而言,2种语言= 6分钟),你不应该自动制作它

  • 我只保留一个package.json我放置所有依赖项(后面和前面)

  • 我对Heroku的构建命令如下:

    "postinstall": "npm run build-i18n",
    "i18n": "ng xi18n --output-path src/i18n --out-file messages.xlf",
    "build-i18n:fr": "ng build --output-path=dist/fr --aot --prod --bh /fr/ --i18n-file=src/i18n/messages.fr.xlf --i18n-format=xlf --locale=fr",
    "build-i18n:en": "ng build --output-path=dist/en --aot --prod --bh /en/ --i18n-file=src/i18n/messages.en.xlf --i18n-format=xlf --locale=en",
    "build-i18n": "mkdir dist && npm run build-i18n:en && npm run build-i18n:fr"
    

postinstall由Heroku发布,它为两种语言启动两种版本。

  • 您应该有不同的端口。事实上,在同一个端口上启动它们是不可能的。

  • 您的项目结构可以随意使用。这取决于个人喜好。但我的建议是遵循John Papa的指导方针。