【问题标题】:Avoiding re-writing logic twice for server side and client side避免服务器端和客户端两次重写逻辑
【发布时间】:2013-03-14 14:53:37
【问题描述】:

我正在编写一个允许用户为产品选择不同选项的软件。价格将根据选择的选项而有所不同。服务器正在使用 LAMP 堆栈。客户端将使用 HTML5 和 javascript。我试图防止两次重写验证和价格计算,一次在服务器上,一次在客户端上。目前我有几个选择。

  1. 做正常的事情,重新编写两次验证和价格计算
  2. 仅在服务器上进行验证和计算,并使用 ajax 更新客户端(速度慢,我想避免。)
  3. 实现两种语言都支持的辅助语言(想到 Lisp)
  4. 用javascript编写验证和计算逻辑。将 V8js 库与 php 一起使用
  5. 使用 Node.js

我也在努力避免对项目有太多要求。如果我走 Node.js 的路线,那么我将不得不将它安装在单独的子域上,然后购买通配符 SSL 证书,或者可能只是另一个证书。我宁愿不要把它扔在同一个域上,并且有一些奇怪的代理/请求转发程序来决定是 PHP 还是 Node.js 来处理请求。

PHP 站点的某些部分需要访问数据。我正在使用 Doctrine 2 作为 ORM。走这条路我不认为使用 Node.JS 是最好的路线。

我更倾向于选项一,但也许我可以编写一些代码来生成所需的 java 脚本代码。我还有其他选择吗?有什么建议?谢谢。

【问题讨论】:

  • 你有什么问题?
  • 对深夜发帖深表歉意!基本上我试图避免两次重写表单验证和价格计算代码。如果我可以在两个地方使用相同的代码,那就太好了。然后在一切验证并计算价格之后,我可以在数据库端保存和处理它,或者如果它是客户端发送的表单和他们选择的选项。这个想法是从 MVC 中获取 M 并在服务器和客户端上使用它。对于客户,模型将从表格中填写。数据将来自一个表格。如果是 php,数据将来自 JSON。
  • Ajax 是一个不错的选择,尽管您想避免它。我不知道lisp。然后你有时间你应该做正常的事情。否则我会推荐 v8js。
  • 您能详细说明选项 3 吗?
  • 当时我正在考虑编写一种迷你语言,其中输入从主机设置并传递给解释语言。然后将运行解释语言。或者,您可以编写一个规则引擎。您将约束/方程定义为可以编码的数据结构。每种宿主语言都必须确保求解器重现相同的结果。求解器不应该关心数据来自哪里。要在客户端显示结果,您可以使用查找将结果映射到元素。示例用例显示计算结果、表单验证。

标签: php javascript code-reuse


【解决方案1】:

那些理论上的“复杂”重写值得吗?可能只是不值得。

但如果确实如此——那么你的解决方案是重用类似“后端”的逻辑是最好的。用javascript写,用php复用——没关系。

【讨论】:

    【解决方案2】:

    您可以用 Java 编写验证例程。

    在小程序中将代码交付给客户端 - 然后您的 JavaScript 代码可以调用小程序的方法。 在服务器上,您可以将其作为命令行程序运行。

    我已经很久没有做任何 JAVA 了,但我认为可以创建一个既可以用作命令行程序又可以用作小程序的类。

    小程序不需要UI,可以缩小到1px正方形或者display:none;

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 2015-08-14
      • 1970-01-01
      相关资源
      最近更新 更多