前后端分离项目是如何请求一个页面的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ESP
V2EX    问与答

前后端分离项目是如何请求一个页面的?

  •  
  •   ESP 2021-09-07 20:54:46 +08:00 2131 次点击
    这是一个创建于 1525 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说请求网站首页 /home/login,而网站是前后端分离开发的,后端只提供接口,没有 /home/login 对应的处理函数。只有 /api/sys/login 这种接口。 那么当用户请求 /home/login 的时候,是走了什么流程呢?难道前端也有服务器吗?是请求前端服务器的函数,再发起接口请求吗?

    10 条回复    2021-09-08 11:05:33 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2021-09-07 21:05:55 +08:00
    ESP
        2
    ESP  
    OP
       2021-09-07 21:32:18 +08:00
    @cmdOptionKana 非常感谢
    learnshare
        3
    learnshare  
       2021-09-07 21:32:32 +08:00
    一般用 Nginx 处理。
    前端页面一律返回 index.html (因为只有一个页面入口),路径由前端路由处理(根据路径判断该显示什么)
    接口转发到后端服务

    参考 https://cli.vuejs.org/zh/guide/deployment.html#docker-nginx
    yeqizhang
        4
    yeqizhang  
       2021-09-07 21:57:22 +08:00 via Android
    异步呀
    ESP
        5
    ESP  
    OP
       2021-09-07 22:22:07 +08:00
    @learnshare 感谢,我了解到是先请求静态资源,再根据路由去匹配组件,由 ajax 发送 api 请求,拿到后端数据,最后完成页面的渲染。那么 nginx 在这里相当于什么角色呢?
    cydysm
        6
    cydysm  
       2021-09-07 22:45:49 +08:00 via iPhone
    @ESP 静态服务器
    Jacky23333
        7
    Jacky23333  
       2021-09-07 23:34:50 +08:00 via Android   3
    就 React 为例,包含了多种路由模式,在 HashRouter 下,你的网页 url 为 http://xxx.com/index.html/#/home/login,可以注意到,#后面的 path 已经不属于 url 中的 path 了,对后端而言,你只是访问了 index.html,而#后面的 path 是由 js 在前端中自行处理并重新渲染页面的,和服务端没有关系了~,当然 index.html 一般会省略掉,也就是网页 url 变成 http://xxx.com/index.html/#/home/login 。而 react 还支持另外一种模式 BrowserRouter,在这种模式下,你的浏览器 url 是 http://xxx.com/home/login,看起来很普通的 url 是不是?这种情况就需要前端提供 nodejs 服务器来进行解析了也就是你说到的情况。
    iseki
        8
    iseki  
       2021-09-08 04:17:58 +08:00 via Android
    不需要哦,nginx 不管啥路径一律返回 index 文件就行了,前端自己去维护路由
    murmur
        9
    murmur  
       2021-09-08 08:24:52 +08:00
    不习惯可以用 hash 模式,index.html?#/home/login 这样的形式,不需要改 nginx 配置
    waiaan
        10
    waiaan  
       2021-09-08 11:05:33 +08:00
    页面只有一个,根据 url 在当前页面渲染不同的内容。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5166 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 09:07 PVG 17:07 LAX 01:07 JFK 04:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86