【发布时间】:2018-02-15 21:36:18
【问题描述】:
我正在使用 Angular 4 制作 MEAN 堆栈应用程序。
我做了什么:
- 为我的 Node/Express 应用程序创建了一个 MVC 目录结构。
- 创建了一个 Node/Express 服务器。
- 创建了一个基本 API,它带有前缀
/api的 express 路径 - 使用 POSTMAN 测试 API
- 使用 Angular-Cli 在我的 MEAN 堆栈应用程序的根目录中创建一个 Angular 项目。
- 在
.angular-cli.json内将outDir属性更改为../public - 更改了我的服务器文件以将所有其他请求(不会发送到
/api)发送到 Angular 应用程序
我的目录结构:
-
angular-src 文件夹包含
angular-cli生成的angular应用 -
app-api 文件夹包含我执行所有 CRUD 操作的 API。这是所有
/api路由都指向的地方。 -
app-server 文件夹仅包含一个路由文件,它将所有
/发送到 Angular 应用程序 (public/index.html) -
public 文件夹是 Angular 应用程序的
index.html文件在运行ng build后所在的位置 - app.js 是我的 node/express 服务器所在的位置并重定向传入的 api 请求
当我运行应用程序时,它可以工作。节点服务器将我的请求发送到带有public 文件夹的Angular Apps index.html,并显示我的app.component.html 模板。
我的问题:
我运行
nodemon来启动我的节点/express 服务器,然后导航到angular-src文件夹并运行ng build来设置我的角度应用程序。这个过程对我来说似乎很长,有什么更好的方法来实现这一点?另外,我每次更改 Angular 时都必须运行 ng build 应用程序,以便它可以读取更改。有没有像
nodemon这样的东西但是 用于观察变化并自动重置的角度。我有 2 个
package.json文件。一次用于节点/快递,另一次用于角度。一个项目中应该只有 1 个package.json文件吗?应用程序最终必须在 Heroku 上启动,目前我有一个包含
web: npm start的 Procfile。如何在heroku中管理角度4?我需要在 Procfile 中添加ng build命令吗?Angular App 和 Node/express 应该运行不同的端口(即端口 3000 和 4200)还是应该都在一个端口上?
我实现的结构是否适合使用 Angular 4 的 MEAN 应用程序。
我知道其中一些问题可能是基于意见的,但我正在寻求您的专业建议,以了解在这些情况下什么被认为是最佳实践。
【问题讨论】:
-
对于开发,您可以使用
proxy.conf.json文件进行端口转发并使用npm-run-all,如本答案中所述,使用单个命令运行它 - stackoverflow.com/a/45743298/4365626
标签: javascript node.js angular express