lechimp-p/php2js

将合理的PHP代码编译成JavaScript。

0.1.0 2019-05-05 14:37 UTC

This package is not auto-updated.

Last update: 2024-09-30 17:09:28 UTC


README

Build Status

php2js - 将合理的PHP代码编译成JavaScript

php2js使得您能够使用您喜欢的脚本语言编写客户端脚本。

目前这还处于概念验证阶段,绝对不适合投入实际使用。

用法

目前这仅支持足够的功能来使HelloWorld示例运行。

  • 使用PHP编写您的客户端脚本。主文件应包含一个实现JS\Script的类。可以在该类的构造函数中声明对JS-API的依赖,并且由运行时传递。
  • 使用php php2js.php compile $SCRIPT编译您的脚本。这将输出一些可以包含到您的页面中的JavaScript代码。编译器将解决内部依赖,并使用composer.json来拉取更多文件。
  • 由于此编译器不支持每个PHP-API和语言结构,如果您使用它不想编译的东西,编译器可能会向您提出警告。合理的现代PHP应该可以编译。

理由

再次强调,这目前仍然是一个概念验证。

当在(可能已经过时的)PHP应用程序上工作时,用户通常期望现在需要在客户端实现的功能。这以两种不同的方式挑战了PHP开发者的社区。

一方面,客户端需求新的技能和知识。虽然我们可能期望每个当代的PHP开发者都了解其分享的jQuery份额,但更复杂的应用程序需要jQuery从未打算提供的方法。当我们切换到现代的js框架,如React或Vue,来实现这些复杂应用的要求时,我们或者要求PHP开发者获得使用这些工具的技能和知识,或者我们需要在我们的项目中添加已经拥有这些技能的新开发者。在这两种情况下,我们都会给我们的项目添加新的复杂性层次。

另一方面,PHP项目可能已经有一些可能需要重写的代码,以用于客户端。例如,如果想在客户端对输入进行验证以提供快速的用户反馈,那么相应的代码需要用JavaScript(或其他语言)重写,并且在之后需要保持服务器端和客户端验证的一致性。这将使PHP项目相对于编写在客户端和服务器端工作的语言的项目处于不利地位。毕竟,需要支持两种语言和工具链。

php2js通过提供一种在PHP中编写客户端代码的方法(就像服务器端代码一样)来尝试解决这些问题。因此,客户端代码可以受到与服务器端代码相同的程序(例如测试或静态分析)的影响,并在部署之前编译成JavaScript。

在执行此操作时,php2js并不试图实现PHP的每个功能和API,因此可以直接编译到JavaScript,而不是在JavaScript中提供PHP运行时或找出(例如)如何在浏览器中模拟文件操作。

展望

我们还没有达到那里,这是一个概念验证!!1

这个编译器的想法是在开发ILIAS开源学习管理系统GitHub上的ILIAS)的用户界面框架时产生的。这个概念验证将在社区讨论中用于如何进行ILIAS-UI框架的客户端功能。如果这个想法最终被应用到实际工作中,我们很可能会在编译器实现的裸JS-APIs之上添加另一个层,以结构化方式向ILIAS-UI框架添加客户端功能。因此,这个编译器旨在通过一个用PHP编写的客户端框架来补充。