Ajax 直接返回 html 片段

2019-01-24 00:01:55 +08:00
 mutelog
Ajax 直接根据业务实体生成并返回 html 片段是否一定是糟糕的设计?
4812 次点击
所在节点    程序员
49 条回复
Vegetable
2019-01-24 00:08:54 +08:00
想洗一下发现功力不够,我觉得肯定有合适的场景,不比其他方案差,但是我想不出来…
qq292382270
2019-01-24 00:12:10 +08:00
要么服务端返回 html, 要么 js 通过返回的 data 拼接成 html,并未有多大的区别吧 .
CODEWEA
2019-01-24 00:15:06 +08:00
技术方案一定要符合业务实际需求
直接返回 HTML 片段的优势有:减少客户端负载,减少维护成本,客户端体验更流畅。
劣势:逻辑拼接增加服务器负载,技术人员会看起来很 low,不符合潮流,不利于接口重用(要考虑是否真的需要重用,已经重用成本)
CODEWEA
2019-01-24 00:15:33 +08:00
以及重用成本
akatquas
2019-01-24 00:16:36 +08:00
ajax 原名就是 XMLHttpRequest 啊...
返回 xml 没毛病,只不过现实场景不多用了,http 请求中大多都用字符串如 json 了而已。

我这个洗的还好吗?
saulshao
2019-01-24 00:17:46 +08:00
返回 HTML 片段绝大多数是糟糕的设计。
需要用到 Ajax 的时候,都是将结果作为某个整体 HTML 页面的一部分。
大多数的设计都是返回 Json/XML 甚至是自定义的字符串。
对比返回 HTML 片段的设计,如果返回的 HTML 片段不能作为整体页面的一部分来显示,典型的例子是 Ajax 返回一个 HTML 表格,以 Table 开头,有的时候需要把这个表格的某列显示为一个链接,有的时候则不需要。那么就是要么设计 2 个不同的 Ajax API,要么就分析 HTML 片段,显然这都不是什么很好的办法。
CODEWEA
2019-01-24 00:19:10 +08:00
@saulshao 你的意思是不利于接口复用吧
580a388da131
2019-01-24 00:23:42 +08:00
你把数据和样式分开,最后送到客户端 html,这样应该凑合吧。
akira
2019-01-24 00:23:49 +08:00
如果前端和后台都是你一个人在做,以后也一直是你一个人在维护,那没关系
szx237560
2019-01-24 00:25:35 +08:00
KasuganoSoras
2019-01-24 00:26:36 +08:00
并不觉得有什么不好,有时候直接返回 html 还是挺方便的
比如: https://mirror.ssr.wine/ 评论区 AJAX 轮询、选择服务端分类
还有: https://www.zerobbs.net/ 帖子列表翻页,评论区 WebSocket
怎么方便怎么来,看自己喜欢。除非你是在帮别人做项目,那就按照别人的要求来做吧
就我个人而言,因为我并不擅长前端的 Js 那些的,我觉得直接在服务端写 HTML 更方便点,自然我会选择在 AJAX 里返回 HTML。

我这个洗的还好吗?
FEDT
2019-01-24 00:32:45 +08:00
Pjax,看看 gayhub
yunye
2019-01-24 00:47:06 +08:00
turbolinks 岂不是 low 翻天了
azh7138m
2019-01-24 00:53:17 +08:00
gitlab 也这么操作,问题不大
byis
2019-01-24 01:01:52 +08:00
pjax
喵喵喵?
byis
2019-01-24 01:02:33 +08:00
虎嗅网就是这样的
masker
2019-01-24 01:12:22 +08:00
不都是字符串咩?
msg7086
2019-01-24 01:59:20 +08:00
都可以,根据实际需要返回数据就行了。
Archeb
2019-01-24 02:20:08 +08:00
一般应用在 pjax
hundan
2019-01-24 07:26:53 +08:00
我知道新浪微博的评论加载是这样的

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

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

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

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

© 2021 V2EX