我正在创建一个节点角应用。正如我所指出的,有两种方式。
作为一个应用程序。所以它是一个节点项目,而角形文件夹(客户端)就在它里面。所以文件结构是先进的。
作为两个独立的应用程序。因此,角度应用程序和节点应用程序是独立的,角度应用程序使用节点应用程序的URL获取数据。这里的文件结构更容易理解和编码。
任何人都可以向我解释什么是更好的方式。
答案 0 :(得分:1)
我假设您正在谈论典型的MEAN堆栈Web应用程序,前端是Angular,后端是Node with Express和数据库(Mongodb),或任何类似的库
没有比这更好的方法了。这真的取决于你的应用程序。您可以通过多种方式为自己的应用提供服务。您应该构建角度应用程序并获取静态文件,并在任何您喜欢的地方提供它们。
您可以通过您用作后端的同一台服务器来提供服务。只需放置文件节点的静态文件夹并告诉节点为它们提供服务。这是一个很好的快速方式,并且运作良好。
您可以为前端创建单独的服务器,并使用更强大的文件服务器,如nginx或apache,甚至可能使用其他节点服务器。如果您有两台服务器并且希望从后端服务器中带走前端的带宽负载,那就太好了。
如果您的前端是Angular 2 ,您可以使用其内置的lite服务器(通过发出ng serve
)。这主要用于开发,并且在您的服务器上是一个很大的开销,但它可以工作。您可以在单独的服务器上执行此操作。
您在评论中提到您关心其他开发人员了解您的项目。可能我会和jitender一起去。如果您想将项目从服务器移动到另一个服务器,那么您没有理由将这些代码组合在一起并保持它们分离可能是一件好事。例如,如果您从同一个后端服务器为前端提供服务,但后来又决定添加一个专用的前端服务器。
有时,您还需要在原件旁边添加单独的前端。例如,如果要添加移动应用程序,它将与同一后端服务器通信。没有理由让相同的后端服务器为Angular应用程序提供服务。
答案 1 :(得分:1)
发展。
Node和Angular项目应该是分开的。每个项目都有自己的package.json。使用配置的REST端点启动节点应用程序(例如,在端口8000上) - 它将返回JSON。
使用Angular CLI ng serve启动客户端,该服务器将在端口4200上启动开发服务器。要从运行在4200上的Angular应用程序访问端口8000上的数据服务器,您需要配置一个小型代理配置文件所以浏览器不会给你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构建bundle并将dist目录的内容复制到节点app上的静态目录中。
答案 2 :(得分:1)
两者都有自己的优势,但如果应用程序很重,请分别创建客户端应用程序(角度)和服务器应用程序(express或koa js)。在维护和扩展方面,客户端和服务器应用程序的分离总是更好