Seite 1 von 1

justpy

Verfasst: Montag 25. Oktober 2021, 21:20
von rogerb
Hallo zusammen,

ich bin heute zufällig über justpy gestolpert.
https://justpy.io/

Ein webframework, dessen Backend auf starlette und uvicorn basiert. Das Frontend basiert auf Vue.js.
Da angenehmerweise der gesamte Javascript code von Python erzeugt wird, findet die Programmierung ausschließlich in Python statt. Der erste Eindruck ist eigentlich ganz gut.

Einige Dinge erscheinen mir aber suspect:
https://justpy.io/tutorial/handling_eve ... ing-events

Code: Alles auswählen

import justpy as jp

def my_click(self, msg):
    self.text = 'I was clicked'

def event_demo():
    wp = jp.WebPage()
    d = jp.Div(text='Not clicked yet', a=wp, classes='w-48 text-xl m-2 p-1 bg-blue-500 text-white')
    d.on('click', my_click)
    return wp

jp.justpy(event_demo)
Events werden anscheinend als Instanzmethoden definiert, die dann in eine Klasse eingefügt werden.

Das habe ich dann so geändert, da es mir etwas besser erschien.

Code: Alles auswählen

import justpy as jp


class Div(jp.Div):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.on("click", self.my_click)

    def my_click(self, msg):
        self.text = "I was clicked"


def event_demo():
    wp = jp.WebPage()
    Div(
        text="Not clicked yet",
        a=wp,
        classes="w-48 text-xl m-2 p-1 bg-blue-500 text-white",
    )
    return wp


jp.justpy(event_demo)
Was haltet ihr davon? Hat schon jemand Erfahrung damit?

Re: justpy

Verfasst: Montag 25. Oktober 2021, 21:38
von __deets__
Da das framework das schon eh für dich macht, und die Ableitung am Ende nur boilerplate darstellt, für etwas, das du eigentlich gar nicht wirklich beeinflussen kannst (denn das DIV ist ja in seinem Verhalten im Browser definiert), würde ich das nicht machen. Sondern eher zb Self in this Umbenennen, weil es dann klar macht: das ist die Quell des Events in JS. Da heißt es ja so.

Ich fände es eher interessant, ob das Methoden einer Business-Klasse sein könnten. Die also schon ein bound Self haben. Denn man will ja zb sowas wie einen Pager oder so, der mit diversen HTML Elementen arbeitet, als ein Objekt mit mehreren events (next, prev, Page 1, 2, 3,…) verwirklichen.

Re: justpy

Verfasst: Montag 25. Oktober 2021, 22:31
von rogerb
Sondern eher zb Self in this Umbenennen, weil es dann klar macht: das ist die Quell des Events in JS. Da heißt es ja so.
Ja das Vorgehen über die abgeleitete Klasse ist wohl eher dafür gedacht eigene Komponenten zu erstellen.
Das mit "this" zur besseren Verständlichkeit ist eine Idee. Trotzdem kommt das dann ja irgendwie aus dem nichts. Muss man sich vielleicht dran gewöhnen.

Alle existierenden Componenten scheinen von einer Hierarchie von Basisklassen abgeleitet zu sein, die dann auch die Kommunikation über Websockets mit dem Frontend herstellen. Das habe ich aber noch nicht durchschaut und mit Frontendframeworks wie Vue und React kenne ich mich eigentlich auch nicht aus.
Auf unterster Stufe gibt es eine Basisklasse von der alle abgeleiteten wohl die CSS-Styles bekommen.
Ich werde mal etwas rumprobieren.

Re: justpy

Verfasst: Dienstag 26. Oktober 2021, 09:29
von DasIch
Backend und Frontend werden ab einem bestimmten Punkt so komplex dass es Sinn macht sich auf einen bestimmten Bereich zu spezialisieren. Das sieht man dann auch in Job Angeboten wo man recht explizit i.d.R. nach Backend oder Frontend Leuten sucht. Gibt natürlich auch Leute die beides können aber üblicherweise können die nur den anderen Teil ein bisschen. Conway's Law sagt uns dann natürlich welche Konsequenz dass hat: Separate Backends und Frontends die nur über eine API kommunizieren. Deswegen gehe ich davon aus das justpy nicht sonderlich weit kommen wird.

