Hello! Welcome to my moduleâs page! Firstly, thank you very much for being interested enough to click on my project, and secondly, for taking the time to read this. So what did you click on?
Ana (or Ana.js
) is me trying to escape framework hell. Specifically, escape frameworks whose syntax looks like HTML (I'm looking at you JSX). Ana does this by still looking like TypeScript (and JavaScript). Rendering elements looks like readable phrases a.button('primary')
renders <button class=âprimaryâ />
, and reads like âa button primaryâ. The aim of the framework is for it to look and feel as if it was another update for the JavaScript language itself, providing a set of shortcuts to known JS features, instead of proposing a new language itself.
The short answer is: if you need to render reactive HTML/SVG elements focusing on time to interaction. Pure Ana.js is like pure JSX, it is a very useful tool but requires others for complex applications.
The syntax doesnât look like HTML. It doesnât have any < />
, and looks more like pure TypeScript (or JavaScript). Ana provides functions that render reactive web elements without the need for any .html files at all.
You are not stuck to rendering on the server or the client. In its ideal form, Ana renderers all static content on the server and works the interactions with the client. Nevertheless, this feature is flexible for apps that render purely on the client or purely on the server.
Thanks to TypeScript Magic, I defined an interface with a standard of good practices for HTML/SVG elements that uses Anaâs render methods. This avoids the need of researching if an elementâs attribute is a good practice, experimental, deprecated or whatever.
- SRR Functionality: Render HTML markup as strings on the server.
- Render empty elements.
- Render parent elements.
- Render elements with attributes.
- Render SVG elements.
- Publish library.
- Render a static site in the server.
- Add CSS and JS to the static site.
- Render elements with event listeners.
- Reactivity: Make rendered elements reactive to a data state.
- Components: Add an architecture that supports reusable UI components.
- Unit testing.
- Ana
- Renderer
- Utils
- Documentation
- Contributing (update to Deno project)
- Changelog (edit to only have the current versionâs changes)
- Readme (add Getting Started)
- Utils
- Types
- Renderer
- Elements
- Ana
- Error handling.
- Github actions for CI/CD.
- Project dockerization.
- Prettier plugin or configuration file.
- VSCode syntax highlighting.
- Scaffolding CLI package
ana-cli
.