【问题标题】:What systems are there to manage backend and front end logic/validation?有哪些系统来管理后端和前端逻辑/验证?
【发布时间】:2011-05-13 02:29:18
【问题描述】:

我只是想知道在团队中工作的人如何管理后端(例如 php)中的逻辑和验证与前端(例如 JavaScript)中完全相同的逻辑和验证之间的关系?

理想情况下,应该由后端说了算,但为了让应用程序更易于访问,最好在前端使用 JavaScript 尽可能多地模仿。我显然是在尽量减少代码重复,随着项目变得越来越大,我发现管理前端内容如何从后端内容“复制”变得更加困难。危险在于,由于它们不是紧密耦合的,有时前端验证可能会与后端“不同步”——尤其是当有一个流氓 JavaScript 开发人员认为他们有更好的方法进行验证时!

有人有什么见解吗?

编辑

为了更简洁,我的问题实际上是关于重复逻辑(或前端如何访问后端,如下面 Fanis 建议的)时,人员团队如何管理“papertrail”,而不是实际实施.例如,您是在后端代码中留下 cmets 说“前端复制/访问此位”还是有更“专业”的方式来跟踪正在做什么?

【问题讨论】:

    标签: php javascript validation


    【解决方案1】:

    实际使用数据的部分应该是有最终决定权的,即后端,并且应该有最严格的验证规则。对我来说,前端的验证是为了改善用户体验,这样用户就可以更快地获得关于他的输入有什么问题的反馈,而无需等待页面重新加载。我可以让前端拥有一小部分最通用的验证规则(即字段为空、格式错误的电子邮件地址等)并让后端做任何繁重的工作(例如重复条目检测)。

    但是,如果您需要将完整的验证带到前端,请考虑:

    • 使后端的验证与任何表单提交逻辑分离
    • 设置一个单独的端点 (API),它将接收数据、执行验证并回显任何错误或“ok”
    • 让前端通过 ajax 将表单数据传递到该端点并返回任何错误以显示
    • 如果一切正常,继续提交表单

    这样,您的后端只有一份验证规则。

    请注意,您将进行两次验证,如果它很昂贵(即使用启发式方法对大型数据集进行重复检测),那么这可能是不可取的。如果没有发现错误,您可以通过在第一次验证期间将表单数据存储在用户会话中来解决这个问题。然后当表单实际提交时,后端不会重新验证它。

    如果没有启用 javascript,这应该会很好地降级。

    【讨论】:

    • 正如你所说,使用 API 访问后端使用的相同验证逻辑听起来有点昂贵,但我已经看到整个网站通过 AJAX 运行在 DOM 操作上,所以也许不会太糟糕了。我喜欢将第一次验证的结果存储在会话中的想法......
    • 如果您将验证与表单提交处理分离,实现起来应该很简单,并且通过存储验证结果可以避免双重检查。将其视为预先批准的表单提交:)
    • AJAX 想法是一个不错的想法,但它不适用于慢速连接,即在每个表单之后连接到服务器
    • AJAX 想法是一个不错的想法,但它在连接速度较慢的情况下不太好,因为在每个表单字段之后连接到服务器可能会很烦人。也许后端验证可以配置为在页面加载时返回一组统计信息(如果字段等的最大长度)。这可以转换为 JS,并且 JS 函数可以使用统计信息进行一些离线验证。但是,您将无法通过这种方式进行“已经存在”类型的验证。
    • 它不必在每个表单字段之后触发,只需您关心的那些,例如电子邮件和用户名。如果连接很慢并且在用户实际点击提交之前前端验证没有时间完成,您可以中断表单提交并等待验证完成,如果没有错误则继续,或者只是提交并让后端做它的工作。前端验证只是为了提供更好的用户体验,它可能不应该阻止通常的表单提交作为后备。
    【解决方案2】:

    你最近看过 nodejs 吗?通过一些工作和适当的框架(如 mootools),您可以在客户端和服务器端运行几乎相同的验证类。

    【讨论】:

    猜你喜欢
    • 2016-04-04
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多