前后端分离、SPA、SEO、SSR怎么选择?


类别:web开发   

发布时间:2019/01/28 15:14:14   更新时间:2020/07/31 19:48:49


相信多于一个人的web合作开发,很难放弃前后端分离所带来的好处吧:

前后端分工。后端做业务逻辑,前端做页面设计。前后端沟通,基于了标准的api文档,不会纠缠不清。

正是这种好处,使前后端走向专业化。

后端可以专注于后端框架中偏重restful的部分,比如djangorestframework、flask-restful等。在很多场景,不再需要使用后端模板,比如DTL、jinja2等。后端开发人员,总是要在做后端模板的时候,懂一点前端知识的情况,似乎可以避免。省下这些精力,可以专业的做后端的创新性服务。

前端可以使用自己的前后端分离框架,这种框架叫SPA,比如vue.js、react、angular等。这些框架的使用,大大增加的前端工程师的开发效率。同时有利于减轻服务器压力,也有利于多种不同终端类型的兼容。

总之,前后端分离,采用SPA框架,好处多的没法说。但是,有没有缺点呢?缺点就是,不利于SEO。

关于百度、谷歌对SEO支持的不同,一言难尽。但是,SPA框架对SEO不友好是实实在在的。那么,就出现新的解决这个问题的办法,那就是SSR。

SSR是一种SPA的补充技术。目的是既使用SPA框架,又能应对其对SEO不友好的缺点。比如vue.js的nuxt、react的next。这种技术似乎能保持SPA的优点,又克服SPA的缺点。似乎很完美。但是,给整个网站的开发,增加了很多负担。整个网站架构,变的很厚重,模块很多,知识和技能很多。如果需要复杂的功能和机制,需要改的地方很多。出了问题,也不好定位维护。

如果不想太厚重,其实可以不用SSR,只做部分SPA。部分SPA是我自己起的名词。意思是,我们把需要SEO的内容页面,用后端模板做。其它所有的功能页面,用SPA做。这样做,SPA的好处,是部分享用。也就是说,前后端部分分离、后端模板还要使用,后端人员是要懂一点简单前端知识,维护有数的几个页面。

 

到此为止,我们会不会觉得,概念有点多?那到底应该怎么选择呢?举例说明吧:

1、如果你是做一个非内容输出为主的网站,或者一个嵌入式设备的bs维护平台。你就毫无疑问的选择spa技术。不论是一个团队、或者哪怕是一个人。在开发速度、新功能迭代、去耦合度、代码维护、各阶段测试等方面都有好处。

比如,你用react+flask-restful即可。后端模板根本不需要使用。

2、如果你做一个几乎全是内容输出的网站。那你可以选择SSR。只要你团队或你个人对知识维度的厚度足够大,又不嫌弃麻烦,不怕长远来说各种东西的配合问题。

比如,你用vue+nuxt+node+djangorestframework。这个时候,node和django之间用restful接口。

3、如果你做一个内容输出为主的网站,也有其它功能。那你可以不用SSR。只设计的把少数几个页面用后端模板推送,其它的用SPA。这种方法,简单、够用、好用。

比如,你用vue+django(DTL)+djangorestframework。


本文网址:https://www.pyfield.com/blog/?id=2