Есть ли хороший способ автоматической генерации кода клиента JavaScript из серверной части Python - PullRequest
4 голосов
/ 30 марта 2010

Я в основном хочу иметь возможность:

  • Напишите несколько функций на python (с минимальным количеством дополнительных метаданных)
  • Превратите эти функции в веб-сервис (с минимумом усилий / котельной)
  • Автоматически генерировать некоторые функции / объекты javascript для rpc (это должно помешать мне делать как можно больше глупостей, таких как опечатки в именах методов, забывать имена методов, передавая неверное количество аргументов)

Пример

питон

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>

Небольшое исследование показало мне некоторые подходы, которые близки к этому:

  • Автоматическая генерация служб json-rpc из функций с небольшим кодом в Python, а затем с помощью jquery и json для выполнения вызовов (все еще легко делать ошибки с именами методов - все еще нужно знать URL-адреса) при звонке очень раздражает писать эти звонки самостоятельно в оболочку firebug)

  • Использование библиотеки, подобной soaplib, для генерации wsdl из python (путем добавления обильной информации о типах). А затем каким-то образом преобразовать это в javascript (не уверен, есть ли даже библиотека для этого)

Но есть ли подходы ближе к тому, что я хочу?

Ответы [ 2 ]

6 голосов
/ 30 марта 2010

Да, есть, Пижама . Некоторые люди считают это « GWT для Python»

0 голосов
/ 03 апреля 2010

Похоже, использование javascript XML RPC-клиента (для этого есть плагин jquery) вместе с XML-RPC-сервером - хороший путь.

Плагин jquery будет анализировать вашу службу rpc и заполнять имена методов, делая невозможным ввод неправильного имени вызова метода без раннего предупреждения. Однако он не будет проверять количество передаваемых аргументов или их тип.

Похоже, что в json rpc не существует такой же поддержки для самоанализа (точнее, не существует согласованного стандарта). Этот подход также можно использовать с django.

Я собрал пример кода и загрузил его здесь (Я надеюсь, что ссылки на посты в блоге не считаются ужасной формой - краткий поиск в Интернете, похоже, не предлагал был) ...

...