V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shiguiyou
V2EX  ›  程序员

电商购物的下单前的费用计算放在前端还是后端?

  •  
  •   shiguiyou · 2018-12-27 10:14:02 +08:00 · 10642 次点击
    这是一个创建于 2151 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用京东,美团 app,在下单页面,就是可以增减商品数量购物车页面,每按一次加减,好像都向后台请求了一下数据,断网后加减提示网络错误,也没有给出最新的费用合计。

    所以,这些费用计算都是后台,前台不需要计算只管展示吗?这样会不会给服务器压力呢,每次都请求一下?

    54 条回复    2018-12-28 11:51:16 +08:00
    freedomshi
        1
    freedomshi  
       2018-12-27 10:16:29 +08:00
    放后端更好一点,如果价格不一致导致交易就很麻烦。
    RoyL
        2
    RoyL  
       2018-12-27 10:16:32 +08:00
    价格库存都会变的,怎么能放前台呢...
    binaryify
        3
    binaryify  
       2018-12-27 10:17:39 +08:00
    当然是后端
    tinytin
        4
    tinytin  
       2018-12-27 10:18:45 +08:00
    后端算,或者前后端都算,提交时候后端再验证一遍
    shiguiyou
        5
    shiguiyou  
    OP
       2018-12-27 10:19:09 +08:00
    @freedomshi 后台肯定要计算校验前台的计算,只是不知道前台要不要算,因为 android ios h5 的精度可能不一样,计算有点差距。
    helionzzz
        6
    helionzzz  
       2018-12-27 10:19:30 +08:00
    你要是后台都是固定的价格当然可以只用前端计算
    yangehappy
        7
    yangehappy  
       2018-12-27 10:19:51 +08:00
    后端算 前端算的可能和后端不一致
    shiguiyou
        8
    shiguiyou  
    OP
       2018-12-27 10:19:54 +08:00
    @RoyL 加减数量请求最重要是为了检查库存?
    airyland
        9
    airyland  
       2018-12-27 10:22:12 +08:00   ❤️ 1
    后端。前端无法处理复杂的计算逻辑,前端可能会被恶意改价格。
    即使出于方便你想在前端做,也一定需要在后端再计算一次进行比较。
    如果计算价格也是压力,那说明做得特别差,基础功能都还没满足。
    keinx
        10
    keinx  
       2018-12-27 10:23:17 +08:00
    各种优惠促销规则,你在前端算起来超级麻烦,而且还没办法事实判断这个优惠促销是否可用(比如优惠券)
    tabris17
        11
    tabris17  
       2018-12-27 10:23:37 +08:00
    后端,前端无法解决购物车组合优惠这一类的业务逻辑
    DamonLin
        12
    DamonLin  
       2018-12-27 10:24:52 +08:00
    肯定是后端
    autoxbc
        13
    autoxbc  
       2018-12-27 10:36:27 +08:00 via iPhone
    猴厂前端代码被人扒之类的事出的多了,以后逻辑都得放后端
    demonzoo
        14
    demonzoo  
       2018-12-27 10:39:37 +08:00
    肯定后端啊,前端 js 算的话太容易被篡改了好吧
    maplelin
        15
    maplelin  
       2018-12-27 10:40:30 +08:00
    我们是前端后端都算一边,以后端的价格为准
    rcj6056
        16
    rcj6056  
       2018-12-27 10:41:35 +08:00
    我都给你说了 放后台计算鸭,每次加减请求就完事了,你们后台很有问题
    also24
        17
    also24  
       2018-12-27 10:46:30 +08:00   ❤️ 2
    大部分流程中,是存在两个页面的:
    A. 可以增减商品数量购物车页面
    B. 不可增减商品数量的结算页面

    A 页面如果不涉及购物车同步功能,可以考虑纯前端计算,这样用户体验更流畅。
    同时可以考虑对特殊商品(如秒杀,限购)采取特殊策略。

    A 页面如果涉及购物车同步功能,那么后端计算吧,反正同步购物车已经挺卡的了(我的淘宝购物车,反馈极慢,经常出现 “点过头” 的情况)

    B 页面,肯定是后端计算,因为用户无法修改商品,不需要担心延迟和性能问题。
    tianyou666shen
        18
    tianyou666shen  
       2018-12-27 10:57:14 +08:00
    告诉我哪家后端不算的 我现在就去下单 买到你破产
    GentleSadness
        19
    GentleSadness  
       2018-12-27 11:06:47 +08:00
    @tianyou666shen 京东一开始就是前端,然后改单的人被抓了
    x86
        20
    x86  
       2018-12-27 11:32:46 +08:00 via iPhone
    放前端能撸的你怀疑货币单位
    red0range
        21
    red0range  
       2018-12-27 11:33:26 +08:00
    你在逗我
    yoshiyuki
        22
    yoshiyuki  
       2018-12-27 11:33:34 +08:00
    前端计算,后端校验
    luvxy
        23
    luvxy  
       2018-12-27 11:35:25 +08:00
    @also24 我没做过这类业务,A 页面,实际项目里很多是做一次更改直接发送整个购物车信息过去吗
    JFLW
        24
    JFLW  
       2018-12-27 11:36:46 +08:00
    不应该前后端都算吗?前端自己算,是自己展示费用消耗给用户,后端算是确保数据正确性,每次都去请求,设计不合理吧,只有在付款锁单的时候才去请求吧
    imnpc
        25
    imnpc  
       2018-12-27 11:46:34 +08:00
    阿里云曾经放在前端计算 某些组合会出现 0 元甚至负数订单 后来整体前台 UI 框架全换了 也是后台获取价格
    whileFalse
        26
    whileFalse  
       2018-12-27 12:32:53 +08:00
    别老动不动就想着服务器压力。
    qiuyun8m
        27
    qiuyun8m  
       2018-12-27 12:37:41 +08:00
    肯定是后端, 至于前段要不要也计算根据成本和业务的复杂度来考虑.
    conn4575
        28
    conn4575  
       2018-12-27 12:45:02 +08:00 via Android
    不管前端算不算,后端肯定要算的,如果前端可以一直保持和后端计算逻辑一致,前端自己算也是可以的🤣
    jsq2627
        29
    jsq2627  
       2018-12-27 12:50:59 +08:00
    后端算
    不是服务器压力和安全问题,纯粹是开发成本原因。商品组合、库存、优惠逻辑复杂,没必要前端再做一遍
    sike03
        30
    sike03  
       2018-12-27 12:55:58 +08:00 via Android
    前后端都算,前段用于展示,后端用于真正支付。以后端计算为准。
    zw1one
        31
    zw1one  
       2018-12-27 12:56:05 +08:00 via Android
    你前端算了,后端也得算一遍啊。前端的参数做 web 开发的能随便改的。
    ydirel
        32
    ydirel  
       2018-12-27 13:19:41 +08:00
    后端
    liuxey
        33
    liuxey  
       2018-12-27 14:27:05 +08:00
    要我说,在商品页的售价或者打折价都应该是后端推过来的,购物车和订单结算页就更应该是后端计算。
    hasbug
        34
    hasbug  
       2018-12-27 14:32:07 +08:00
    前端做计算展示,后端负责生成真正的付款金额下单。
    V2exUser
        35
    V2exUser  
       2018-12-27 14:37:11 +08:00 via Android
    优惠券要检测过期与否,所以像京东这种必须放在后端按服务器时间检测
    Eirxxx69
        36
    Eirxxx69  
       2018-12-27 14:59:38 +08:00
    页面中涉及到价格,库存这些信息展示的都是请求后端的。
    Eirxxx69
        37
    Eirxxx69  
       2018-12-27 15:01:08 +08:00
    请求价格服务,在购物车服务里做计算,这些数据都是实时的,压力肯定是有的,但这些压力的成本小于提交订单和计算商品价格不一致带来的风险成本
    huijiewei
        38
    huijiewei  
       2018-12-27 15:11:05 +08:00 via iPhone
    前后端都算

    然后对比是否一致
    JamesR
        39
    JamesR  
       2018-12-27 15:22:40 +08:00
    黑产了解一下,哈哈哈哈。
    sarices
        40
    sarices  
       2018-12-27 15:28:46 +08:00
    后端算,js 计算有陷阱,要特殊处理
    Ritr
        41
    Ritr  
       2018-12-27 16:53:42 +08:00   ❤️ 1
    后端计算
    1、js 浮点数计算有问题,大家都知道
    2、确保数据安全、实时、准确
    xschaoya
        42
    xschaoya  
       2018-12-27 17:43:09 +08:00 via Android
    前段吧,程序员重大利好,褥羊毛不是梦
    VitaCoCo
        43
    VitaCoCo  
       2018-12-27 18:13:56 +08:00
    前后端都算,但是在出单的时候以后端数据为准

    前端算的原因是显示速度更快,使用户能获得即时的反馈
    notreami
        44
    notreami  
       2018-12-27 18:42:51 +08:00
    考虑 2 个场景:
    1、变价前打开页面,变价后下单,如何告知用户价格变了?
    2、码农改改 js,改成 1 分钱,这单能成嘛?
    imn1
        45
    imn1  
       2018-12-27 18:55:25 +08:00
    任何需要提交的都必须后端校验,这个不用说了吧
    前端做的,应该是不同性质的功能,例如只是报价性质的计算
    良心一点就在当提交价格和后端校验不一致时,发出一个警告信息
    terranboy
        46
    terranboy  
       2018-12-27 19:30:08 +08:00
    前端数据不可信,基本常识
    Hellokids
        47
    Hellokids  
       2018-12-27 19:41:58 +08:00 via iPhone
    1. 如果你指的前端包括 app 和网页,那么 app 的用户不升级情况考虑下
    2. 新增优惠活动是否频繁,前端怎么兼容考虑下
    3. 对于一个购物平台,大部分交互都偏向于引导用户购买,平台和服务器压力之间权衡下
    综合上述几个点,考虑下平台的实际情况看一步到位还是慢慢迭代
    reus
        48
    reus  
       2018-12-27 21:35:20 +08:00
    当然后端算,后端是一定要算的,前端再算一遍没有意义,如果算法改了,难道前后端都改吗?
    valkyrja
        49
    valkyrja  
       2018-12-27 21:47:57 +08:00
    楼上好像大多都不审题,楼主问的是下单前的费用计算……如果简单展示的加减感觉前端做一下计算没有大问题,提交订单的时候以后端结果为准,数量加减的请求可能是在拉库存数量
    luzemin
        50
    luzemin  
       2018-12-27 22:11:51 +08:00
    和表单校验一样,前端的操作为了更好地体验,服务端无论如何都要走一遍的。
    annielong
        51
    annielong  
       2018-12-28 09:07:35 +08:00
    前台后台都要算,前台计算用于展示,完善用户体验,提交到后台再算一次,是为了数据安全
    nfroot
        52
    nfroot  
       2018-12-28 10:26:30 +08:00
    @sarices
    @Ritr
    其实后端和前端一样有缺陷的,同时……后端和前端应该都可以修正这个缺陷。
    Ritr
        53
    Ritr  
       2018-12-28 10:57:44 +08:00
    @nfroot 前端不安全,通常只做 view 展示,还是后端算吧
    suler
        54
    suler  
       2018-12-28 11:51:16 +08:00
    在购物车增减商品,等于就是更新你的购物车,肯定要重新请求的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.