前后端分离,同构,部署问题?

问题描述:

这段时间在做一个项目,Web方面主要用的是NodeJs Koa框架、React、React-router,redux等。

前端React-create-app 生成项目,build生成静态文件。
NodeJs Koa 提供Api。

现在主要是部署存在的问题:

网上看到有这么几种办法:

  1. nginx

    我的理解是 nginx静态服务器,主要用于用户请求到静态资源,
    node单独部署,只用于提供APi。
    简单说就是前后端单独部署。

  2. 同构

    Node直接返回页面。
    这样的话,有两个问题
    (1)怎么区分请求是api数据接口 还是请求的是页面。
    (2) 路由问题,是React-router 控制路由还是node。

  3. 将React打包后的文件当成静态资源返回。

    当用户请求主页的时候,直接返回打包后的index.html,
    简单合并到一个项目。

**对这会现在有点模糊,
对了,主要问题是想问下,前后端分离项目怎么发布,
前端大白。
最好能详细说明下,感谢。**

分割线---------------------------------------------------------

补充:

由于我现在这个项目有点简单。只要能跑起来。
所以不打算用nginx

怎么能简单的整合,使用pm2 让跑起来呢、

前端build 成一些静态资源文件。

我在node端 怎么写呢?

clipboard.png

这样好像是不行的。

clipboard.png

当做静态资源好像也不行,所有的请求都会返回这个主页面。

这块应该怎么写,或者有什么例子么?

阅读 2.9k
2 个回答
  1. 如果不需要SSR的话选1,需要的话选2。
  2. 用请求路径来区分是api还是页面。
  3. 看你需要的是SPA还是多页面应用来决定是前端路由还是后端路由。

谢邀!
我谈一些个人的看法,大家探讨。
要讨论如何部署,其实是讨论部署后效率更高(同时支持的用户更多、响应更快)以及开发变动时改动更方便这两个可能冲突的需求。
而这些需求又同应用实际需要以及实现有关。

如果能够保证所有内容都静态化,且前端实现路由(去请求各种资源),则肯定方案1效率最高,毕竟nginx是专业提供静态资源服务的。

对于你2方案中的疑问,其实nodejs中是通过默认路由的方式可以处理的,即不会出现不能区分api请求和文档请求的情况,起码一个好的正确的服务框架肯定是需要做到这一点的。当然,这会带来文档请求效率问题(毕竟nodejs服务不是专业干这个的,只能说可用而已,也也是很多大的应用通过域名等区分不同资源、服务的原因)。

3方案不是不可以,但要根据实际情况分析是否恰当。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题