创建节点 angular 应用
Creating a node angular app
我正在创建节点 angular 应用程序。正如我所确定的,有两种方法。
作为单个应用程序。所以它是一个节点项目,其中包含 angular 文件夹(客户端)。所以文件结构是advance.
作为两个独立的应用程序。所以angular app和node app是分开的,angular app使用node app的url获取数据。这里的文件结构更容易理解和编码。
谁能告诉我什么是更好的方法。
我假设您谈论的是典型的 MEAN 堆栈 Web 应用程序,前端是 Angular,后端是带有 Express 和数据库的节点 (Mongodb ), 或任何类似的库。
没有更好的办法。这真的取决于你的应用程序。您可以通过多种方式为您的应用提供服务。你应该构建你的 angular 应用程序并获取你的静态文件并从你喜欢的任何地方提供它们。
您可以通过用作后端的同一台服务器为它们提供服务。只需放置文件节点的静态文件夹并告诉节点为它们提供服务。这是一个很好的快速方法,而且效果很好。
您可以为前端创建一个单独的服务器,并使用更强大的文件服务器,例如 nginx 或 apache,甚至可能是另一个节点服务器。如果您有两台服务器并且想从后端服务器上分担前端的带宽负载,这很好。
如果你的前端是Angular2你可以使用其内置的精简服务器(通过发出ng serve
) .这主要用于开发,对您的服务器来说是一个很大的开销,但它可以工作。您可以在单独的服务器上执行此操作。
您在评论中提到您关心其他开发人员了解您的项目。可能我会选择 jitender。如果您想将项目从一个服务器移动到另一个服务器,则没有理由合并代码并将它们分开可能是一件好事。因此,例如,如果您从同一台后端服务器为前端提供服务,但后来决定添加一个专用的前端服务器。
此外,有时您还想在原始前端之外添加一个单独的前端。例如,如果你想添加一个移动应用程序,它会与同一个后端服务器通信。没有理由让相同的后端服务器为 Angular 应用程序提供服务。
发展。
Node 和 Angular 项目应该分开。每个项目都有自己的 package.json。使用配置的 REST 端点启动 Node 应用程序(例如,在端口 8000 上)——它将返回 JSON.
使用 Angular CLI ng serve 启动客户端,这将在端口 4200 上启动开发服务器。要从运行在 4200 上的 Angular 应用程序访问端口 8000 上的数据服务器,您您需要配置一个小的 proxy-conf 文件,这样浏览器就不会给您 CORS 错误。例如,如果您的 Node 应用程序有一个端点 /api/products,请在您的 Angular 项目中创建一个文件 proxy-conf.json:
{
"/api": {
"target": "http://localhost:8000",
"secure": false
}
}
现在您可以继续Angular针对开发服务器编码,但数据将来自节点服务器:
ng serve --proxy-config proxy-conf.json
部署。
使用 Express API,在您的节点服务器上定义将包含静态内容(您的 Angular 包和资源)的文件夹。
使用 ng build 构建包并将 dist 目录的内容复制到节点应用程序上的静态目录中。
两者都有自己的优势,但如果应用程序很重,请分别创建客户端应用程序(angular)和服务器应用程序(express 或 koa js)。在维护和扩展方面,客户端和服务器应用程序的分离总是更好
我正在创建节点 angular 应用程序。正如我所确定的,有两种方法。
作为单个应用程序。所以它是一个节点项目,其中包含 angular 文件夹(客户端)。所以文件结构是advance.
作为两个独立的应用程序。所以angular app和node app是分开的,angular app使用node app的url获取数据。这里的文件结构更容易理解和编码。
谁能告诉我什么是更好的方法。
我假设您谈论的是典型的 MEAN 堆栈 Web 应用程序,前端是 Angular,后端是带有 Express 和数据库的节点 (Mongodb ), 或任何类似的库。
没有更好的办法。这真的取决于你的应用程序。您可以通过多种方式为您的应用提供服务。你应该构建你的 angular 应用程序并获取你的静态文件并从你喜欢的任何地方提供它们。
您可以通过用作后端的同一台服务器为它们提供服务。只需放置文件节点的静态文件夹并告诉节点为它们提供服务。这是一个很好的快速方法,而且效果很好。
您可以为前端创建一个单独的服务器,并使用更强大的文件服务器,例如 nginx 或 apache,甚至可能是另一个节点服务器。如果您有两台服务器并且想从后端服务器上分担前端的带宽负载,这很好。
如果你的前端是Angular2你可以使用其内置的精简服务器(通过发出
ng serve
) .这主要用于开发,对您的服务器来说是一个很大的开销,但它可以工作。您可以在单独的服务器上执行此操作。
您在评论中提到您关心其他开发人员了解您的项目。可能我会选择 jitender。如果您想将项目从一个服务器移动到另一个服务器,则没有理由合并代码并将它们分开可能是一件好事。因此,例如,如果您从同一台后端服务器为前端提供服务,但后来决定添加一个专用的前端服务器。
此外,有时您还想在原始前端之外添加一个单独的前端。例如,如果你想添加一个移动应用程序,它会与同一个后端服务器通信。没有理由让相同的后端服务器为 Angular 应用程序提供服务。
发展。
Node 和 Angular 项目应该分开。每个项目都有自己的 package.json。使用配置的 REST 端点启动 Node 应用程序(例如,在端口 8000 上)——它将返回 JSON.
使用 Angular CLI ng serve 启动客户端,这将在端口 4200 上启动开发服务器。要从运行在 4200 上的 Angular 应用程序访问端口 8000 上的数据服务器,您您需要配置一个小的 proxy-conf 文件,这样浏览器就不会给您 CORS 错误。例如,如果您的 Node 应用程序有一个端点 /api/products,请在您的 Angular 项目中创建一个文件 proxy-conf.json:
{
"/api": {
"target": "http://localhost:8000",
"secure": false
}
}
现在您可以继续Angular针对开发服务器编码,但数据将来自节点服务器:
ng serve --proxy-config proxy-conf.json
部署。
使用 Express API,在您的节点服务器上定义将包含静态内容(您的 Angular 包和资源)的文件夹。
使用 ng build 构建包并将 dist 目录的内容复制到节点应用程序上的静态目录中。
两者都有自己的优势,但如果应用程序很重,请分别创建客户端应用程序(angular)和服务器应用程序(express 或 koa js)。在维护和扩展方面,客户端和服务器应用程序的分离总是更好