javascript - 为什么服务器端模型、验证等与客户端之间存在这种脱节?

标签 javascript design-patterns client-side server-side

我最近一直在不同的客户端 JavaScript 库/框架之间来回切换。我喜欢 Backbone 。不是 ExtJs 的粉丝。等等

无论如何,它们似乎都存在一个巨大的问题,即我必须在服务器端 (Rails 3) 和客户端定义验证逻辑。另外,我必须对我的模型定义(AR Objects 和“JS Objects”)做同样的事情。然后我也必须在这两个地方定义业务规则。

似乎我总是在开发两个并发应用程序。

我知道这是一个主观问题,但对于我们这些小型单人团队来说,他们请不起专门的 JS 人员和专门的 Ruby 人员,我的解决方案是什么?

我正在绞尽脑汁,也许我遗漏了一些东西,但我找不到解决这个问题的单一方法。

我考虑过编写一个可以生成本地 JS 对象的 Ruby gem。所以至少我的业务对象是一样的。但这听起来很可怕。特别是因为我可能不希望所有属性都在客户端。

你对这个问题有什么看法?我只能忍受它吗?

最佳答案

我认为这是您必须忍受的事情。如果您考虑问题的性质,以及为什么我们同时进行客户端和服务器数据验证,您可以得出这样的结论:目前没有一种方法可以在不降低用户体验或让您的应用程序面临风险的情况下解决它。

把它想象成您要乘坐火车在全国各地运送 cargo 。在源位置,有人检查日志以确保订单中的所有内容都已包含在火车上,并且没有任何 cargo 损坏。在目的地,另一个人检查他们是否收到了 cargo 中订购的所有元素,并且没有任何损坏。

如果您跳过其中一个验证步骤会怎样?您冒着未经“服务器”端验证发送不完整货件的风险。如果不验证另一端的进货,如果有人劫持火车并换出一堆假冒商品,直到商品售出并且警察出现在您家门口时,您才会发现这件事。

火车从一个地点到另一个地点所花费的时间(和费用)激发了对进出 cargo 进行验证的动机,原因很简单,因为任一端的错误都需要发送另一列火车。

诚然,这个比喻有点牵强,但希望您能理解。我们需要两端的验证。

关于javascript - 为什么服务器端模型、验证等与客户端之间存在这种脱节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283229/

相关文章:

javascript - 从 'react' 找不到模块 'Provider.js'

javascript - 创建小书签以填写表格

design-patterns - 所有界面组合都被视为策略模式吗

java - 如果我们真的想强制执行的话,将方法设为 final方法

tomcat7 - 为 Google Cloud Messaging 设置服务器端和客户端

javascript - 我正在寻找客户端通用 HTML 联系表单的替代解决方案

android - 无法在 Android Chrome 中下载客户端生成的文件

javascript - 如何访问 map 函数内部函数内部的状态

javascript - 当惯性滚动算法接近顶部或底部时,我该如何减速?

design-patterns - 享元设计模式如何最小化内存