前后端分离是什么意思? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coolair
V2EX    问与答

前后端分离是什么意思?

  •  
  •   coolair 2016-12-31 00:10:29 +08:00 7444 次点击
    这是一个创建于 3213 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我原来一直以为就是前端写好 html 然后扔给后端,后端套上去就算是前后端分离了,比如, Python 下的 Web 框架基本就是这样, Jinja2 。
    后面看到一哥们说他写了个前后端分离的网站,后端全部是 restful ,然道,真正的前后端分离就是后端不写页面了?全部提供 API ,然后给前端,前端用 React 、 Vue 之类的框架去调数据?
    15 条回复    2017-01-01 10:15:33 +08:00
    holyghost
        1
    holyghost  
       2016-12-31 00:12:34 +08:00   1
    总觉得这是一种因为前端工作量不饱和而产生的技术。
    showonne
        2
    showonne  
       2016-12-31 00:34:13 +08:00
    是的,前端只负责视图的渲染模板和样式,后端负责为前端提供 API 。
    zdkmygod
        3
    zdkmygod  
       2016-12-31 00:51:49 +08:00
    类似客户端程序,前端发起 Ajax 请求直接调用后端 API 。
    kingcos
        4
    kingcos  
       2016-12-31 01:14:10 +08:00 via iPhone
    最近刚好有在学习……
    后端只负责提供 RESTful API ,
    前端可以用 Ajax 调用,
    移动端也可以调用。
    我在写一个课设,
    前端准备用 Vue.js ,后端 Spring Boot … 移动端未来再写
    可我总是感觉前端东西太多太活了……不好速成……
    不过这样分离的挺好的……虽然这个课设全都是我一个人写……
    但我也讨厌 JSP 这种 HTML 里嵌套 Java 代码。。
    Tink
        5
    Tink  
    PRO
       2016-12-31 03:46:19 +08:00 via iPhone
    gdtv
        6
    gdtv  
       2016-12-31 06:17:02 +08:00
    前后端分离, SEO 怎么办?
    bigzhu
        7
    bigzhu  
       2016-12-31 08:11:18 +08:00 via Android   1
    @gdtv vuejs 有 ssr 模块,也有一些其他方案。
    caixiexin
        8
    caixiexin  
       2016-12-31 09:28:58 +08:00
    简单的说就是原来的页面渲染工作丢给前端去做。
    以前页面渲染的工作是服务端完成的,由后端语言的页面模板( jsp 、 jinjia2 什么的)+数据渲染 html 。
    前后端分离后,变成浏览器从服务端取回 restful api 数据(一般是 json ),再前端模板渲染成 html 。
    SEO 嘛,好像没有很好的解决方案? 所以一般完全使用前后端分离的都是单页应用( SPA ),电商、门户之类的,还是用后端渲染的多。
    hoichallenger
        9
    hoichallenger  
       2016-12-31 09:54:56 +08:00 via Android
    我一直想知道,前后端分离用英语怎么说。
    viko16
        10
    viko16  
       2016-12-31 10:04:29 +08:00 via Android
    @gdtv 在 node 端做
    ChefIsAwesome
        11
    ChefIsAwesome  
       2016-12-31 10:11:50 +08:00
    就是后端给 api ,客户端渲染。完全的前后端分离也是一步一步发展过来的。

    1.就算是以内容为主的网站,内容也已经是客户端渲染的了:
    想想现在大部分网站上面,内容列表的翻页、滚动加载,是不是都是客户端 ajax 去调接口,然后在客户端渲染的?主体内容都是客户端渲染的了,后端光渲染个导航栏什么的,意义也不大。

    2.后端只能提供数据,不能实现交互。
    比方要实现一个下拉选择框,如果是后端渲染,那么实现是这样的:后端生成下拉框的内容,这部分内容在页面加载的时候是被隐藏的。客户端在页面加载之后,读取这部分内容,再通过 js 生成下拉框。这样的过程里,后端只起到了提供数据的作用,它是在页面里渲染了 html 还是渲染了一个 json 没有区别。交互性越强的网页,需要通过 js 生成的组件越多,与其后端往页面里头塞数据,不如直接客户端通过 api 去请求数据了。
    changwei
        12
    changwei  
       2016-12-31 10:24:45 +08:00 via Android
    我觉得楼主可以和一些从未接触过后端开发的前端一起做一个小项目,然后就能理解为什么要前后端分离了。

    很多时候套模板引擎,修改 url ,各种杂事情都要交给后端来做,如果需求改来改去,你会爆炸的。
    learnshare
        13
    learnshare  
       2016-12-31 10:27:52 +08:00
    murmur
        14
    murmur  
       2016-12-31 10:29:01 +08:00
    你知道就行,分离不分离,前端都要兼职一点后端的工作
    前端你做完就需要 ajax 接口了是吧。。那接口顺便你也写了好了
    这东西是方便维护 可以复用接口 但是并不减少前端的工作
    phpdever
        15
    phpdever  
       2017-01-01 10:15:33 +08:00
    楼主,你理解的叫前后端分开,而不是前后端分离。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2850 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:37 PVG 15:37 LAX 00:37 JFK 03:37
    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