<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: aliibrdevio</title>
    <description>The latest articles on Forem by aliibrdevio (@aliibrahim123).</description>
    <link>https://forem.com/aliibrahim123</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1158215%2F305066ad-cd75-432d-8290-4b48c9b78761.png</url>
      <title>Forem: aliibrdevio</title>
      <link>https://forem.com/aliibrahim123</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aliibrahim123"/>
    <language>en</language>
    <item>
      <title>NeoComp: new framework with a new paradigm</title>
      <dc:creator>aliibrdevio</dc:creator>
      <pubDate>Sat, 27 Sep 2025 18:54:42 +0000</pubDate>
      <link>https://forem.com/aliibrahim123/neocomp-new-framework-with-a-new-paradigm-1b6f</link>
      <guid>https://forem.com/aliibrahim123/neocomp-new-framework-with-a-new-paradigm-1b6f</guid>
      <description>&lt;p&gt;Hello all,&lt;br&gt;
I would like to present a new JavaScript framework I recently developed called NeoComp.&lt;br&gt;
Before I start, this is just a concept framework, so please do not increment the framework count. This is not production-ready and may not be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/aliibrahim123/neocomp.js" rel="noopener noreferrer"&gt;NeoComp&lt;/a&gt; is a JavaScript framework that aims to be simple and lightweight, yet powerful and flexible. Inspired by &lt;a href="https://solidjs.com/" rel="noopener noreferrer"&gt;Solid&lt;/a&gt; and &lt;a href="https://github.com/trueadm/ripple" rel="noopener noreferrer"&gt;Ripple&lt;/a&gt;, it supports vanilla JavaScript approaches while remaining declarative and reactive in nature.&lt;/p&gt;

&lt;p&gt;here is a counter example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Counter&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;$temp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createTop&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;$temp&lt;/span&gt;&lt;span class="s2"&gt;`&amp;lt;div&amp;gt;
            &amp;lt;div&amp;gt;count: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/div&amp;gt;
            &amp;lt;button on:click=&lt;/span&gt;&lt;span class="p"&gt;${()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;increment&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fireInit&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NeoComp, like any other modern framework, is a component-oriented framework that has first-class support for TypeScript. However, it has some interesting properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is constructive: there is a one-time initialization where the structure is created, and then further updates are handled by:&lt;/li&gt;
&lt;li&gt;fine-grained reactivity, where updates are direct and efficient, with no need to re-render the whole app.&lt;/li&gt;
&lt;li&gt;It is declarative in the sense that the structure is defined in HTML syntax, with bindings inferred implicitly.&lt;/li&gt;
&lt;li&gt;vanilla JavaScript, it is just regular JavaScript, with the full power of JavaScript, requiring no custom syntax or build step.&lt;/li&gt;
&lt;li&gt;It utilizes object-oriented components. Isn't OOP bad? have your tried large-scale functional component, plus classes are just an init function plus a free scope and interface.&lt;/li&gt;
&lt;li&gt;It features template chunks. Opposite to defining the template as a big blob at the end, you can define every section separately, with its own logic around it.&lt;/li&gt;
&lt;li&gt;It is super flexible, with out of the box async programming, lazy loading, context for state management, auto dependency management, and more.&lt;/li&gt;
&lt;li&gt;It is close to the root, providing you with full control over the DOM, as bindings are localized to specific elements.&lt;/li&gt;
&lt;li&gt;It has simplified internals with no complex mechanisms or hidden magic, only lightweight, extensible utilities.&lt;/li&gt;
&lt;li&gt;vanilla transformation, an optional build step to eliminate parsing the template at runtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NeoComp has a unique view on UI development: vanilla JavaScript imperative construction with direct, implicit bindings. The web is static structure dynamic content, we don't need custom syntax or a build step, just a lightweight foundation with flexible templating and implicit bindings.&lt;/p&gt;

&lt;p&gt;If you are interested in NeoComp, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out its documentation and dive into its source code on its &lt;a href="https://github.com/aliibrahim123/neocomp.js" rel="noopener noreferrer"&gt;repo&lt;/a&gt; on GitHub.&lt;/li&gt;
&lt;li&gt;Test it on your machine by running &lt;code&gt;npm i @neocomp/full&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Read the blog posts on &lt;a href="https://aliibrahim123.github.io/recomputed/" rel="noopener noreferrer"&gt;recomputed&lt;/a&gt;. The current posts are:

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://aliibrahim123.github.io/recomputed/web-dev/neocomp/intro.html" rel="noopener noreferrer"&gt;Intro: The Endless Quest for Declarativity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aliibrahim123.github.io/recomputed/web-dev/neocomp/failure_of_render_fn.html" rel="noopener noreferrer"&gt;The Failure of the Render Function&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aliibrahim123.github.io/recomputed/web-dev/neocomp/impl_templating.html" rel="noopener noreferrer"&gt;The Different Ways of Implementing Templating&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aliibrahim123.github.io/recomputed/web-dev/neocomp/oop_components_done_right.html" rel="noopener noreferrer"&gt;The Power of OOP Components, Done Right&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aliibrahim123.github.io/recomputed/web-dev/neocomp/template_statement.html" rel="noopener noreferrer"&gt;Template Statements, Above Revolutionary&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Share your suggestions and comments in the comment section. I would love to hear from you.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;And that is it. I hope you find NeoComp interesting and useful.&lt;/p&gt;

&lt;p&gt;And please note, this is a concept framework, not a production-ready one, also I am a first-year university student.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