Dazu kommen hier die Behauptungen die justpy aufstellt:
JustPy is an object-oriented, component based, high-level Python Web Framework that requires no front-end programming.
Die Beispiele auf derselben Zeiten zeigen sofort dass das Unsinn ist. Jemand ohne Ahnung von HTML, CSS oder Javascript wird selbst die Beispiele auf der ersten Seite nicht komplett verstehen können. Du brauchst also mit justpy auch die Expertise die front-end programming erfordert und du betreibst dass auch nur über den Umweg Python und justpy und musst dass dann zusätzlich auch noch können.

Ich denke man müsste da auf ein viel höheres Abstraktionsniveau kommen um "no front-end programming" wahr zu machen. React Native for Web geht da in eine interessante Richtung. Noch besser wäre sowas wie den Qt Designer zu haben, wo man sich die GUI zusammen klickt und nur noch Python Code schreiben muss der ausgeführt wird wenn Events ausgelöst werden. Damit würde man aber Kontrolle über das Design abgeben müssen, dass ist im Desktop Bereich recht normal (für native Anwendungen) aber im Web halt nicht. Gibt sicherlich Bereiche in denen dass akzeptabel ist aber dass wird auch nicht überall so sein.

Re: justpy

Verfasst: Dienstag 26. Oktober 2021, 10:31
von __blackjack__
Bei Gtk kann man ja anscheinend die GUI in einem Browser anzeigen: https://docs.gtk.org/gtk4/broadway.html

Allerdings baut das nicht wirklich eine Webseite aus den GUI-Elementen, sondern rendert da tatsächlich die GUI wie sie auch bei einem X- oder Wayland-Backend gezeichnet werden würde.

Re: justpy

Verfasst: Dienstag 26. Oktober 2021, 17:48
von rogerb
Deswegen gehe ich davon aus das justpy nicht sonderlich weit kommen wird.
Ich denke es kommt darauf an, was man erwartet. Ich würde da meine Erwartungen gar nicht erst so hoch setzen. Es scheint mir in die Richtung zu gehen mal eben schnell eine Visualisierung von Daten zu erstellen.
Daher die Unterstützung von Matplotlib, Plotly, Bokey, ...
Das dann noch interaktiv und dynamisch.

Re: justpy

Verfasst: Dienstag 26. Oktober 2021, 18:35
von DasIch
Spreadsheets (Excel, Google Sheets), BI Tools (Tableau, MSTR, etc.), Jupyter Notebooks (Voilà, Databricks), ... also wenn es um schnelle Visualisierung von Daten geht fällt mir einige ganze Menge ein was wesentlich schneller wäre auch bei Datenmengen die recht groß sind. Außerdem muss man dass ganze ja noch irgendwie deployen was die Zielgruppe deutlich einschränkt.

Re: justpy

Verfasst: Dienstag 26. Oktober 2021, 19:30
von rogerb
Sicher. Ich sage ja auch nur, dass mir der Schwerpunkt bei der Durchsicht der Dokumentation aufgefallen ist.
Wie gesagt, die Erwartung, dass es das schnellste, beste, neueste Tool wird, von dem jeder spricht, habe ich auch nicht.
Mich interessiert eher die technische Umsetzung, wie gut das Ganze gemacht ist (soweit ich das beurteilen kann) und was sind die Möglichkeiten.
Wie ist es mit der Einbindung einer Datenbank? Habe dazu noch keinen Hinweis in der Doku gefunden. Was ist mit Benutzerauthentifizierung?
Da es auf uvicorn läuft, dürfte das Deployment ähnlich einer Flask- oder FastApi -App sein.