php - 如何避免在 Javascript 和 PHP 中重复公式?

标签 php javascript web-applications code-duplication

我目前正在使用 HTML5/Javascript 和 PHP 编写 Web 应用程序。

公司的一些员工需要使用它来输入他们的工作时间表。该应用程序将实时(使用Javascript)计算一些复杂的法律信息并将结果显示在页面底部。完成后,用户单击“保存”按钮,所有内容都会发送到数据库。

问题是我既需要用户实时查看输出,又需要管理人员从数据库中保存的内容获取相同的输出。我还需要支持用户禁用 Javascript 的情况。换句话说,我需要在 Javascript 和 PHP 中进行相同的计算。

让事情变得更复杂的是,该公式非常复杂并且会经常更改(每月左右),因此我想避免维护两个不同的版本。测试一个已经足够困难了。

此外,我想避免 AJAX 向服务器询问输出,因为:

  • 用户经常会根据实时计算的结果来制定自己的日程安排,因此即使是 1-2 秒的延迟也会让他感到烦恼
  • 如果可能的话,我必须支持 HTML5 的离线功能,以便用户可以在手机上加载应用程序,离线时填写其日程安排,然后在线时上传

目前我发现的唯一解决方案是以与语言无关的方式编写公式,然后使用某种方法将其转换为 PHP 代码和 JavaScript 代码,但这并不简单。

最佳答案

听起来您基本上有两种方法:

  1. 您可以编写一个独立于语言的公式(在数据库或配置文件中,因为它变化如此频繁)和两个代码生成器(Javascript、PHP)。这实际上并不像听起来那么可怕,只要您明智地选择输入格式并且您实际上指的是一个公式,而不是一些任意计算。

  2. 您可以使用服务器端 JavaScript,并在 JavaScript 中编写一次公式。维基百科有一个comparrison of server-side JavaScript implementations 。甚至还有用 PHP 编写的 JavaScript 解释器,至少包括 phpjsJ4P5 .

关于php - 如何避免在 Javascript 和 PHP 中重复公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437258/

相关文章:

ruby-on-rails - 关于 Rails 中 Multi-Tenancy 与多数据库应用程序的任何想法

javascript - 通过 Websockets 发送的 JSON 对象的大小

php - MySQL 查询在新的 phpmyadmin 上不起作用

javascript - 是否可以在弹出窗口中加载另一个 php 文件

php - 我们可以向 CakePHP 表对象添加自定义值吗?

javascript - 无法加载 "IE",未注册! Karma 上的错误消息

javascript - 在加载下一页之前如何使用 jQuery 制作动画?

java - 需要从 webapp 执行 shell 脚本并在页面中显示控制台输出

php - session 变量在 echo 中工作但在 SQL 查询中不起作用

php - Rails 对 PHP 开发人员来说很难理解吗?