Есть ли хороший способ автоматического создания клиентского кода Javascript с Python на стороне сервера?
-
23-09-2019 - |
Вопрос
Я в основном хочу иметь возможность:
- Напишите несколько функций на Python (с минимальным количеством дополнительных метаданных)
- Превратите эти функции в веб-сервис (с минимумом усилий/шаблона).
- Автоматически генерировать некоторые функции/объекты javascript для rpc (это должно помешать мне делать как можно больше глупых вещей, таких как опечатка в именах методов, забывание названий методов, передача неправильного количества аргументов).
Пример
питон:
def hello_world():
return "Hello world"
яваскрипт:
...
<!-- 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 (не уверен, есть ли вообще библиотека для этого)
Но есть ли подходы, более близкие к тому, что я хочу?
Нет правильного решения
Другие советы
Похоже, что использование Javascript XML RPC-клиента (для этого есть плагин jquery) вместе с XML RPC-сервером - хороший способ.
Плагин jquery проанализирует вашу службу RPC и заполнит имена методов, чтобы исключить возможность неправильного ввода имени вызова метода без раннего предупреждения.Однако он не будет проверять количество передаваемых вами аргументов или их тип.
Похоже, что в json rpc нет такой же поддержки самоанализа (или, скорее, не существует единого стандарта).Этот подход также можно использовать с django.
Я собрал пример кода и загрузил его. здесь (Я надеюсь, что ссылки на сообщения в блоге не считаются ужасной формой — краткий поиск в Интернете, похоже, не показал, что это так)...