V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
chenqh
V2EX  ›  JavaScript

用了这些久 ajax 为什么感觉 ajax 直接返回 html 用得少啊

  •  
  •   chenqh · 2017-02-25 16:00:07 +08:00 · 5354 次点击
    这是一个创建于 2827 天前的主题,其中的信息可能已经有所发展或是发生改变。

    感觉一般 ajax 都是直接返回 json. 难道是因为 html 比 json 大的原因?

    第 1 条附言  ·  2017-02-26 11:35:56 +08:00

    看了这么多回复,大概的原因是这个

    1. 前后端分离.(但是我的管理后台,不需要前端,用bootstrap就好了,所以pass)
    2. 减少带宽。(我的管理后台不怎么在乎性能,用的没有几个人。pass)
    3. 降低服务器的cpu。(我现在服务器cpu不到50%,pass)
    4. 移动端。(没有移动端。。要有移动端的话,就需要前端来写样式了。。所以还是pass)

    所以我直接返回html,对我这个项目是合适的?

    36 条回复    2017-02-27 12:50:33 +08:00
    Luckyray
        1
    Luckyray  
       2017-02-25 16:03:43 +08:00 via iPhone
    还得后台渲染是不是加重了负担?
    RE
        2
    RE  
       2017-02-25 16:09:53 +08:00
    用 ajax 的其中一个目的就是服务端只处理业务,然后返回业务处理后的结果,以 json 格式返回,就可以做到前后端分离了。
    如果返回 html ,那后端开发的时候还得去考虑到底某句话要放在什么标签里面,某个地方要搭配什么 icon 用什么 css ,而这些本应该是前端的工作。
    oisc
        3
    oisc  
       2017-02-25 16:12:39 +08:00   ❤️ 1
    HTML --> HyperText Markup Language ,是标记语言,不是数据结构
    chenqh
        4
    chenqh  
    OP
       2017-02-25 16:13:19 +08:00
    @RE 是为了前后端的目的是吧,那如果是一个管理后台这种几乎不需要前端的,那就可以返回 html 了?
    Cbdy
        5
    Cbdy  
       2017-02-25 16:27:12 +08:00 via Android
    早期 jquery 的 onload 没有用过吗?
    cooro
        6
    cooro  
       2017-02-25 16:59:50 +08:00 via iPhone
    @chenqh 管理后台几乎不需要前端?那这种 web 程序都可以直接静态网页就够了!
    chenqh
        7
    chenqh  
    OP
       2017-02-25 17:02:41 +08:00 via iPhone
    @cooro 用 bootstrap 就好了呀 ,小公司后端样式不怎么看重,看重也没办法
    loading
        8
    loading  
       2017-02-25 17:08:09 +08:00 via Android
    有返回 xml 的,你指的应该是这个吧。
    kindjeff
        9
    kindjeff  
       2017-02-25 17:08:21 +08:00 via iPhone
    b 站搜索页面点下一页返回的就是个 html 然后嵌进去的。
    chenqh
        10
    chenqh  
    OP
       2017-02-25 17:09:24 +08:00
    @kindjeff 那种估计是 pjax ,那种东西不会用
    Reign
        11
    Reign  
       2017-02-25 17:12:14 +08:00
    万一前端模板变了啊
    kindjeff
        12
    kindjeff  
       2017-02-25 17:12:37 +08:00 via iPhone
    @chenqh 那你这贴有结论了……因为返回 html 的你定义为 pjax 了……
    cooro
        13
    cooro  
       2017-02-25 17:16:29 +08:00 via iPhone
    麻雀虽小,该有的都得有。后台管理不只是样式吧。前期图“省事”(还不一定),后期就费劲了。
    chenqh
        14
    chenqh  
    OP
       2017-02-25 17:49:28 +08:00
    @kindjeff 不一样啊,那种不仅返回的是 html 并且好像 page 的变化也要表现在 history 里面
    doubleflower
        15
    doubleflower  
       2017-02-25 18:51:50 +08:00
    几年前 ajax 刚开始的时候大家都返回 html 直接替换一块 dom 的。直到后来前端开始有架构了,从 backbone 开始,到 angular/react 才没人这么干了。
    Mbin
        16
    Mbin  
       2017-02-25 18:58:20 +08:00
    比如现在的 express + ejs 模板,这种就是直接返回 html 模服务器渲染的,现在也是油公司这样开发的,配合内部框架,前后台一人搞定
    bombless
        17
    bombless  
       2017-02-25 18:58:56 +08:00 via Android
    backbone 貌似就是返回 html 的,没用过
    helloccav
        18
    helloccav  
       2017-02-25 19:01:42 +08:00 via Android
    @RE 对我个人来说,因为我要同时做前端和后端,所以我的 ajax 一般是返回 html ,这样我的 html 代码就可以复用了
    sfree2005
        19
    sfree2005  
       2017-02-25 19:28:17 +08:00
    还有考虑到移动端的需要, 前后端分离其中的一个好处
    jsq2627
        20
    jsq2627  
       2017-02-25 19:32:19 +08:00 via iPhone
    上古时代 ajax 确实主要返回 xml 和 html
    lightening
        21
    lightening  
       2017-02-25 19:51:04 +08:00
    不少。看 Pjax 和 Turbolinks 。 React 也可以 server 端 render 。前端不复杂(仅仅需要无刷新跳转,而不是类似 gmail 这样的页面内逻辑)的网站用这种方式更方便。

    我现在比较偏向与用这种方式再在需要复杂前端的页面嵌入 React 。
    k9982874
        22
    k9982874  
       2017-02-25 20:02:29 +08:00 via iPad
    不少啊,返回的 500 错误都是 html 啊,(斜眼笑
    xrlin
        23
    xrlin  
       2017-02-25 20:38:34 +08:00
    用 rails 的时候偶尔会这么干,虽然感觉不太好,但比在前端用 js 写逻辑方便多了。
    hoythan
        24
    hoythan  
       2017-02-25 21:46:46 +08:00
    分页和无刷新加载我都是使用 ajax 返回 html, 直接用 ajax 获取下一页地址然后获取到下一页的 html, 直接填充到当前网页就行了.
    rekulas
        25
    rekulas  
       2017-02-25 22:15:23 +08:00
    @chenqh 一样的工作原理,只不过现在浏览器支持 pushstate 了 为了体验好很多网站就顺便更新了地址栏而已。
    halden
        26
    halden  
       2017-02-26 01:12:02 +08:00
    除去上面已经提到的前后端分离,还有性能的影响,现在前端很少直接写整个 html 的了,而且现在“需要”返回 html 的情况非常少吧,除非你说要替换大部分 dom ,有点类似潜入 iframe 的感觉,但这是有具体需求的情况下才会这样用(比如防止 js/css 污染等,绝大多数在线 code 编辑器都是用的 iframe )

    @helloccav 并没有理解你所说代码复用是什么情况, html 作为 view 本来就是复用的,但这和返回 json 并不冲突啊, html(layout 不变) + json(数据动态变化) -> 完整页面
    jarell
        27
    jarell  
       2017-02-26 01:21:16 +08:00
    @rekulas gmail 好像只更新了 #号后面内容, 而且很久之前就是这样了,不知道它用的什么方案。
    hst001
        28
    hst001  
       2017-02-26 01:32:51 +08:00
    1 、减少服务端渲染的步骤,节约服务器的资源
    2 、前后端分离,可以让一个接口服务不同的前端,前端爱怎么渲染怎么渲染,这里的前端当然包括移动端等
    3 、只传数据可以减少传输的字节,节约带宽就是节约金钱
    vibbow
        29
    vibbow  
       2017-02-26 01:57:13 +08:00
    我之前的单位就是这样做的, ajax 直接返回 html 。

    还有把整个 dom 干掉, ajax load 一个新的 html 到页面上,也是经常用的......
    #所谓的无缝刷新...
    Tink
        30
    Tink  
       2017-02-26 10:17:47 +08:00 via iPhone
    看你怎么用,我自己一个人写都是返回 json
    gouflv
        31
    gouflv  
       2017-02-26 10:43:24 +08:00 via iPhone
    你可以查下前后端分离的具体做法
    leopku
        32
    leopku  
       2017-02-26 11:08:26 +08:00
    踩过坑就知道为啥以前流行的 ajax 返回 html 现在不流行转而流行只返回数据了
    fuxiaohei
        33
    fuxiaohei  
       2017-02-26 11:21:38 +08:00
    这是 pjax ,最有名的使用者是 Github 。
    你在项目切换代码文件目录,就可以看到 pjax 的 xhr
    ppwangs
        34
    ppwangs  
       2017-02-26 15:47:06 +08:00
    pjax
    wenzichel
        35
    wenzichel  
       2017-02-27 09:39:24 +08:00
    直接返回 json 格式的数据,有利于多环境的使用,比如多个页面中只是数据一样,但是展示的方式不一样;还有就是接口维护方便,当字段发生改变时,前端页面的展示尽量不受到影响
    tofishes
        36
    tofishes  
       2017-02-27 12:50:33 +08:00
    ajax 返回 html 没什么问题,简单易用。至于什么时候返回 json ,你到时候自然会明白。选择适合你当前的用法就行了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.