Hello Mansour.
"It seems that you are implementing a component-oriented framework, like React and cie but for the backend, right? ">> yes it is one of the basic features of dragon framework ....
"Regarding HTMX, in my understanding, it's not just about SEO, but a part of a whole vision against the dominance of client-side JS frameworks (React and others). Hence, the old style of developing web applications rendered on the server becomes the norm again." >> the idea is to divided our project into small parts like any software such as php laravel or flask or django...
but we have a strong point that every file can access other files and modify their output depending on need…
and every file contains its own components …
this is the case when we do not use HTMX:
the page must be reload every time the user click or interact with the page...
we were planning on creating our virtual DOM depending on our need but at the current stage we will use HTMX.
and depending on the developer code the framework can check if request comes from HTMX or normal USER…
react use jsx and virtual DOM to interact with the user so it do not support SEO…
Next Js support it but it still take a lot of memory at server side…
I'm creating a blog and demo project with our implementation of the compiler...
unlike webLib this project designed for those web developers are not familiar with Ring concepts…
WebLib use ring functions and OOP with reflection and meta programming which is so hard for those start learning ring…
of course these concepts are important to be learned for anyone use ring, So if the developer can understand the OOP concepts can easily use this framework...
until now we just use stdlibcore library and I'm still working in core folder at first STAGES…
but some of the features in todo list will not ve done at current stages…
such as : because of the threads library do not work in windows 64x bit we can not make the asynchronous output…
* important note that we consider the windows OS as development environment and Linux as production environment...
So the output speed can be more than 4x in Linux if compared with windows (depending on the tests on my machine)
how compiler work?
we just using loops, OOP concepts ,predestined classes for implement this compiler
then create one object for file and working with at with the reference,
so we support RingVM and compiler from (Ring1.18)…
*we are not need to use tokens at current stage for implementation the classes...
the file class can be containe custom methods such as: onload and onstart and onend
to be called if defined in class...
every file cam load others files and access to the objects (by reference) as well as they can access the main file and modify its output .
we using some features not present in ring like: is keyword
syntax;:
{%~ is exp ?
<h1>if TRUE</h1>
:
"if False"
%}
we can use normal html or text in string or variables…
according to route system the project structure would be like:
-index.ring file
-src dir
index dir
page.ring file
so no need to add routes manually …
the index.ring file is empty file work just as run key ...
actually it did not loaded or read by compiler....
we are supporting all request methods post,get,put,update,delete...
also it's important to know that the output compressed without new lines or empty tabs written in the file…
when the user click on url the server will find index.ring which contain shebang line then will search on the required url depending on folder name like in (next Js) then execute page.ring file …
also we can easily execute a specific file without server just using:
dragon filename [options]
after website developed you can build your project as:
html files
text files
ring files (with classes)
one object file
thanks for your reply...
Best wishes...
Mohannad