"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > django-components v Templating est désormais à égalité avec Vue ou React

django-components v Templating est désormais à égalité avec Vue ou React

Publié le 2024-11-08
Parcourir:888

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

Hé, je m'appelle Juro, je suis l'un des responsables des composants Django. Dans les versions v0.90 à 0.94, nous avons ajouté des fonctionnalités qui rendent l'utilisation des composants dans les modèles beaucoup plus flexible, similaire à JSX/Vue.

(Cette information est déjà un peu datée (publiée il y a un mois ; la dernière est la v0.101), car je suis en train d'ajouter la prise en charge des variables JS/CSS, TypeScript & Sass et des fragments HTML. Des trucs passionnants ! Mais je j'ai réalisé que je n'avais pas encore partagé cette mise à jour !)

Quoi qu'il en soit, ce qui suit est un composant blog_post, qui accepte un titre, un identifiant et des kwargs supplémentaires appliqués à partir de blog_post_props :

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

Ce qui précède est une combinaison de plusieurs fonctionnalités :

1. Balises à fermeture automatique :

Au lieu de

    {% component "my_component" %}
    {% endcomponent %}

Vous pouvez désormais simplement écrire

    {% component "my_component" / %}

2. Balises multilignes :

django_components configure désormais automatiquement Django pour autoriser les balises multilignes. Ainsi, au lieu de tout regrouper sur une seule ligne :

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

Vous pouvez le répartir sur plusieurs lignes :

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

3. Opérateur de diffusion :

De la même manière que l'opérateur ...props dans JSX ou v-bind dans Vue, cela insère des accessoires / kwargs dans une position donnée.

Donc au lieu de

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

Vous pouvez avoir les kwargs dans un dictionnaire, puis les appliquer :

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

4. Balises de modèle à l'intérieur des littéraux de chaîne dans les entrées de composants :

Vous pouvez désormais utiliser des balises et des filtres de modèle dans les entrées des composants :

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

De cette façon, vous n'avez pas besoin de définir des variables supplémentaires à chaque fois que vous devez formater une valeur.

Notez que lorsqu'il n'y a qu'une seule balise et aucun texte supplémentaire autour, le résultat est transmis sous forme de valeur. Ainsi, "{% random_int 10 20 %}" transmet un nombre et "{{ editable|not }}" transmet un booléen.

Vous pouvez même aller plus loin et vivre une expérience similaire à Vue ou React, où vous pouvez évaluer des expressions de code arbitraires, AKA similaires à celle-ci :

    

Cela peut être possible avec Django-expr, qui ajoute une balise expr et un filtre que vous pouvez utiliser pour évaluer les expressions Python à partir du modèle :

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

5. Prise en charge de {% comp_name %} {% endcomp_name %} et TagFormatter

Par défaut, les composants sont écrits à l'aide de la balise composant, suivie du nom du composant :

    {% component "button" href="..." disabled %}
        Click me!
    {% endcomponent %}

Vous pouvez désormais modifier cela (et même créer le vôtre !).

Par exemple, définir COMPONENTS.tag_formatter sur "django_components.shorthand_component_formatter" vous permet d'écrire des composants comme ceci :

    {% button href="..." disabled %}
        Click me!
    {% endbutton %}

Beaucoup d'autres choses sont à venir, alors assurez-vous d'essayer les composants Django !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/jurooravec/django-components-v094-templating-is-now-on-par-with-vue-or-react-4bg7?1 En cas de violation, veuillez contacter study_golang@163 .comdelete
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3