Jetons JavaScript et écrivons un front-end Web en Python!

Bonjour, je m'appelle Kamibayashi, ryo_grid d'Ory Lab (http://orylab.com).

Eh bien, tout le monde! Écrivez-vous JavaScript! Je l'écris aussi. Cependant, j'écris du code en C, Java, Ruby, Python, etc. depuis longtemps, donc je ne suis pas familier avec les spécifications du langage JavaScript.

Ainsi, lorsque j'ai recherché une option pour utiliser un langage autre que JS sur le front-end Web, j'ai trouvé un système de traitement Python implémenté dans le navigateur JS appelé Brython (= fonctionne dans le navigateur), alors je l'ai essayé. C'était.

Brython - A Python 3 implementation for client-side web programming

Essayez quand même

J'ai écrit en errant dans la mer du net. Le thème est le calcul de l'IMC, qui est une tâche courante pour les débutants en programmation.

Il semble que le HTML puisse être écrit comme ça.

index.html


<!DOCTYPE html>
<html>
    <head>
        <title>Calculer l'IMC avec Brython</title>
        <meta charset="utf-8">
        <script src="static/brython.js"></script>
        <script src="static/brython_stdlib.js"></script>	
    </head>
    <body onload="brython()">
     <script type="text/python" src="static/bmi.py"></script>
        <h1>Calculer l'IMC avec Brython</h1>

        <p>la taille(Mètre)
        <input type="text" id="height" />
        <p>poids(kilogramme)
        <input type="text" id="weight" />
        <br><button id="execute">C'est un calcul!</button>

        <div id="result"></div>
    </body>
</html>

Chargez brython.js, qui correspond au système de traitement, et brython_stdlib.js, qui correspond probablement à la bibliothèque Python standard, dans la section head. Ensuite, appelons la méthode brython () lors du chargement de la section body. Après cela, mettez un formulaire de saisie et un bouton, et mettez une balise div avec l'ID "result" pour afficher le résultat par opération DOM.

Écrivez le code Python dans un fichier séparé et chargez-le avec la balise de script type = "text / python". De plus, bien qu'il s'agisse d'un fichier séparé ici, il semble que vous puissiez également écrire du code Python comme écrire JS solidement en HTML.

Le fichier Python chargé ci-dessus ressemble à ceci: C'est Python tel qu'il est grammaticalement.

bmi.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

from browser import document

def calc_bmi():
    weight = float(document["weight"].value)
    height = float(document["height"].value)
    
    bmi = str(weight/(height*height))
    rslt = document["result"]
    rslt.text = bmi
    
execute_btn = document["execute"]
execute_btn.bind("click", calc_bmi)

Le processus que nous faisons est de stocker le DOM du bouton avec l'id "execute" dans la variable execute_btn, et d'enregistrer la fonction calc_bmi comme processus à déclencher à l'événement "click" via celui-ci. Il semble que le DOM puisse être obtenu avec le module document du package du navigateur.

La fonction calc_bmi obtient la valeur d'entrée du formulaire, calcule l'IMC et définit le résultat à la balise div id = "result".

Et si tu bouges ça, brython.jpg

Je me sens comme cela. Ça a marché!

J'ai mis un ensemble de ce code à https://github.com/ryogrid/LearnBrython. J'ai également inclus app.py, qui fournit la fonction de serveur Web, donc si vous avez un environnement python, vous pouvez l'exécuter immédiatement avec ce qui suit.

git clone https://github.com/ryogrid/LearnBrython.git cd LearnBrython pip install flask python app.py => Let's access http://localhost:5000/

Ce n'est pas comme Python, non?

Le code que j'ai écrit ci-dessus n'est pas très semblable à Python, mais officiellement, il semble que toute la syntaxe Python soit prise en charge.

https://brython.info/static_doc/en/syntax.html

Il semble qu'une bonne quantité de bibliothèques standard soient également prises en charge. C'est incroyable.

https://brython.info/static_doc/en/stdlib.html

N'est-ce pas une performance?

J'espère que vous jetez un œil à la galerie officielle,

Gallery

Il semble que le traitement intensif fonctionne correctement. Donc, je pense que ce n'est pas grave si ce n'est pas une application qui se soucie vraiment des performances.

De plus, il est mentionné au début de la FAQ, donc si vous voulez en savoir plus, je pense que vous devriez vous y référer.

https://brython.info/static_doc/en/faq.html

Quelle est la mise en œuvre

En regardant l'implémentation Brython sur github, il semble qu'elle s'exécute après la compilation (traduction) JIT vers JS, pas un interpréteur. Technique de puissance!

https://github.com/brython-dev/brython/blob/master/www/src/py2js.js

Si vous compilez!

Récemment, asm.js et WebAssembly, qui peuvent être appelés assembleurs pour les navigateurs, sont apparus. En générant du code d'exécution avec ceux-ci, il semble que des performances proches de celles une fois compilées en code natif seront obtenues.

Explication détaillée du langage de bas niveau asm.js et WebAssembly

Brython peut éventuellement prendre en charge de telles choses. Gardez un œil dessus à l'avenir.

en conclusion

J'ai essayé Python (Brython) en tant que langage d'implémentation web front-end au lieu de JavaScript. J'approfondis aussi un peu Brython.

Il est difficile de juger s'il peut être utilisé dans des produits commerciaux, mais pourquoi ne pas l'essayer en tant que professionnel amateur? Let's enjoy!

PS: Je ne l'ai pas mentionné cette fois, mais il semble y avoir une implémentation Python dans le navigateur JS autre que Brython, donc si vous êtes intéressé, veuillez vous référer à ce qui suit.

http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html

Recommended Posts

Jetons JavaScript et écrivons un front-end Web en Python!
Écrivons un programme Python et exécutons-le
Je veux écrire en Python! (2) Écrivons un test
Ecrire une dichotomie en Python
Ecrire des algorithmes A * (A-star) en Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Différence d'authenticité entre Python et JavaScript
Ecrire le test dans la docstring python
Ecrire une courte définition de propriété en Python
Ecrire le fichier O_SYNC en C et Python
Ecrire un programme de chiffrement Caesar en Python
Scraping de sites Web à l'aide de JavaScript en Python
Lire et écrire des fichiers JSON avec Python
Ecrire une méthode de cupidité simple en Python
Ecrire un plugin Vim simple en Python 3
Créez un framework Web avec Python! (1)
Faisons un calcul de combinaison avec Python
Créez un framework Web avec Python! (2)
Écrivez un "bot" de scraping web sans tête de base en Python avec Beautiful Soup 4
Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
Organisez les modules et les packages Python dans le désordre
J'ai écrit une classe en Python3 et Java
Créer une carte Web en utilisant Python et GDAL
Étapes pour développer une application Web en Python
Lancer un serveur Web avec Python et Flask
Création d'une bibliothèque Python pour écrire des inclusions complexes et les réduire de manière facile à lire
Faisons un saut dans l'industrie manufacturière en utilisant le Web en plus de Python
Ecrire un programme de dynamique moléculaire super simple en python
Écrivons du code python qui analyse le code go et génère du code go
Essayez de créer un jeu simple avec Python 3 et iPhone
Lire et écrire en virgule flottante simple précision en Python
Écrire des tests en Python pour profiler et vérifier la couverture
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
Lire et écrire des balises NFC avec python en utilisant PaSoRi
Écrire du code dans UnitTest une application Web Python
Démontrer et conserver les applications Web Python avec Systemd-Ubuntage 18.04.3 LTS
Écrivons respectivement Python, Ruby, PHP, Java, JavaScript
Ecrire Python dans MySQL
Atteindre __END__ en Python
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Créons un script qui s'enregistre avec Ideone.com en Python.
[Python] Chapitre 01-03 À propos de Python (Ecrire et exécuter un programme à l'aide de PyCharm)
Créons un diagramme PRML avec Python, Numpy et matplotlib.
Faisons un service de vente au comptant 4 (en Python mini Hack-a-thon)
Obtenez la page Web Python, encodez et affichez les caractères
Un moyen standard de développer et de distribuer des packages en Python
Créez le code qui renvoie "A et prétendant B" en python
J'ai créé une classe en Python et essayé de taper du canard
Supprimez les espaces de début et de fin en Python, JavaScript ou Java
Comment écrire une classe méta qui prend en charge à la fois python2 et python3
Essayez simplement de recevoir un webhook avec ngrok et Python
AtCoder ABC168 Une expression de cas résolue en Ruby et Python
Écrivez un script dans Shell et Python pour vous avertir dans Slack lorsque le processus est terminé
[Python] Le rôle de l'astérisque devant la variable. Divisez la valeur d'entrée et affectez-la à une variable
Une histoire sur tout, de la collecte de données au développement d'IA et à la publication d'applications Web en Python (3. développement d'IA)