现在所谓的前后端分离,本质是不是都在组织和解析 json ?

2020-04-07 14:35:26 +08:00
 libasten

本人属于 web 开发新人,最近接触一些内容,有些认知,不知正确与否。

现在所谓的前后端分离,本质是不是都在组织和解析 json ? 或者说序列化和反序列化 json 显得更专业一点?

前端,是不是本质还是读取 api 出来的 json,然后控制显示隐藏啥的。

与后台交互这块,前端处理好 json,一把推给 api 。

而现在流行的啥框架,vuejs 和 angular 之类的,是不是把原生 js 做了一些封装,可以“便捷”地进行 json 处理,甚至有些时候 json 对前端开发者都是一种“不可见”状态。

而早期的 jQuery 和原生 js 都能实现这样的功能,无非是繁琐一些。

不知道理解的对不对?

4466 次点击
所在节点    问与答
34 条回复
santom
2020-04-07 16:29:51 +08:00
XMLHttpRequest @libasten
windychen0
2020-04-07 16:32:55 +08:00
@libasten 那你还不考虑用 vue 那些框架,数据双向绑定香的一批
windychen0
2020-04-07 16:42:31 +08:00
前后端分离来说,本质上就是由前端绘制不变的部分,然后向后端提供或者请求会变的数据,所以其实做前后端分离的其实只要会 ajax 和基本的 js,html 就行了,然后 vue 框架这类,不仅仅是便捷的处理数据,更多的是代表一种设计理念,让前端开发从不停的更改 dom 和获取表单中解脱出来,同时组件化和 solt 插槽之类的就是“高内聚,低耦合”的实现。
lewinlan
2020-04-07 18:07:30 +08:00
为什么楼上连『前后端分离』这个概念也有得黑?
术业有专攻,前端专注表现,后端专注性能,这是行业发展对效率的自然追求。
什么叫为了增加就业??您是找不到工作了还是新知识学不会了?
whatisnew
2020-04-07 18:18:32 +08:00
response content-type: application/json;
response content-type: text/html 的区别。

直接 response text/html 少了到少一次 http request 。但是增加了大型项目维护的复杂度。
woodensail
2020-04-07 18:26:59 +08:00
@libasten react.js 比较特殊,vue 或 ng 都是完整的 MVX 类型框架。
而 react.js 则只负责 View 层工作,其他部分的工作则交由生态链内的其他库完成,比如 Redux
areless
2020-04-07 18:29:38 +08:00
js 被视为不安全并且不启用的 ie4 时代也有前端这个职业。那时候前端主要负责 view 层。模板分离。做图表什么都是后端的事情。现在前端把活全揽了,后端天天坐在办公室嗑瓜子别提有多开心。
Tink
2020-04-07 18:31:47 +08:00
主要是为了解耦,让前端把页面一直固定不变的东西画出来,后端去更新那些变化的数据。至于 json 只是格式,xml 也可。
woodensail
2020-04-07 18:42:43 +08:00
然后,讲下关于 MVVM/MVP/MVC 等 MVX 类型框架为什么会流行起来。

MVX 框架兴起的本质是前端开发从事件驱动向数据驱动的转变。

早期,前端都是用户做了什么操作,或者接口拿到某些数据,就去用 jq 修改页面上某个节点或组件的状态。简单直白而且高效。
但是,随着业务逻辑越来越负责,一个操作或接口可能会需要修改几处甚至更多的地方,同时这些地方也不是只受该操作影响,修改时还需要考虑其他变量来决定是否修改或如何修改。此时,单纯的在回调函数中写 dom 操作由于难度过高已经是不可能的了。

然后很多人会选择改成数据驱动,把用户的各种操作和请求的数据记录在变量中,每次这些变量有变化后,调用一次 refresh 方法,refresh 方法中跟据变量中的数据,重新计算一遍页面应该如何展示,然后渲染到页面中。于是工作量一降低。
不过,这种方式虽然开发难度大大降低,但是这种手动全刷新的逻辑是低效而累赘的。于是,先是各种前端模板工具兴起,然后是 backbone,知道现在 react/vue/ng 。出现了各种框架来降低数据绑定的开发量,并提高数据绑定的性能。
zqx
2020-04-08 07:48:41 +08:00
前后端分离后,至少需要两个服务才能让用户使用网站,一个是提供 API 的服务端程序,一个是将域名端口映射到到 html 资源的 Web 服务器,用户加载 HTML 后由浏览器执行脚本进行 API 调用和页面渲染,这中间数据交换的格式可以是 json,也可以是 formdata,二进制,有哪些合法的格式是 HTTP 协议规定的
fancy111
2020-04-08 09:19:21 +08:00
其实你说的并没有太多错误,本质上就是这样的。 上面那些人可能都没往底层学过。
当然 json 只是一种数据格式,现在比较流行便捷而已,本质上都是解析这些数据,然后渲染到前端。
而前端框架本身就是基于 JS 的封装,这也是框架的定义,而不是独立语言。
stevenkang
2020-04-09 10:36:31 +08:00
本质是增加就业。

简单的事情复杂化,复杂的事情工程化。这样后端就看不懂前端代码了,老板就需要招更多的人来维护了。

后端只管提供数据的输入输出能力,前端只管拿到数据进行加工处理。

后端面向前端,前端面向用户的交互。
charlie21
2022-02-28 11:49:31 +08:00
在更早时候,一个网站的主要业务逻辑是服务器端在 “提供服务”,那个时候手机端就是用的 web api 这就是 JSON 数据格式,手机端拿到 JSON 之后在手机 app 里渲染出来(读取列表 显示帖子 更新用户设置 etc. 常见功能网页端可以做 手机端也可以做),点个按钮提交也是发送一个 POST 请求给 web api 。一个流行的服务器端知识是 RESTful API
https://www.ruanyifeng.com/blog/2014/05/restful_api.html

后面就是发展为类似 wordpress WPAPI 这种的。服务器端依然是 api 的提供者,客户端依然是 api 的调用者 /消费者(拿到数据之后自己负责渲染)
https://mobile.twitter.com/rleija_/status/1304042756369776641

https://www.jianshu.com/p/293f74ca1f71
基于 MVC 理解 React+Redux 这里以 MVC 架构为切入点给出了 the big picture 就是渲染 JSON 。
虽然实际上准确地说,之前的 backbone.js 是 MVC 架构
https://bbs.huaweicloud.com/blogs/260811

而当代网页端三大框架 react vue angular 是基于组件的架构
https://www.freecodecamp.org/news/is-mvc-dead-for-the-frontend-35b4d1fe39ec
charlie21
2022-02-28 12:00:46 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/660096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX