有没有一种好的方法可以从服务器端的Python自动生成JavaScript客户端代码?

5

我基本上希望能够:

  • 用 Python 编写几个函数(附加元数据尽可能少)
  • 将这些函数转换为 Web 服务(尽量少的工作/样板代码)
  • 自动生成一些用于 RPC 的 JavaScript 函数/对象(这应该可以防止我做很多愚蠢的事情,比如拼错方法名、忘记方法名、传递错误数量的参数)

示例:

Python:

def hello_world():
    return "Hello world"

javascript:

...
<!-- This file is automatically generated (either dynamically or statically) -->
<script src="http://myurl.com/webservice/client_side_javascript"> </script> 
...
<script>
$('#button').click(function () {
     hello_world(function (data){ $('#label').text(data)))
}
</script>

一些研究向我展示了一些接近此目标的方法:
  • 使用少量样板代码在Python中自动生成json-rpc服务,然后使用jquery和json进行调用(仍然容易出现方法名称错误-仍需要在调用时注意url,自己在firebug shell中编写这些调用非常烦人)
  • 使用像soaplib这样的库从Python生成wsdl(通过添加大量类型信息)。然后将其转换为javascript(不确定是否有库可以实现此功能)
但是,有没有更接近我想要的方法?

1
是的,您需要前往并接受先前问题的一些答案! - user177800
1
也许其他人只是不太擅长回答问题 :)。 - user47741
想要编写Python代码并轻松远程执行的原因并不是为了编写Python而不是JavaScript。而是为了在客户端执行操作后在服务器上运行事物(从而修改服务器上的状态)。如果您想编写Python而不是JavaScript(并且还想轻松访问一组小部件),那么Pyjamas可能非常有用。 - user47741
2个回答

6

是的,有一种叫做Pyjamas的工具。有些人称其为Python版的"GWT"。


我曾听说过Pyjamas - 但它是否真的可以生成JavaScript函数,而不需要您在Python中编写整个应用程序(或者更确切地说是具有微妙不同语义的类似Python的语言)?我有点想要一些轻量级的东西。 - user47741
可以的。您不必使用全部内容;有一个Python到JavaScript编译器,它输出与您的Python函数相同的JavaScript。您还需要在服务器端执行某些操作,以便为您的数据创建jsonrpc或纯json URI,但这并不难。 - Andrew McGregor
嗯,我还不太确定pyjamas是否适合这个任务。似乎你需要跨越很多障碍才能完成这个任务。 - user47741
相关信息:(i)当使用完整的pyjamas编译器时,您无法从模板HTML页面(位于shared中)访问JavaScript,因为生成的JavaScript在iframe中加载。但是,您可以访问此iframe并使用window.frames [0] .<variablename>提取变量,然后执行这些变量。(ii)如果定义了一个名为test.py的模块,则其中任何函数都存在于名为“test”的对象上,在此iframe范围内。 - user47741
独立编译器(pyjampiler)似乎无法生成可执行代码,直到您找出编译代码所依赖的JavaScript模块并自行包含它们 - 我没有尝试过这样做,但感觉这可能会相当痛苦。当您使用完整编译器时,这些模块将作为脚本标签插入到HTML中。 - user47741

0

看起来使用一个JavaScript XML RPC客户端(有一个jquery插件可以做到这一点),再加上一个XML RPC服务器是一个不错的选择。

这个jquery插件会自动检测你的RPC服务,并填充方法名称,使得在调用方法时很难出现拼写错误。但它不会测试你传递的参数数量或类型。

对于JSON RPC似乎没有相同的内省支持(或者说没有一致的标准)。这种方法也可以在Django中使用。

我已经编写了一些示例代码,并上传到这里(希望链接到自己的博客文章不被认为是糟糕的行为 - 在互联网上简单搜索似乎没有表明它是糟糕的)...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接