<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged stilljs</title>
<link>https://coderlegion.com/tag/stilljs</link>
<description>Powered by Question2Answer</description>
<item>
<title>Integrating Still.js into Next.js: A Hands-On Guide to Remote Microfrontend Components - Part2</title>
<link>https://coderlegion.com/5089/integrating-still-js-into-next-js-hands-on-guide-to-remote-microfrontend-components-part2</link>
<description>&lt;p&gt;In this second part of the Microfrontend series we’re answering another posed question, we explore integrating Still.js with Next.js, focusing on using remote Vendor components. &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/RDUcSbUq6-k&quot;&gt;The video&lt;/a&gt;&lt;/strong&gt; includes a real-world use case and a project built from scratch, follow the Design System for implementation&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=18032327119953006109&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What points will be addressed &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/RDUcSbUq6-k&quot;&gt;in the video&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Creation of Next.js project&lt;/li&gt;
&lt;li&gt;Generating and embedding Still.js app inside Next.js App&lt;/li&gt;
&lt;li&gt;Embedding remote component (straight from npm) into the application&lt;/li&gt;
&lt;li&gt;Data exchange between Still.js and Next.js (React)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Remote components&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This approach is key in Microfrontends, as it enables embedding components from outside the project structure. It enhances feature sharing, increases decoupling, and reduces the size of the deployable package (e.g. bundle).&lt;/p&gt;
&lt;p&gt;The idea behind remote component is for them to be served from somewhere which is not the embedding application itself, as we can see in the bellow architecture:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=14181012443299674465&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The above architecture promotes reusability by allowing the same component, available via NPM/GitHub, to be embedded across different applications built with various frameworks. Still.js can play a key role, serving as proxy as needed, by being embedded within these apps as well. Additionally, Still.js enables components to be written in Vanilla JavaScript rather than relying on framework-specific code.&lt;/p&gt;
&lt;p&gt;Although NPM and Github are the approaches depicted in the architecture, Still.js adapts well with any other source for embedding remote components.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-contained components&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is the optimal situation in which a component can be used remotely, as the idea is that not external dependency exists so to avoid cascade importing, which can be harmful in terms of performance, also might cause JavaScript bloating issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coding snippets specific considerations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step1:&lt;/strong&gt;&lt;br&gt;
The Still.js app is integrated into the Next.js project by placing it in a subfolder (we’ll call still-mf/) inside the public/ directory. It is then loaded using the apploader with additional parameters:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;useEffect(() =&amp;gt; {

    const stillApp = new StillAppLoader();
    stillApp
      .cdn({ env: { STILL_HOME: '/still-mf/', PATH_PREFIX: 'still-mf/' }, version: '1.3.13'})
      .load();

  },[]);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step2:&lt;/strong&gt;&lt;br&gt;
