平均堆栈应用与angular4

我正在用Angular 4做一个MEAN栈应用程序。

我做了什么:

  1. 为我的Node / Express应用程序创build了一个MVC目录结构。
  2. 创build了一个Node / Express服务器。
  3. 创build一个基本的API,其中带有前缀为/apipath
  4. 使用POSTMANtestingAPI
  5. 使用Angular-Cli在MEAN栈应用程序的根目录下创build一个angular度项目。
  6. .angular-cli.json outDir属性更改为../public
  7. 将我的服务器文件更改为发送将所有其他请求(不会去/api )发送到Angular应用程序

我的目录结构:

在这里输入图像说明

  1. angular-src文件夹包含由angular-cli生成的angular度应用程序
  2. app-api文件夹包含执行所有CRUD操作的API。 这是所有/api路线被引导到的地方。
  3. app-server文件夹只包含一个path文件,它将所有/发送到angular度应用程序( public/index.html
  4. 公用文件夹是angular色应用程序的index.html文件在运行ng build
  5. app.js是我的节点/快递服务器居住和redirect传入的API请求

当我运行该应用程序的作品。 节点服务器将我的请求发送到Angular Apps index.html与公用文件夹,并显示我的app.component.html模板。


我的问题:

  • 我运行nodemon来启动我的节点/快递服务器,然后导航到angular-src文件夹并运行ng build来设置我的angular度应用程序。 这个过程似乎对我来说是相当长的是什么更好的方式来实现这一目标?

  • 另外,我必须在每次更改angular度应用程序时运行ng build,以便能够读取更改。 有没有像nodemon东西,但angular度来看,自动更改和重置。

  • 我有2个package.json文件。 一次为节点/expression和另一个angular度。 项目中是否应该只有一个package.json文件?

  • 该应用程序终于必须在Heroku上启动,目前我有一个包含web: npm startProcfile web: npm start 。 如何在heroku中pipe理angular 4? 我是否需要将ng build命令添加到Procfile?

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

  • 我已经实现了适合使用Angular 4的MEAN App的结构。

我知道这些问题中的一部分可能是基于意见的,但我正在寻找你的专业意见,认为在这些情况下最佳做法是什么。

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

  • 你必须每次运行ng build 。 构build允许你缩减你的代码,而服务不会。 我不知道如何使它自动化,但如果你使用Heroku,只要推到你的回购将build立你的项目(如果你使用正确的命令当然)

  • 是的,你必须重build每一个变化。 如果你在你的应用程序中,你将不得不为你实现的每种语言运行ng build 。 所以你不应该把它自动化,考虑到需要的时间(对我来说,2种语言= 6分钟)

  • 我只保留一个package.json ,把所有的依赖项(back&front)

  • Heroku的构build命令如下:

     "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" 

Heroku启动postinstall ,启动两种语言的版本。

  • 你应该有不同的端口。 事实上,在同一个港口推出它们是不可能的。

  • 您的项目结构可以随心所欲。 这取决于个人喜好。 但我的build议是遵循约翰·帕帕的指导原则。