【问题标题】:Is there a good way of automatically generating javascript client code from server side python有没有一种从服务器端python自动生成javascript客户端代码的好方法
【发布时间】:2011-02-02 06:32:53
【问题描述】:

我基本上希望能够:

  • 用python写几个函数(用最少的额外元数据)
  • 将这些功能转变为 Web 服务(使用最少的工作量/样板)
  • 为 rpc 自动生成一些 javascript 函数/对象(这应该可以防止我做尽可能多的愚蠢的事情,例如错误输入方法名称、忘记方法名称、传递错误数量的参数)

示例

蟒蛇:

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(不确定是否有库可以执行此操作)

但是有没有更接近我想要的方法?

【问题讨论】:

  • 是的,你需要去接受以前问题的一些答案!
  • 也许其他人不太擅长回答问题:)。
  • 想要编写python代码并轻松远程执行它的原因不是编写python而不是javascript。而是作为客户端操作的结果在服务器上运行事物(并因此修改服务器上的状态)。如果您想做的是编写 python 而不是 javascript(并且如果您想轻松访问一组小部件),睡衣可能非常有用

标签: javascript python rpc


【解决方案1】:

是的,有Pyjamas。有些人将此称为“GWT for Python”

【讨论】:

  • 我听说过睡衣——但这真的可以生成 javascript 函数,而不是要求你用 python(或者更确切地说是语义稍有不同的类似 python 的语言)编写整个应用程序。我看起来有点轻巧。
  • 是的,可以。您不必使用整个东西;有一个 python to javascript 编译器,它输出与你的 python 函数做同样事情的 javascript。您还需要在服务器端做一些事情来为您的数据制作 jsonrpc 或纯 json URI,但这一点也不难。
  • 嗯。仍然不太确定睡衣是否合身。看来你需要跳过很多圈才能真正完成这项任务。
  • 相关信息: (i) 使用完整的睡衣编译器时,您无法从模板 html 页面(共享页面)访问 javascript,因为生成的 javascript 是在 iframe 中加载的。但是,您可以使用 window.frames[0]. 访问此 iframe 并提取变量,然后执行这些。 (ii) 如果您定义了一个模块 test.py,那么其中的任何函数都存在于此 iframe 范围内名为“test”的对象上。
  • 独立编译器 (pyjampiler) 似乎不会生成可以执行的代码,直到您弄清楚编译代码依赖于哪些 javascript 模块并自己包含它们 - 我没有尝试这样做但是如果感觉这样做可能会很痛苦。当您使用完整的编译器时,这些模块将作为脚本标签插入到 html 中。
【解决方案2】:

看起来使用 javascript XML RPC 客户端(为此有 jquery 插件)与 XML RPC 服务器一起使用是一个不错的方法。

jquery 插件将自省您的 rpc 服务并填充方法名称,这样就不可能在没有得到早期警告的情况下错误键入方法调用的名称。但是,它不会测试您传递的参数数量或它们的类型。

似乎没有对 json rpc 内省的相同支持(或者更确切地说,似乎没有一致的标准)。这种方法也可以与 django 一起使用。

我已经整理了一些示例代码并上传了here(我希望链接到一个人的博客文章不被认为是糟糕的形式 - 互联网上的简短搜索似乎并不表明它是).. .

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 2018-07-19
    • 2017-06-08
    • 1970-01-01
    • 2012-01-11
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多