ng serve命令适合生产吗?

时间:2019-05-21 15:39:18

标签: node.js angular

我正在使用Angular 7构建一个小型项目。

ng serve

,并启动了一个NodeJS服务器来处理请求,每个请求是否阻塞直到处理完成?我们正在尝试评估在生产环境中使用此功能与使用更传统的应用程序服务器相比效果如何。

4 个答案:

答案 0 :(得分:4)

运行build --prod生成一个“ ./dist”文件夹。

然后,您必须将其放在Web服务器上。

您可以使用Angular服务器端渲染(SSR)在node.js服务器上运行它。

您不应将ng serve用于生产,因为它使用的webpack-dev-server 仅用于开发。

Github link

答案 1 :(得分:1)

ng serve在后​​台运行Webpack开发服务器。

开发服务器

它是模仿生产构建并以易用的方式查看最终应用程序的。

如果没有该命令,则在每次更改后重新构建所有应用程序后,需要运行simplehttpserver之类的命令。

这是CLI所提供的一种便捷工具,可以简化您的开发,无论如何它都不适合生产模式。这是一台没有安全性,没有优化,没有性能,没有……的服务器,那么,没有任何东西可以使服务器成为服务器。默认情况下,它甚至不会使您的应用程序在本地主机之外也无法访问。对于生产模式不是那么有用...

因此,我永远不会重复永远不会,将此命令用于您的生产服务器。

答案 2 :(得分:0)

运行ng prod --build 它将在“ dist”文件夹中生成缩小代码。您必须上传此“ dist”文件夹的文件内容。它将为加载网页提供更快的响应。

有关更多详细信息,请参阅Angular deployment guide

答案 3 :(得分:0)

使用ng serve时,您将生成一个带有Web服务器的后端nodejs环境,以处理针对角度应用程序的请求。这对于在开发时重新加载和快速启动非常有用。但是不需要用于静态页面的此类资源。

最终,Angular只是一个框架,告诉您它对如何构建SPA的看法。无论使用哪种框架或库,最终都将以index.xxx,来自供应商或内部的Java文件和其他资源文件结尾。只有这些与浏览器加载网页有关。

因此,您需要构建自己的应用程序以生成将要提供的静态文件(即ng build --prod)。然后,您有2个不错的选择:

  1. 选择将在专用服务器(甚至容器)上提供文件(即nginx)的网络服务器。
  2. 将文件放在CDN提供程序后面。由于它们是静态的,因此将它们缓存并提供给浏览器,并根据其位置请求它们。

我会选择#2,而不是选择#2,因为它会强迫您保持不经常请求文件的运行资源(CPU,RAM,HDD)。我之所以这么说不是因为您的SPA将在客户端的浏览器中处理自身内部的所有路由(并且每天最少一次将请求刷新缓存)。