pyr.js: Python și R în pagini HTML, cu o etichetă de script

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Dacă ai putea pune Piton sau R cod într-o pagină HTML, faceți dublu clic pe fișier și îl rulați? Niciun server, nici un pas de construire, nicio instalare și nimic trimis nicăieri: totul rulează în browser.

Asta este pyr.js face. L-am construit săptămâna aceasta cu Claude (asistentul AI al Anthropic), care a scris codul și testele din deciziile mele de proiectare și a verificat totul într-un browser fără cap. Ridicarea grele este realizată de Pyodide (Python compilat în WebAssembly) și webR (același lucru pentru R). pyr.js este lipiciul: un singur fișier, aproximativ 460 de linii pe care le poți citi efectiv, care găsește codul Python și R în pagina ta și îl conectează la HTML.

Un prim exemplu

Salvați acest lucru ca un .html fișier și deschideți-l în browser:


count = 0

py-click rulează Python când se face clic pe butonul și py-out spune unde duce rezultatul. Orice eveniment DOM funcționează în același mod (py-input, py-change…), iar pentru R, este r-click, r-inputși așa mai departe. Ieșirea tipărită și diagramele lui R apar direct în pagină:



Aici, .value (_value în Python) păstrează valoarea curentă a glisorului, iar histograma este redesenată pe măsură ce o deplasați.

Python și R calculează, desenează JavaScript

Partea mea preferată: rezultatele pot fi transmise ca date la orice bibliotecă de diagrame JavaScript. Într-o postare anterioară, am folosit Observable Plot și Highcharts pentru tablouri de bord. Cu pyr.js, py-then / r-then transferați rezultatul unei funcții la alegere. Un cadru de date R vine ca o matrice de rânduri, gata de reprezentat:









Același lucru funcționează și cu Python: listele de dict, matrice numpy și panda DataFrames sunt convertite pentru dvs. Iată exemplul Observable Plot din depozit, cu o mers aleatorie Python (redesenată printr-un glisor) și cadrul de date R de mai sus:

imagine-titlu-aici

Cât de repede este?

Prima vizită descarcă motoarele (câțiva MB pentru Python, apoi memorate în cache de browser), iar pornirea Python durează aproximativ 3 secunde. Nimic magic până acum.

Partea interesantă: când pyr.js este găzduit pe același site cu paginile dvs., Python rulează într-un muncitor comun. Alte file ale site-ului, și chiar reîncărcările paginilor, reutilizați interpretul care rulează deja: în testele mele (Chromium), pagina era gata în sub 0,1 secunde în loc de 3. Fiecare filă are în continuare propriile variabile, iar o reîncărcare încă începe pagina proaspătă. Pentru R, webR nu permite acest lucru (încă), așa că începe cu fiecare pagină.

Există și o editare live modul de dezvoltare: puneți codul dvs. Python într-un .py fisier, adauga data-watch la eticheta de script, iar modificările dvs. se aplică paginii care rulează de îndată ce salvați, fără reîncărcare.

Confidențialitate

pyr.js nu trimite nimic nicăieri. Fără analize, fără telemetrie: codul și datele tale rămân în browserul vizitatorului. Singurele solicitări de rețea sunt pentru motoarele în sine și pachetele pe care codul dvs. le importă.

Încearcă

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.