Next.js listens to Still.js events via subscription. The Apploader SDK now supports init/on(‘load’) event, improving memory and CPU usage, so no setTimeout needed:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;useEffect(() =&amp;gt; {
    // …. Above code
    stillApp.on('load', () =&amp;gt; {
    
        stillApp.component.ref(ref1).variableName.onChange(newData =&amp;gt; {
           console.log(‘Still.js updated the value of variableName to ’, newData);
        });

    });
},[]);

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compared to part one of the series, the main differences in the Still.js app setup for Next.js is the need to specify PATH_PREFIX and, optionally, the framework version to define which Still.js version is used.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Embedding NPM remote component&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/RDUcSbUq6-k&quot;&gt;The video tutorial&lt;/a&gt;&lt;/strong&gt; demonstrates how the StillTreeView vendor component from Still.js is used in a real use case with Next.js + Still.js integration. The component is embedded directly from NPM as a remote as shown in the example below code snippet:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;st-element component=&quot;npm/@path/to/package/ComponentName”&amp;gt;&amp;lt;/st-element&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;As conclusion:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While not a bulletproof, Microfrontends are highly effective for complex, enterprise-scale applications. Remote components further enhance this architecture by promoting decoupling, feature sharing, and scalability. Ideally, these components should be self-contained for optimal results. Also, don't forget to check the video for more details.&lt;/p&gt;
&lt;p&gt;What’s Next?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Don't forget to check &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/RDUcSbUq6-k&quot;&gt;the video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Try implementing a more complex Microfrontend with Still.js including navigation/routing ( &lt;a rel=&quot;nofollow&quot; href=&quot;https://still-js.github.io/stilljs-site/routing/&quot;&gt;routing documentation&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;Try to compare different Microfrontend approaches with the way Still.js does disruptively&lt;/li&gt;
&lt;li&gt;Share your thoughts and ideas in case you have any concerning to this topic&lt;/li&gt;
&lt;li&gt;Bear for the next parts of this series&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Se you next time. &lt;/p&gt;
</description>
<category>Java</category>
<guid isPermaLink="true">https://coderlegion.com/5089/integrating-still-js-into-next-js-hands-on-guide-to-remote-microfrontend-components-part2</guid>
<pubDate>Fri, 29 Aug 2025 00:43:31 +0000</pubDate>
</item>
<item>
<title>From Vanilla Template to Still.js Components: A Full Build and Deployment Guide</title>
<link>https://coderlegion.com/4567/from-vanilla-template-to-still-js-components-a-full-build-and-deployment-guide</link>
<description>&lt;h3 id=&quot;a-full-still-js-build-from-raw-html-to-deployment-with-zero-dependencies-&quot;&gt;A full Still.js build from raw HTML to deployment — with zero dependencies.&lt;/h3&gt;
&lt;p&gt;A few days ago, I was asked about migrating a project to Still.js, this article is accompanied by a &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/tnEJ3GzaJRU&quot;&gt;video&lt;/a&gt; demonstrating it.&lt;/p&gt;
&lt;p&gt;Because it’s built in Vanilla JavaScript, Still.js combines perfectly with a template that is based with pure/raw HTML, CSS and JavaScript, even if some library (e.g. jQuery, Bootstrap) was used, Still.js helps you to ease separate things into components, as show cased in &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/tnEJ3GzaJRU&quot;&gt;this video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What will be covered:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Migrating a Vanilla web template to Still.js&lt;/li&gt;
&lt;li&gt;Back down the template into components conveniently&lt;/li&gt;
&lt;li&gt;Load template’s JavaScript code properly according to Still.js architecture&lt;/li&gt;
&lt;li&gt;Deploy to the cloud&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Key Considerations:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When using templates with a lot animations, or that depends on different javaScript library to load, it’s important to deeply understand it (the template) so to orchestrate each&lt;br&gt;
Script dependency just the same way it happens with raw HTML, CSS and JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Minimalist third party Script dependency approach:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now a days a lot of features like animation and more (e.g. parallax, singlePageNav, dialog, IntersectionObserver - Lazy animation) are browser native, hence, this would impact a lot in the choosing on what/when to use libraries especially when it comes to animation which some web pages are depending a lot.&lt;/p&gt;
&lt;p&gt;Vanilla JavaScript is one of the core philosophy of Still.js, hence you can use everything as natural as possible from Web Semantic to straight DOM manipulation.&lt;/p&gt;
&lt;p&gt;We’ll use &lt;a rel=&quot;nofollow&quot; href=&quot;https://templatemo.com/tm-593_personal_shape#google_vignette&quot;&gt;this template&lt;/a&gt;, and we’ll be deploying our page to Render which will provide us with a custom domain.&lt;/p&gt;
&lt;p&gt;In summary, on the coding and structure side of things the steps will be as follow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the HTML code will be moved to the Still.js template/template file (.html)&lt;/li&gt;
&lt;li&gt;Run template JavaScript animation in the stAfterInit hook, ensuring it executes after component load&lt;/li&gt;
&lt;li&gt;Convert sections into autonomous components &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Still.js helps turn vanilla templates into fast, modular, and lightweight sites with zero dependencies, giving you full control using pure JavaScript. Proper code organization is key to avoid issues like bloating or conflicts, and a vanilla-first approach is recommended, external libraries should only be used when necessary. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What’s Next?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Don't forget to follow the &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/tnEJ3GzaJRU&quot;&gt;hands-on video&lt;/a&gt; till the end so we can make the deploy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expand Your Still.js Skills&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explore advanced Still.js features like state management, routing, or&lt;br&gt;
integrating APIs. &lt;/li&gt;
&lt;li&gt;Try building a small SPA or dashboard using&lt;br&gt;
Still.js components capabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contribute to Still.js&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Still.js is open-source, consider contributing or helping improve documentation. &lt;/li&gt;
&lt;li&gt;Join the &lt;a rel=&quot;nofollow&quot; href=&quot;https://discord.com/invite/fUVJRTmQ9f&quot;&gt;discord channel&lt;/a&gt; to get fast updates and follow the discussions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ask more if needed&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Share any topic you want to see cover so content (e.g. video, article) can be produced.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se ya in the next one &lt;/p&gt;
</description>
<category>Web Dev</category>
<guid isPermaLink="true">https://coderlegion.com/4567/from-vanilla-template-to-still-js-components-a-full-build-and-deployment-guide</guid>
<pubDate>Mon, 11 Aug 2025 02:56:47 +0000</pubDate>
</item>
<item>
<title>Will Three.js Ever Match Native Mobile Game Performance for Complex AR or 3D Resumes</title>
<link>https://coderlegion.com/4284/will-three-js-ever-match-native-mobile-game-performance-for-complex-ar-or-3d-resumes</link>
<description>&lt;h4 id=&quot;will-three-js-ever-match-native-mobile-game-performance-for-complex-ar-or-3d-resumes-as-devices-get-stronger-&quot;&gt;Will Three.js Ever Match Native Mobile Game Performance for Complex AR or 3D Resumes as Devices Get Stronger?&lt;/h4&gt;
&lt;p&gt;The world of interactive digital experiences is evolving at breakneck speed, with augmented reality (AR) and 3D visualizations becoming mainstream for everything from gaming to professional portfolios like 3D . Tools like Three.js, a JavaScript library built on WebGL, have democratized 3D development by enabling developers to create stunning browser-based experiences without the need for native app development. But a critical question looms as mobile devices grow more powerful: can web-based tools like Three.js ever match the performance of native mobile game engines, such as Unity or Unreal Engine, for complex AR applications or innovative 3D resumes? This blog post dives deep into the technical, practical, and future-facing aspects of this question, exploring the strengths, limitations, and potential of Three.js in the context of increasingly powerful mobile hardware.&lt;/p&gt;
&lt;hr&gt;
&lt;h5 id=&quot;the-rise-of-three-js-and-web-based-3d&quot;&gt;The Rise of Three.js and Web-Based 3D&lt;/h5&gt;
&lt;p&gt;Three.js has become a cornerstone of web-based 3D development since its inception in 2010. Built on WebGL, it abstracts the complexities of low-level GPU programming, allowing developers to create 3D scenes, animations, and AR experiences that run directly in web browsers. From interactive product visualizations to immersive games, Three.js powers a wide range of applications. Its appeal lies in its accessibility: no app installation, cross-platform compatibility, and a relatively low learning curve compared to native game engines.&lt;/p&gt;
&lt;p&gt;For professionals, Three.js has opened new doors for showcasing work in creative ways, such as 3D resumes. Imagine a portfolio where a user can interact with a 3D model of a project, explore an AR environment that showcases skills, or navigate a virtual resume with animated elements—all accessible via a browser link. These applications are lightweight compared to full-fledged games but can still demand significant computational resources, especially when incorporating AR features like real-time object tracking or spatial mapping.&lt;/p&gt;
&lt;p&gt;However, native mobile game engines like Unity and Unreal have long been the gold standard for high-performance 3D and AR applications. Built to leverage device hardware directly, these engines power AAA games and professional AR apps with unparalleled smoothness and visual fidelity. As mobile devices become more powerful—think Apple’s A18 chip or Qualcomm’s Snapdragon 8 Gen 3 with console-level GPUs—the question arises: can Three.js, running in the constrained environment of a browser, ever compete with native performance for complex AR or 3D resume applications?&lt;/p&gt;
&lt;hr&gt;
&lt;h5 id=&quot;understanding-the-performance-landscape&quot;&gt;Understanding the Performance Landscape&lt;/h5&gt;
&lt;p&gt;To answer this, we need to break down the factors that influence performance in both web-based (Three.js) and native (Unity/Unreal) environments, particularly for mobile devices. Let’s explore the key technical considerations.&lt;/p&gt;
&lt;h6 id=&quot;1-hardware-acceleration-and-api-access&quot;&gt;1. Hardware Acceleration and API Access&lt;/h6&gt;
&lt;p&gt;Modern mobile devices are equipped with powerful GPUs that rival entry-level consoles. For example, the iPhone 16 Pro’s A18 Pro chip boasts a 6-core GPU capable of 1.2 teraflops, while high-end Android devices like the Samsung Galaxy S25 series leverage Adreno GPUs with similar capabilities. Both WebGL (used by Three.js) and native engines like Unity (via Metal on iOS or Vulkan on Android) can tap into this hardware acceleration, but they do so differently.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Three.js/WebGL&lt;/strong&gt;: WebGL, the foundation of Three.js, provides a JavaScript API for rendering 3D graphics using the device’s GPU. It’s built on OpenGL ES, which is well-optimized for mobile hardware. The upcoming WebGPU standard, which Three.js is beginning to support, promises even closer-to-metal performance with features like compute shaders and better memory management. However, WebGL/WebGPU operates within the browser, which introduces overhead from JavaScript execution, DOM rendering, and sandboxed environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native Engines&lt;/strong&gt;: Unity and Unreal Engine use low-level APIs like Metal (iOS) and Vulkan (Android) to communicate directly with the GPU. This minimizes overhead, allowing for faster draw calls, better memory allocation, and tighter control over rendering pipelines. For complex AR scenes—say, a 3D resume with real-time lighting, physics, and spatial tracking—native engines can push hardware to its limits more efficiently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Verdict&lt;/strong&gt;: Native engines have a clear edge due to direct hardware access, but WebGPU’s adoption could narrow the gap significantly, especially as browsers optimize their rendering pipelines.&lt;/p&gt;
&lt;h6 id=&quot;2-overhead-of-the-browser-environment&quot;&gt;2. Overhead of the Browser Environment&lt;/h6&gt;
&lt;p&gt;The browser is both a strength and a weakness for Three.js. On one hand, it enables instant access to 3D content without app installation. On the other, it imposes significant overhead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JavaScript Engine&lt;/strong&gt;: Three.js relies on JavaScript, which is interpreted and slower than compiled languages like C++ (used by Unity/Unreal). Even with just-in-time (JIT) compilation in modern browsers, JavaScript execution adds latency, especially for complex logic in AR or physics-heavy scenes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOM and Sandboxing&lt;/strong&gt;: Browsers manage multiple tasks (e.g., rendering web pages, handling user inputs, enforcing security). This creates contention for CPU/GPU resources, unlike native apps, which can monopolize device capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory Limits&lt;/strong&gt;: Browsers impose stricter memory caps than native apps. For a 3D resume with high-poly models, detailed textures, or AR tracking, Three.js may hit memory constraints faster, leading to stuttering or crashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Verdict&lt;/strong&gt;: The browser’s overhead is a persistent bottleneck, but as devices gain more RAM (e.g., 8–12 GB in flagship phones) and browsers optimize resource allocation, Three.js can handle increasingly complex workloads.&lt;/p&gt;
&lt;h6 id=&quot;3-ar-specific-challenges&quot;&gt;3. AR-Specific Challenges&lt;/h6&gt;
&lt;p&gt;AR applications, even for something as “simple” as a 3D resume, require real-time processing of camera feeds, spatial mapping, and sensor data (e.g., gyroscope, LiDAR). Three.js supports AR via WebXR, which interfaces with device AR capabilities. For example, iPhones with LiDAR can use WebXR for occlusion and depth mapping, while Android devices leverage ARCore.&lt;/p&gt;
&lt;p&gt;However, native engines integrate more deeply with device-specific AR frameworks (e.g., ARKit on iOS, ARCore on Android). These frameworks provide optimized access to sensors, reducing latency and improving tracking accuracy. For instance, a native AR resume built in Unity could seamlessly overlay 3D elements on a real-world desk with minimal jitter, while Three.js might struggle with frame drops on lower-end devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verdict&lt;/strong&gt;: WebXR is improving, but native AR frameworks offer superior integration and performance, especially for complex scenes requiring precise tracking.&lt;/p&gt;
&lt;h6 id=&quot;4-optimization-and-tooling&quot;&gt;4. Optimization and Tooling&lt;/h6&gt;
&lt;p&gt;Three.js has made strides in optimization, with features like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instancing&lt;/strong&gt;: Rendering multiple copies of an object efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compressed Textures&lt;/strong&gt;: Support for formats like KTX2 reduces memory usage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Level of Detail (LOD)&lt;/strong&gt;: Dynamically adjusting model complexity based on distance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React Three Fiber&lt;/strong&gt;: A React-based wrapper that optimizes rendering for complex scenes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, native engines like Unity and Unreal have decades of refinement. Features like Unreal’s Nanite (virtualized geometry) and Lumen (dynamic global illumination) are far beyond Three.js’s capabilities. These tools also offer robust profiling and debugging, making it easier to optimize for specific devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verdict&lt;/strong&gt;: Three.js is catching up, but native engines’ mature toolsets give them an edge for high-end applications.&lt;/p&gt;
&lt;hr&gt;
&lt;h5 id=&quot;the-role-of-device-advancements&quot;&gt;The Role of Device Advancements&lt;/h5&gt;
&lt;p&gt;Mobile devices are becoming monstrously powerful, blurring the line between phones and gaming consoles. By 2025, flagship devices boast:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPUs&lt;/strong&gt;: Capable of 1–2 teraflops, supporting ray-tracing and high frame rates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAM&lt;/strong&gt;: 8–16 GB, sufficient for complex 3D scenes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sensors&lt;/strong&gt;: LiDAR, advanced IMUs, and high-resolution cameras for robust AR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connectivity&lt;/strong&gt;: 5G and emerging 6G for low-latency cloud rendering.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These advancements benefit both Three.js and native engines, but they disproportionately favor web-based tools. Why? Because the browser’s overhead becomes less significant as raw hardware power grows. For example, a 3D resume with low-poly models, basic AR overlays, and simple animations is already performant on a 2025 flagship phone using Three.js. As devices push toward 20 GB of RAM and 3–4 teraflop GPUs in the next 5–10 years, Three.js could handle scenes rivaling native apps in many cases.&lt;/p&gt;
&lt;p&gt;Cloud rendering is another game-changer. Services like NVIDIA’s GeForce Now or AWS’s cloud infrastructure could offload heavy computations, allowing Three.js to stream high-fidelity 3D/AR content to mobile devices. However, this introduces latency and cost concerns, which native apps can avoid by leveraging local hardware.&lt;/p&gt;
&lt;hr&gt;
&lt;h5 id=&quot;3d-resumes-a-case-study&quot;&gt;3D Resumes: A Case Study&lt;/h5&gt;
&lt;p&gt;Let’s consider a specific use case: a 3D resume. This might include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A low-poly 3D avatar of the candidate.&lt;/li&gt;
&lt;li&gt;Interactive project showcases (e.g., spinning 3D models of designs).&lt;/li&gt;
&lt;li&gt;AR features, like placing the resume in a real-world environment.&lt;/li&gt;
&lt;li&gt;Animations, text overlays, and basic physics (e.g., objects falling into place).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Three.js Feasibility&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Three.js excels here. It can render low-to-medium-poly models, handle basic animations, and integrate AR via WebXR. Tools like React Three Fiber streamline development, and browser delivery ensures accessibility. For example, a designer could share a link to their 3D resume, viewable on any modern phone without an app download.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cons&lt;/strong&gt;: For high-poly models, complex shaders, or advanced AR (e.g., real-time occlusion with multiple objects), Three.js may struggle, especially on mid-range devices. Frame rates could drop below 60fps, and memory limits might cause crashes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Native Feasibility&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Unity or Unreal can handle high-fidelity visuals, smooth 60–120fps performance, and robust AR integration. A native 3D resume could include photorealistic avatars, dynamic lighting, and seamless AR tracking, even on mid-range devices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cons&lt;/strong&gt;: Development is more complex, requiring platform-specific builds (iOS/Android) and app store distribution. This adds time and cost, which may not justify the effort for a resume.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Verdict&lt;/strong&gt;: For most 3D resume use cases, Three.js is sufficient and more practical due to its accessibility and lower development overhead. Native engines are overkill unless the resume demands AAA-game-level visuals or complex AR interactions.&lt;/p&gt;
&lt;hr&gt;
&lt;h5 id=&quot;the-future-can-three-js-catch-up-&quot;&gt;The Future: Can Three.js Catch Up?&lt;/h5&gt;
&lt;p&gt;Looking 5–10 years ahead, several trends suggest Three.js could close the gap with native performance for many applications:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;WebGPU Adoption&lt;/strong&gt;: WebGPU, now supported in Chrome and other browsers, offers near-native GPU access. It supports compute shaders, better memory management, and faster rendering pipelines. Three.js’s integration with WebGPU will unlock performance levels closer to Metal or Vulkan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser Optimizations&lt;/strong&gt;: Browsers like Chrome and Safari are reducing overhead through better JavaScript engines (e.g., V8) and WebAssembly, which compiles code to near-native speeds. This could minimize the browser penalty for Three.js.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Device Power&lt;/strong&gt;: By 2030, mobile devices may approach PC-level performance, with 20+ GB of RAM and GPUs capable of 5–10 teraflops. This raw power will make browser overhead less noticeable for all but the most demanding applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Rendering&lt;/strong&gt;: As 5G/6G networks mature, cloud-based rendering could offload heavy computations, making Three.js viable for high-end AR experiences. However, latency and bandwidth costs remain challenges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosystem Growth&lt;/strong&gt;: The Three.js community is vibrant, with tools like React Three Fiber and libraries for physics (e.g., Ammo.js) improving rapidly. While not as mature as Unity’s ecosystem, it’s closing the gap for web-specific use cases.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;However, native engines will likely maintain an edge for the most complex scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AAA AR Experiences&lt;/strong&gt;: Applications requiring photorealistic rendering, advanced physics, or real-time ML (e.g., gesture recognition) will favor native engines due to their low-level control and optimization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Battery Efficiency&lt;/strong&gt;: Native apps can fine-tune power usage, critical for AR, which taxes CPU, GPU, and sensors. Browsers, with their multitasking nature, are less efficient.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistency&lt;/strong&gt;: Native apps can be optimized for specific devices, ensuring consistent performance across hardware. Web apps depend on browser variations, which can introduce unpredictability.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h5 id=&quot;practical-considerations-for-developers&quot;&gt;Practical Considerations for Developers&lt;/h5&gt;
&lt;p&gt;For developers building 3D resumes or AR applications, here’s how to approach the Three.js vs. native decision:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose Three.js if&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You prioritize accessibility and cross-platform delivery.&lt;/li&gt;
&lt;li&gt;Your project is lightweight to moderately complex (e.g., low-poly models, basic AR).&lt;/li&gt;
&lt;li&gt;Development speed and cost are concerns.&lt;/li&gt;
&lt;li&gt;You want to avoid app store hurdles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optimization Tips&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use compressed textures (KTX2, Basis).&lt;/li&gt;
&lt;li&gt;Implement LOD and instancing to reduce draw calls.&lt;/li&gt;
&lt;li&gt;Leverage WebXR for AR but test across devices for compatibility.&lt;/li&gt;
&lt;li&gt;Use React Three Fiber for efficient scene management.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose Native if&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need photorealistic visuals or complex AR (e.g., multi-object tracking, real-time physics).&lt;/li&gt;
&lt;li&gt;Performance (e.g., 120fps) and battery efficiency are critical.&lt;/li&gt;
&lt;li&gt;You’re targeting specific high-end devices and can afford longer development cycles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optimization Tips&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Unity’s Universal Render Pipeline (URP) for mobile optimization.&lt;/li&gt;
&lt;li&gt;Leverage device-specific APIs (e.g., ARKit’s LiDAR support).&lt;/li&gt;
&lt;li&gt;Profile extensively to avoid thermal throttling.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h5 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h5&gt;
&lt;p&gt;Three.js is already a powerful tool for creating compelling 3D resumes and AR experiences in browsers, especially for lightweight to moderately complex applications. As mobile devices grow stronger—potentially reaching 20 GB of RAM and 5–10 teraflop GPUs by 2030—and WebGPU matures, Three.js could rival native performance for most use cases. However, for the most demanding AR applications, native engines like Unity and Unreal will likely retain an edge due to their direct hardware access, mature toolsets, and optimization capabilities.&lt;/p&gt;
&lt;p&gt;For 3D resumes, Three.js is often the better choice today due to its accessibility, lower development cost, and sufficient performance for most creative showcases. As hardware and web technologies evolve, the gap will narrow further, making web-based 3D and AR increasingly viable. Developers should weigh their project’s complexity, target audience, and performance needs when choosing between Three.js and native engines. With the right optimizations, Three.js can already deliver stunning, browser-based experiences that captivate users on modern mobile devices.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/4284/will-three-js-ever-match-native-mobile-game-performance-for-complex-ar-or-3d-resumes</guid>
<pubDate>Sat, 26 Jul 2025 21:32:05 +0000</pubDate>
</item>
<item>
<title>Rethinking Microfrontend Architecture combining Still.js with React (or other Framewok) - Arch Serie</title>
<link>https://coderlegion.com/3944/rethinking-microfrontend-architecture-combining-still-with-react-other-framewok-serie</link>
<description>&lt;p&gt;&lt;strong&gt;Why Microfrontend&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Building and modernizing large, and/or legacy enterprise level applications is often challenging, as it requires rewriting significant portions or even the entire application when moving to newer technology versions. Microfrontends offer a practical solution to this problem, much like microservices do for backend. They're not just a buzzword, but a meaningful architectural approach for handling complexity and scalability. &lt;strong&gt;Still.js&lt;/strong&gt; enhances this by providing powerful and flexible means for building microfrontends, with seamless integration into frameworks like &lt;strong&gt;React&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What problems and use cases can be addressed with Microfrontend?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Application decoupling;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Progressive migration from old to new version (e.g. migrate&lt;br&gt;
framework from v2 to v15);&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fast implementation of new feature without disrupting the existing&lt;br&gt;
ecosystem;&lt;/p&gt;
&lt;p&gt;Fast Modernization of old/legacy application yet keeping things&lt;br&gt;
stable;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and more...&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;How Still.js (with React or others) for Microfrontend?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Still.js is an open source modern, complete and full-featured (with known capabilities and more) frontend framework built with vanilla JavaScript, designed for easy and scalable development and integration like embedding its app inside React apps in form of components. Bellow is a high level architecture of the integration we'll go through.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=5993855463176552330&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Quite a lot can be done in terms of Microfrontend with Still.js, however in this article we're going to focus in introductions aspects, there is also a &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/8dPNkNhpbkc&quot;&gt;video on youtube&lt;/a&gt; with a hands on tutorial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integrating with React (using Vite to generate the project)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;. Create your React App, using vite (follow &lt;a rel=&quot;nofollow&quot; href=&quot;https://react.dev/learn/build-a-react-app-from-scratch#vite&quot;&gt;React official documentation using Vite&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm create vite@latest my-app -- --template react&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Install React app dependencies.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm i&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;. In your React app, install the Still.js app loader from &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.npmjs.com/package/@stilljs/apploader&quot;&gt;@stilljs/apploader&lt;/a&gt; (on npm), this is a regular (not dev) dependency.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm i @stilljs/apploader&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;. Loading Still.js application inside React is done when the React component is mounted, we'll use the App.js(jsx,tsx,ts), which is the default React entry component.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import { useEffect } from 'react';
import './App.css';
import { RegularReactComponent } from &quot;./components/RegularReactComponent&quot;;
import { StillAppLoader } from '@stilljs/apploader';

function App() {

  useEffect(() =&amp;gt; {

    // Creating App loader instance
    const stillApp = new StillAppLoader();
    stillApp
     .cdn({ env: { STILL_HOME: 'public/micros/stillapp1/' }   })
     .load();

    // Unload the App when React component gets unmounted
    return () =&amp;gt; stillApp.unload();
  },[]);

  return (
    &amp;lt;&amp;gt;
      &amp;lt;RegularReactComponent&amp;gt;&amp;lt;/RegularReactComponent&amp;gt;
      React validating local Still component embeding
    &amp;lt;&amp;gt;
  )
}

export default App
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 5.&lt;/strong&gt; Creating the Still.js App&lt;/p&gt;
&lt;p&gt;React project generated with Vite provides a folder named public/ right on the root along with src/ and others, there (public) we generate our Still.js app.&lt;/p&gt;
&lt;p&gt;Still CLI provides the still lone command to create a Microfrontend/Lone project, providing it with very minimal setup, having the CLI installed, type in your terminal. (follow the &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/lloQ8AVLjAs&quot;&gt;link to a short video&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;still lone&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 6.&lt;/strong&gt; Create a Still.js lone component in the CDN approach&lt;/p&gt;
&lt;p&gt;It’s called “lone” because Still.js isn’t installed locally, just the component and routes file are there and it behaves the same. With CLI installed type the bellow in terminal. (follow the &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/XtTlIzPDjiI&quot;&gt;link to a short video&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;still c cp app/components/TestComponent --lone&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 7.&lt;/strong&gt; Embed Still.js component inside React app/component&lt;br&gt;
We'll change the return portion and add the Still component as follow:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  return (
    &amp;lt;&amp;gt;
      &amp;lt;RegularReactComponent&amp;gt;&amp;lt;/RegularReactComponent&amp;gt;
      React validating local Still component embeding
      &amp;lt;st-element component=&quot;TestComponent&quot;&amp;gt;&amp;lt;/st-element&amp;gt;
    &amp;lt;&amp;gt;
  )
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 8.&lt;/strong&gt; Running the React app:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm run dev&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Final result&lt;br&gt;
&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=14874813875460304955&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Intercommunication between React and Still.js&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Communication is feasible between React and Still.js once App/component is embeded, for that, we use the AppLoader as Proxy. but for the sake of size of this article we're not depicting it here, instead you can see &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/8dPNkNhpbkc&quot;&gt;this tutorial on Youtube&lt;/a&gt; which an implementation is done in practice step by step.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To wrap up&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Microfrontends aren’t a one-size-fits-all solution, but they’re ideal for highly modular and fast-evolving applications, such as modernizing legacy systems. &lt;strong&gt;&lt;code&gt;Still.js&lt;/code&gt;&lt;/strong&gt; enhances this flexibility by being framework-agnostic and built entirely in &lt;strong&gt;vanilla JavaScript&lt;/strong&gt;, making it easy to adapt to any scenario, even when traditional frameworks fall short.&lt;/p&gt;
&lt;p&gt;Give it a try and leverage the full potential of this architectural approach.&lt;/p&gt;
&lt;p&gt;See you next time! &lt;/p&gt;
</description>
<category>Java</category>
<guid isPermaLink="true">https://coderlegion.com/3944/rethinking-microfrontend-architecture-combining-still-with-react-other-framewok-serie</guid>
<pubDate>Sun, 13 Jul 2025 21:35:39 +0000</pubDate>
</item>
<item>
<title>Still.js - A way to leverage Vanilla JavaScript for Complex and Enterprise Level Web Development</title>
<link>https://coderlegion.com/3640/still-way-leverage-vanilla-javascript-for-complex-and-enterprise-level-web-development</link>
<description>&lt;p&gt;When it comes to complex web application development on the frontend, we often encounter the need to implement features using vanilla JavaScript—whether it’s for direct DOM manipulation or integrating a specific jQuery plugin. Sometimes, a from-scratch implementation using plain HTML, CSS, and vanilla JavaScript is the best (or only) choice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is Still.js&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Still.js is a modern Open Source framework that offers the same capabilities as Angular, React, and Vue—without abandoning vanilla JavaScript.&lt;/p&gt;
&lt;p&gt;Because of its pure JS approach, Still.js:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Does not require preprocessing &lt;/li&gt;
&lt;li&gt;Does not depend on bundlers like Webpack or Vite &lt;/li&gt;
&lt;li&gt;Is ideal for teams and developers who prefer direct, no-compromise access to native web technologies in addition to those modern features a Web Framework provides.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Check it up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visit &lt;a rel=&quot;nofollow&quot; href=&quot;https://stilljs.dev/&quot;&gt;stilljs.dev&lt;/a&gt; or the &lt;a rel=&quot;nofollow&quot; href=&quot;https://still-js.github.io/stilljs-site/&quot;&gt;github page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;See &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/playlist?list=PLgMBuN68Pdks-lU0R95LRzXJWgpXL48Vn&quot;&gt;youtube playlist&lt;/a&gt;&lt;br&gt;
Join and discuss on &lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://discord.com/invite/fUVJRTmQ9f&quot;&gt;Discord channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Still.js is an Open Source, contributions are welcomed, check the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/still-js/core&quot;&gt;Github Repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Suitable for complex and enterprise applications&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Enterprise-grade web applications need more than just rich UI features. They require: &lt;code&gt;modularization&lt;/code&gt;, &lt;code&gt;user permission management&lt;/code&gt;, &lt;code&gt;component routing&lt;/code&gt;, &lt;code&gt;validation&lt;/code&gt;, &lt;code&gt;separation of concern&lt;/code&gt;, &lt;code&gt;communication management&lt;/code&gt;, &lt;code&gt;Micro-frontend architecture&lt;/code&gt; (e.g. Frontend embedding and interaction), and more.&lt;/p&gt;
&lt;p&gt;Still.js supports all of this features natively without the burden of a bundler increasing build time and potential complexity or even tooling overhead.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Some code samples&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Note: Those will only work within a Still.js project with the correct setup, which is thoroughly explained in the official documentation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Basic component&lt;/strong&gt;:&lt;br&gt;
Bellow is a simple component implementing a counter, inspite the template is placed inside the class, it can be moved to a .html file which is appropriate in complex apps.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import { ViewComponent } from &quot;../../../@still/component/super/ViewComponent.js&quot;;

export class CounterComponent extends ViewComponent {

    isPublic = true;
    count = 0;

    template = `
    &amp;lt;div&amp;gt;
        &amp;lt;p&amp;gt;My counter state is @count&amp;lt;/p&amp;gt;
        &amp;lt;button (click)=&quot;increment()&quot;&amp;gt;Increment (@count)&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    `;

    increment() {
        this.count = this.count.value + 1;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Basic User authorization management&lt;/strong&gt;:&lt;br&gt;
In the bellow implementation we're stating that some components won't be accessible by the user, this can be done with proper business logic according to the user role checking.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import { StillAppMixin } from &quot;./@still/component/super/AppMixin.js&quot;;
import { Components } from &quot;./@still/setup/components.js&quot;;
import { AppTemplate } from &quot;./app-template.js&quot;;
import { CheckingAccount } from &quot;./app/components/BankAccount/CheckingAccount.js&quot;;
import { NewAccountForm } from &quot;./app/components/BankAccount/NewAccountForm.js&quot;;
import { SavingAccount } from &quot;./app/components/BankAccount/SavingAccount.js&quot;;

export class StillAppSetup extends StillAppMixin(Components) {

    constructor() {
        super();
        //Bellow the entry point component is being set
        this.setHomeComponent(NewAccountForm);
        const blackListComponents = [SavingAccount, CheckingAccount];
        //Make components black-listed by passing it to setBlackList App configuration
        this.setBlackList(blackListComponents);
    }

    async init() {
        return await AppTemplate.newApp();
    }

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Basic Form validation&lt;/strong&gt;&lt;br&gt;
Still.js provides built-in validators, but custom ones can be implemented effortlessly.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import { ViewComponent } from &quot;../../../@still/component/super/ViewComponent.js&quot;;

export class BasicForm extends ViewComponent {

    isPublic = true;
    firstName = '';
    shoeSize;

    template = `
    &amp;lt;div&amp;gt;
        &amp;lt;form&amp;gt;
            &amp;lt;div class=&quot;form-group&quot;&amp;gt;
                &amp;lt;label&amp;gt;Shoe Size&amp;lt;/label&amp;gt;
                &amp;lt;input 
                    (value)=&quot;shoeSize&quot; 
                    (validator)=&quot;number&quot; 
                    (validator-warn)=&quot;Invalid shoe size, number is required&quot;
                    placeholder=&quot;Enter valid shoe size&quot;
                &amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/form&amp;gt;
    &amp;lt;/div&amp;gt;
    `;

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Global State management&lt;/strong&gt;:&lt;br&gt;
A service serves for both Global reactive storage and data flow (e.g. HTTP requests) implementations. Services path can be set in the application level, and we can overriden for specific service with &lt;code&gt;@Path&lt;/code&gt; annotation.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import { ViewComponent } from &quot;../../../@still/component/super/ViewComponent.js&quot;;
import { CustomersService } from &quot;../../service/api/CustomersService.js&quot;;

export class BiddingDisplay extends ViewComponent {

    isPublic = true;

    /** Service declaration, will get injected automatically due to Inject anottation
     *  from the specified Path path due to the annotation
     * @Inject
     * @Path service/api/
     * @type { CustomersService } */
    custService;

    template = `&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;`;

    /** Component Hook which takes place when it's completly render and startder */
    stAfterInit() {

        this.custService.customerList.onChange((newValue) =&amp;gt; { 
            console.log('Ths customerList store got updated with: ', newValue);
        });

    }

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Hurry up, get yourself started with Still.js&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Contribute for the project as you can, check the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/still-js/core&quot;&gt;GitHub repository&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Still.js is available through NPM on @stilljs/cli. Watch the &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/playlist?list=PLgMBuN68Pdks-lU0R95LRzXJWgpXL48Vn&quot;&gt;Youtube ▶️ playlist&lt;/a&gt; and bear for more coming ones.&lt;/p&gt;
&lt;p&gt;Watch this &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=Q7mQYGnjAX8&amp;amp;list=PLgMBuN68Pdks-lU0R95LRzXJWgpXL48Vn&amp;amp;index=3&quot;&gt;Tudo App tutorial on Youtube ▶️&lt;/a&gt;, clone or download the provided &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/still-js/samples/tree/main/todo-app&quot;&gt;GitHub Todo app project&lt;/a&gt; and run locally. It demonstrates key concepts like &lt;code&gt;component communication&lt;/code&gt;, &lt;code&gt;event and state binding&lt;/code&gt;, &lt;code&gt;reactive updates&lt;/code&gt;, &lt;code&gt;@Proxy&lt;/code&gt;, and &lt;code&gt;component styling&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Connect and share your feedback on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://discord.com/invite/fUVJRTmQ9f&quot;&gt;Discord channel&lt;/a&gt;.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/3640/still-way-leverage-vanilla-javascript-for-complex-and-enterprise-level-web-development</guid>
<pubDate>Mon, 30 Jun 2025 00:03:03 +0000</pubDate>
</item>
</channel>
</rss>