django-components v Templating ist jetzt auf Augenhöhe mit Vue oder React

Barbara Streisand
Freigeben: 2024-09-26 06:58:22
Original
474 Leute haben es durchsucht

django-components v Templating is now on par with Vue or React

Hey, ich bin Juro, ich bin einer der Betreuer von Django-Komponenten. In den Versionen v0.90–0.94 haben wir Funktionen hinzugefügt, die die Verwendung von Komponenten in Vorlagen viel flexibler machen, ähnlich wie bei JSX/Vue.

(Diese Informationen sind bereits etwas veraltet (veröffentlicht vor einem Monat; die neueste Version ist v0.101), da ich damit beschäftigt bin, Unterstützung für JS/CSS-Variablen, TypeScript & Sass und HTML-Fragmente hinzuzufügen. Spannendes Zeug! Aber ich Mir ist aufgefallen, dass ich dieses Update noch nicht geteilt habe!)

Wie auch immer, das Folgende ist eine Komponente blog_post, die einen Titel, eine ID und zusätzliche Kwargs akzeptiert, die von blog_post_props angewendet werden:

    {% blog_post
      title="{{ person.first_name }} {{ person.last_name }}"
      id="{% random_int 10 20 %}"
      ...blog_post_props
    / %}
Nach dem Login kopieren

Das Obige ist eine Kombination mehrerer Funktionen:

1. Selbstschließende Tags:

Statt

    {% component "my_component" %}
    {% endcomponent %}
Nach dem Login kopieren

Sie können jetzt einfach schreiben

    {% component "my_component" / %}
Nach dem Login kopieren

2. Mehrzeilige Tags:

django_components konfiguriert Django jetzt automatisch so, dass mehrzeilige Tags zugelassen werden. Anstatt also alles in eine einzige Zeile zu packen:

    {% component "blog_post" title="abcdef..." author="John Wick" date_published="2024-08-28" %}
    {% endcomponent %}
Nach dem Login kopieren

Sie können es auf mehrere Zeilen verteilen:

    {% component "blog_post"
      title="abcdef..."
      author="John Wick"
      date_published="2024-08-28"
    / %}
Nach dem Login kopieren
Nach dem Login kopieren

3. Spread-Operator:

Ähnlich wie der ...props-Operator in JSX oder der v-bind in Vue werden hiermit props/kwargs an einer bestimmten Position eingefügt.

Also statt

    {% component "blog_post"
      title="abcdef..."
      author="John Wick"
      date_published="2024-08-28"
    / %}
Nach dem Login kopieren
Nach dem Login kopieren

Sie können die Kwargs in einem Wörterbuch haben und dann Folgendes anwenden:

    # Python
    props = {
        "title": "abcdef...",
        "author": "John Wick",
        "date_published": "2024-08-28"
    }
Nach dem Login kopieren
    {# Django #}
    {% component "blog_post" ...props %}
Nach dem Login kopieren

4. Vorlagen-Tags innerhalb von Zeichenfolgenliteralen in Komponenteneingaben:

Sie können jetzt Vorlagen-Tags und Filter in Komponenteneingaben verwenden:

    {% component 'blog_post'
      "As positional arg {# yay #}"
      title="{{ person.first_name }} {{ person.last_name }}"
      id="{% random_int 10 20 %}"
      readonly="{{ editable|not }}"
    / %}
Nach dem Login kopieren

Auf diese Weise müssen Sie nicht jedes Mal zusätzliche Variablen definieren, wenn Sie einen Wert formatieren müssen.

Beachten Sie, dass das Ergebnis als Wert übergeben wird, wenn nur ein einzelnes Tag und kein zusätzlicher Text vorhanden ist. „{% random_int 10 20 %}“ übergibt also eine Zahl und „{{ editable|not }}“ übergibt einen booleschen Wert.

Sie können sogar noch einen Schritt weiter gehen und eine ähnliche Erfahrung wie Vue oder React machen, wo Sie beliebige Codeausdrücke auswerten können, also ähnlich wie hier:

    <MyForm
      value={ isEnabled ? inputValue : null }
    />
Nach dem Login kopieren

Dies kann mit django-expr möglich sein, das ein expr-Tag und einen Filter hinzufügt, mit denen Sie Python-Ausdrücke innerhalb der Vorlage auswerten können:

    {% component "my_form"
      value="{% expr 'input_value if is_enabled else None' %}"
    / %}
Nach dem Login kopieren

5. Unterstützung für {% comp_name %} {% endcomp_name %} und TagFormatter

Standardmäßig werden die Komponenten mit dem Komponenten-Tag geschrieben, gefolgt vom Namen der Komponente:

    {% component "button" href="..." disabled %}
        Click me!
    {% endcomponent %}
Nach dem Login kopieren

Sie können dies jetzt ändern (und sogar Ihr eigenes erstellen!).

Wenn Sie beispielsweise COMPONENTS.tag_formatter auf „django_components.shorthand_component_formatter“ setzen, können Sie Komponenten wie folgt schreiben:

    {% button href="..." disabled %}
        Click me!
    {% endbutton %}
Nach dem Login kopieren

Es wird noch viel mehr kommen, also probieren Sie django-components unbedingt aus!

Das obige ist der detaillierte Inhalt vondjango-components v Templating ist jetzt auf Augenhöhe mit Vue oder React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!