dream-html
dominate
dream-html | dominate | |
---|---|---|
9 | 11 | |
134 | 1,647 | |
- | - | |
8.2 | 4.6 | |
6 days ago | 19 days ago | |
OCaml | Python | |
GNU General Public License v3.0 only | GNU Lesser General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
dream-html
- Dream-HTML โ render HTML, SVG, MathML, Htmx markup from OCaml
-
A Response to "Have Single-Page Apps Ruined the Web?"
There is some truth to this. Imho the next level of htmx is unlocked when you componentize everything like a React app...but with nested routes corresponding to nested components like a Remix app...and using an HTML generation DSL embedded directly in your language, so HTML becomes a first-class citizen of your language's constructs, rather than a templated afterthought. I have a demo of this: https://github.com/yawaramin/dream-html/tree/todoapp/app
-
Second-Guessing the Modern Web
Nowadays I highly recommend HTML embedding libraries directly in the programming language. E.g. ScalaTags https://com-lihaoyi.github.io/scalatags/ or (my own) https://github.com/yawaramin/dream-html
Yes, you give up the ability of designers and frontend-only people to easily work with the HTML templates. But in exchange you get quite a lot.
-
That people produce HTML with string templates is telling us something
I found your article very informative and it matches up quite a bit with my own thinking about HTML generation. In fact it looks like we independently arrived at pretty much the same conclusions. A lot of the issues you raise are the impetus behind the way I designed my HTML-generation DSL: https://github.com/yawaramin/dream-html
-
What's the most htmx-ish language for the server side?
I am developing an HTML generation library on top of Dream, to have great support in the language including htmx support: https://yawaramin.github.io/dream-html/dream-html/Dream_html/index.html
- dream-html: Generate HTML markup from your Dream backend server
-
My Thoughts on OCaml
Look at this code which prints out an HTML tag: https://github.com/yawaramin/dream-html/blob/main/lib/dream_...
Initially you might think generating HTML tags from data structures in code should be a simple matter. But there are complexities--some tags are defined as having no child tags, others do. Some tags are purely character data (unstructured text), not structured data. Some are just comments. We need a way to compose multiple tags together into a single 'virtual' tag for flexible HTML generation. All these conditions can be pretty hard to keep track of--unless your compiler does exhaustiveness checking. Then the compiler will tell you if you missed any cases.
In the example above I didn't make any manual effort to cover all the cases, I simple listed out the cases I wanted to handle in order. The compiler made sure that I didn't miss any.
dominate
-
Ludic: New framework for Python with seamless Htmx support
It feels weird at the beginning, but after a bit of practice I found it pretty nice to write HTML in Python.
Here is an example of a HTML page layout written with the DOMinate [1] library for example, in a "JSX-like" way:
https://github.com/olivierphi/zakuchess/blob/main/src/apps/w...
It may hurt your eyes at first sight, for sure... But similarly to technologies like Tailwind CSS, it's mostly a matter of getting used to it - and after a while it end ups feeling very natural to use :-)
1: https://github.com/Knio/dominate#readme
-
C++: The Obvious Final Step
Pretty much how https://github.com/Knio/dominate does it, but no context variable binding (otherwise gets messy with lots of nesting)
-
That people produce HTML with string templates is telling us something
You're conflating two things, dynamically creating HTML is great and lets you avoid JS in a lot of cases. It's whether you should treat your HTML document as the tree of nodes that it is in your programming language or treat it like a string.
https://github.com/Knio/dominate is a Python lib that implements this principal.
-
Views / Templates / Custom Widgets ... I just want to display non editable data
Actually excited to giive this HTML field a try - https://github.com/Knio/dominate might come in useful for me to generate the html
-
htmx_gen
How is it different from other existing projects like Dominate?
-
Python and Web Developing
If youโre talking about generating HTML using Python, I highly recommend the library Dominate. Incredibly intuitive and Pythonic way to generate HTML.
- Lona - A web framework for responsive web apps in full python
- Template-less HTML rendering in Python
- What do you guys think of Dominate? Use cases?
-
I made a Python3 framework fro integrating Python with HTML and CSS
Ive mostly used Dominate for my services. https://github.com/Knio/dominate
What are some alternatives?
litestar - Production-ready, Light, Flexible and Extensible ASGI API framework | Effortlessly Build Performant APIs
domonic - Create HTML with python 3 using a standard DOM API. Includes a python port of JavaScript for interoperability and tons of other cool features. A fast prototyping library.
htmlgo - A library for writing type-safe HTML in Golang
wasmer-python - ๐๐ธ WebAssembly runtime for Python
literal-html - Simple and unsafe HTML/XML templates for TypeScript, using tagged template literals
aiohttp-json-rpc - Implements JSON-RPC 2.0 using aiohttp
rum - Simple, decomplected, isomorphic HTML UI library for Clojure and ClojureScript
ryact - Ryact(Breact but 10x faster): a react-like framework to build super-fast web apps in python.
flog - Pre-Markdown static site generator based on UNIX tools and XSL
tocbot - Build a table of contents from headings in an HTML document.
typedef
dashborg-go-sdk - Modern internal tools. Defined, controlled, and deployed directly from backend code. No JavaScript. Secure.