我最近在不同的客户端JavaScript库/框架上反复蹦蹦跳跳。我喜欢Backbone。不是ExtJs的粉丝。等
无论如何,他们似乎都有一个巨大的问题,我必须在服务器端(Rails 3
)和客户端定义验证逻辑。另外,我必须对我的模型定义(AR Objects
和`JS Objects')做同样的事情。然后我必须在两个地方定义业务规则。
似乎我总是开发两个并发应用程序。
我知道这是一个主观的问题,但对于我们这些小型的单人团队来说,他们无法负担专门的JS人员和专门的Ruby人员,我的解决方案是什么?
我正在绞尽脑汁,也许我错过了一些东西,但我找不到解决这个问题的单一解决方案。
我想过编写一个可以生成本地JS对象的Ruby gem。所以至少我的业务对象是一样的。但这听起来很吓人。特别是因为我可能不希望客户端的所有属性。
您对此问题有何看法?我只需忍受吗?
答案 0 :(得分:5)
我认为这是你必须忍受的事情。如果您考虑问题的性质,以及为什么我们同时进行客户端和服务器数据验证,您可以得出结论,目前没有解决方法而不会降低用户体验或使您的应用程序面临风险。 / p>
想想看,就像你在火车上发送一批货物到全国各地。在源位置,有人检查日志以确保订单中的所有内容都已包含在列车中,并且没有任何货物损坏。在目的地,另一个人检查他们已收到他们在装运中订购的所有物品,并且没有任何损坏。
如果您跳过其中一个验证步骤会怎样?如果没有“服务器”端验证,您可能会发送不完整的货件。如果没有验证另一端的进货,如果有人要劫持火车并换掉一堆假货,那么在货物售完并警察到你家门口之前你就不会发现它。
火车从一个地方到另一个地方所需的时间(和费用)激励我们验证进出货物,只是因为任何一方的错误都需要发送另一列火车。
不可否认,这个比喻有点延伸,但希望你能得到这样的结论。我们需要验证两端。
答案 1 :(得分:1)
这是因为这两个“封闭域”不会重叠。服务器上的代码,客户端上的代码。你不能在客户端上做PHP / Ruby / Python / OtherServerLanguage,你不能在服务器上做Javascript。等一下 ! There you can !
我看到了三种解决方案: