joshuadavidthomas / django-bird

High-flying components for perfectionists with deadlines
https://django-bird.readthedocs.io
MIT License
66 stars 2 forks source link

Create `<bird:component_name>` custom HTML element #15

Open joshuadavidthomas opened 1 month ago

joshuadavidthomas commented 1 month ago

I really like the approach of django-cotton and dj-angles, where they take what looks like a custom HTML element and do some compilation in a template loader and swap the custom elements out for plain ole django templatetags.

I also prefer Flux's approach of namespacing the element with the library name and a colon, as opposed to the approach taken by the other two libraries where it looks like it could be a custom Web Component:

<!-- dj-angles -->
<dj-block 'content'>
</dj-block 'content'>

<!-- django-cotton -->
<c-button>
    Button
</c-product>

<!-- flux -->
<flux:button>
    Button
</flux:button>

This could just be a personal preference thing, but the first two throw me off and make me think they are custom Web Components, where the bottom I know can't be because of the colon.

In the end, it should be no harder to parse and compile with the colon vs with the dash.

joshuadavidthomas commented 18 hours ago

So I complained about dj-angles and django-cotton and their custom components syntax looking like Web Components, and preferring flux's use of the : colon -- but after some digging and research, I think that's just how Laravel defines their version of templatetags.

So.. while I think I visually prefer the colon, not doing this would save the time and effort to creating a whole custom compiler just to achieve that same API. Whereas right now, we could recommend dj-angles to achieve similar results as django-cotton, while keeping everything in this library as vanilla Django templatetags as possible. Something to think about..

joshuadavidthomas commented 6 hours ago

On the other hand, I've got a half working compiler over in https://github.com/joshuadavidthomas/django-template-ast -- maybe it's worth it to finish it up and pull it over here. Though I do worry about the long term maintenance of it all.

carltongibson commented 5 hours ago

"Do less" a wise person once told me.