2010-03-29 4 views
4

Je veux essentiellement de pouvoir:est-il un bon moyen de générer automatiquement le code javascript client de python côté serveur

  • Ecrire quelques fonctions en python (avec la quantité minimum de méta-données supplémentaires)
  • Transformez ces fonctions en service Web (avec le minimum d'effort/plaque de chaudière)
  • Générer automatiquement des fonctions/objets javascript pour rpc (ceci devrait m'empêcher de faire autant de choses stupides que possible comme les noms de méthodes de fautes de frappe, en oubliant le noms de méthodes, en passant le mauvais nombre d'arguments)

Exemple

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> 

Un peu de recherche m'a montré quelques approches qui se rapprochent de celle-ci:

  • Génération automatique de services json-rpc à partir de fonctions avec un petit code de plaque de chaudière en python puis en utilisant jquery et json pour faire les appels (toujours facile de faire des erreurs avec les noms de méthodes - très irritant d'écrire ces appels vous-même dans le shell firebug)

  • Utiliser une bibliothèque comme soaplib pour générer wsdl à partir de python (en ajoutant de nombreuses informations de type). Et puis en quelque sorte les convertir en javascript (ne sais pas s'il y a même une bibliothèque pour le faire)

Mais sont-il des approches plus proche de ce que je veux?

+1

ouais vous devez aller et accepter des réponses aux questions précédentes! –

+1

Peut-être que d'autres personnes ne sont pas très bon pour répondre aux questions :). – user47741

+0

La raison pour laquelle vous voulez écrire du code python et l'exécuter à distance facilement * n'est pas * d'écrire python plutôt que javascript.Mais plutôt d'exécuter des choses sur le serveur (et donc de modifier l'état sur le serveur) à la suite d'actions du côté client. Pyjamas est probablement très utile si ce que vous voulez faire est d'écrire python au lieu de javascript (et aussi si vous voulez un accès facile à un ensemble de widgets) – user47741

Répondre

6

Oui il y a, il y a Pyjamas. Cela ressemble à l'utilisation du "GWT pour Python"

+0

J'ai entendu parler de pyjamas - mais cela peut-il générer des fonctions javascript plutôt que vous pour coder l'application entière en python (ou plutôt en langage python avec une sémantique subtilement différente). Je cherchais quelque chose de léger. – user47741

+0

Oui, ça peut. Vous n'êtes pas obligé d'utiliser le tout. il y a un compilateur python to javascript, et il produit un javascript qui fait la même chose que vos fonctions python. Vous devez également faire quelque chose du côté serveur pour créer des URI jsonrpc ou plain json pour vos données, mais ce n'est pas du tout difficile. –

+0

Hmm. Toujours pas tout à fait sûr pyjama est adapté à l'usage. Il semble que vous ayez à passer à travers beaucoup de cerceaux pour effectuer cette tâche. – user47741

0

Il semble que l'utilisation d'un client XML RPC javascript (il existe un plugin jquery pour cela) avec un serveur XML RPC est une bonne solution. Le plugin jquery va introspecter votre service rpc et va peupler les noms de méthodes, il est impossible de taper le nom d'un appel de méthode sans avoir un avertissement précoce. Il ne testera cependant pas le nombre d'arguments que vous passez, ni leur type.

Il ne semble pas y avoir le même support pour l'introspection sur json rpc (ou plutôt il ne semble pas y avoir de standard cohérent). Cette approche peut également être utilisée avec django.

J'ai mis en place un exemple de code et je l'ai téléchargé here (J'espère que le lien vers les articles de son blog n'est pas considéré comme une forme terrible - une brève recherche sur internet ne semble pas le suggérer) ...

Questions connexes