<?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>DEV Community: Narasingh</title>
    <description>The latest articles on DEV Community by Narasingh (@narasingh).</description>
    <link>https://dev.to/narasingh</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%2F1089245%2Fe2061543-9da2-4263-a0e6-2965bb7bdb00.jpeg</url>
      <title>DEV Community: Narasingh</title>
      <link>https://dev.to/narasingh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/narasingh"/>
    <language>en</language>
    <item>
      <title>Quick Guide to Design Patterns at a High Level</title>
      <dc:creator>Narasingh</dc:creator>
      <pubDate>Sun, 21 Jul 2024 08:57:42 +0000</pubDate>
      <link>https://dev.to/narasingh/quick-guide-to-design-patterns-at-a-high-level-jl1</link>
      <guid>https://dev.to/narasingh/quick-guide-to-design-patterns-at-a-high-level-jl1</guid>
      <description>&lt;h2&gt;
  
  
  What are Design Patterns?
&lt;/h2&gt;

&lt;p&gt;Design patterns are essential tools for developing efficient and reusable code. They are standardised solutions to common problems in software design, facilitating the creation of scalable and maintainable code structures. As applications grow in complexity, design patterns become integral to the style guide, helping developers avoid redundant code and streamline feature additions. By understanding the relationships and hierarchies between different components, developers can make their code adaptable to future changes. This is where design patterns shine, providing pre-defined templates to solve recurring design challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages and Objectives of Design Patterns
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Design patterns offer several significant benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Optimized Solutions: Derived and refined by experienced programmers, design patterns provide tried-and-true solutions that enhance code efficiency and correctness.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusability: These patterns act as generic templates that can be customized to address various problems, promoting code reuse.&lt;/li&gt;
&lt;li&gt;Clarity and Elegance: By avoiding repetitive code, design patterns lead to cleaner and more elegant solutions.&lt;/li&gt;
&lt;li&gt;Development Efficiency: With a solid template in place, developers can focus more on the overall quality and functionality of the application rather than the code structure itself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Classification of Design Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgoalds8zyj88ygvhtsak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgoalds8zyj88ygvhtsak.png" alt="Image description" width="426" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Design patterns are generally classified into four main categories:&lt;/p&gt;

&lt;p&gt;1- Creational&lt;br&gt;
2- Structural&lt;br&gt;
3- Behavioural&lt;br&gt;
4- Architectural&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creational Design Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creational design patterns provide mechanisms for object creation, abstracting the instantiation process. These patterns help in managing object creation complexities and provide flexibility in deciding which objects to create based on the specific situation.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Factory: Creates objects without specifying the exact class of object that will be created.&lt;/li&gt;
&lt;li&gt;Constructor: Ensures a class only has one instance and provides a global point of access to it.&lt;/li&gt;
&lt;li&gt;Singleton: Restricts instantiation of a class to a single object.&lt;/li&gt;
&lt;li&gt;Builder: Allows the construction of complex objects step by step.&lt;/li&gt;
&lt;li&gt;Prototype: Creates new objects by copying an existing object, known as the prototype.&lt;/li&gt;
&lt;li&gt;Abstract Factory: Provides an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Structural Design Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Structural design patterns deal with object composition and relationships. They help ensure that if one part of a system changes, the entire system doesn’t need to change. These patterns make it easier to add new functionalities to objects without altering their structure.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decorator: Adds responsibilities to objects dynamically.&lt;/li&gt;
&lt;li&gt;Facade: Provides a simplified interface to a complex subsystem.&lt;/li&gt;
&lt;li&gt;Bridge: Separates an object’s interface from its implementation.&lt;/li&gt;
&lt;li&gt;Adapter: Allows incompatible interfaces to work together.&lt;/li&gt;
&lt;li&gt;Composite: Composes objects into tree structures to represent part-whole hierarchies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Behavioral Design Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Command: Encapsulates a request as an object, thereby allowing for parameterization of clients with queues, requests, and operations.&lt;/li&gt;
&lt;li&gt;Iterator: Provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation.&lt;/li&gt;
&lt;li&gt;Mediator: Reduces coupling between classes by allowing them to communicate through a mediator.&lt;/li&gt;
&lt;li&gt;Observer: Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified.&lt;/li&gt;
&lt;li&gt;PubSub (Publish-Subscribe): A messaging pattern where senders (publishers) do not program messages to be sent directly to specific receivers (subscribers).&lt;/li&gt;
&lt;li&gt;Visitor: Allows adding further operations to objects without having to modify them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architectural Design Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MVVM (Model-View-ViewModel): Facilitates a separation of development of the graphical user interface from the development of the business logic or back-end logic.&lt;/li&gt;
&lt;li&gt;MVC (Model-View-Controller): Separates an application into three interconnected components, allowing for efficient code reuse and parallel development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Design patterns play a crucial role in the structuring of an application and are invaluable tools for developers. By understanding and implementing these patterns, developers can create more robust, maintainable, and scalable applications.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Top 10 frontend frameworks in 2023</title>
      <dc:creator>Narasingh</dc:creator>
      <pubDate>Sat, 27 May 2023 06:43:04 +0000</pubDate>
      <link>https://dev.to/narasingh/top-10-frontend-frameworks-in-2023-6mg</link>
      <guid>https://dev.to/narasingh/top-10-frontend-frameworks-in-2023-6mg</guid>
      <description>&lt;p&gt;There are numerous tools and technologies available in the market to be used, however, when it comes to front-end frameworks, I can cherry pick ten popular frameworks that have been widely used and have promising futures. Please keep in mind that rankings and preferences may change over time, so it’s best to stay ahead of the curve at all times.&lt;/p&gt;

&lt;p&gt;Before we get to the top front-end frameworks, let’s have a quick look at the front-end trends. It’s been a number of years since anything genuinely remarkable has happened in the front-end arena, and to categorise it:&lt;/p&gt;

&lt;p&gt;i) Hydration&lt;br&gt;
ii) SPAs&lt;br&gt;
iii) JAMStack&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hydration and Server side rendering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--atIyOsgZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtvmanygw5lnza69tcuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--atIyOsgZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtvmanygw5lnza69tcuj.png" alt="server side rendering" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the key challenge for the front-end framework is when it comes to loading in the browser, in order to show the content to the end user, the browser needs to download the HTML, CSS and JS, then parse and render the page. It becomes challenging especially if some javascript codes has to be executed even prior to the page render since user has to wait until the page completely finish rendering, that’s when hydration comes into picture. Hydration or rehydration is a technique in which client side Js converts a static HTML web page, delivered either through static hosting or SSR, into dynamic web page attaching event handlers to the HTML elements, since HTML is already rendered on the server, this allows the end user to interact with the page while Js is still loading and running.&lt;/p&gt;

&lt;p&gt;Hydration is used by frameworks such as Next.js and Nuxt.js, as well as React in the form of a method called “hydrate” in react v16.0, which was replaced by “hydrateRoot” in v18.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SPAs (Single Page Applications)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ewOo6y3U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2fwlvwb65rkz6w9uyb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ewOo6y3U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2fwlvwb65rkz6w9uyb4.png" alt="SPA" width="768" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because of its capacity to create dynamic and responsive user interfaces, SPAs are becoming increasingly popular. The nicest feature of SPAs is that they allow you to keep the front-end and back-end applications distinct. As a result, it has become so popular that many well-known applications such as PayPal, Pinterest, Gmail, and Facebook are designed using SPAs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JAMStack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JamStack is an architecture design which make the web faster, more secure and easier to scale. The core principles like pre-rendering and decoupling, enable sites and application to be deliver with greater confidence and resilience then ever before.&lt;/p&gt;

&lt;p&gt;What does the JamStack stand for ?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_vuhaHfR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wl14sb4tomt837pm9svo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_vuhaHfR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wl14sb4tomt837pm9svo.png" alt="Jamstack" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Javascript: Programming language used by front-end applications.&lt;/p&gt;

&lt;p&gt;API — Is a way to request data from third part / other sources.&lt;/p&gt;

&lt;p&gt;Markup (HTML and CSS) — Provide formatting instructions to the browser to structure the webpage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, the top Front-end Frameworks in 2023&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#1 React&lt;/strong&gt;&lt;br&gt;
React.js has been one of the most popular front-end frameworks for several years now. It’s maintained by Facebook and is known for its component-based architecture and efficient rendering. React allows developers to build reusable UI components, making it easier to manage complex user interfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#2 Angular&lt;/strong&gt;&lt;br&gt;
Angular is a comprehensive front-end framework maintained by Google. It provides a robust set of tools and features for building large-scale applications. Angular follows a component-based architecture and offers features like two-way data binding, dependency injection, and a powerful command-line interface (CLI).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#3 Vue.js&lt;/strong&gt;&lt;br&gt;
Vue.js has gained significant popularity in recent years due to its simplicity and flexibility. It offers a smooth learning curve and can be gradually adopted into existing projects. Vue.js emphasizes the creation of reusable components and provides excellent integration capabilities with existing projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#4 Svelte&lt;/strong&gt;&lt;br&gt;
Svelte is a relatively new front-end framework that has gained attention for its unique approach to building user interfaces. Unlike React or Vue, Svelte compiles your code at build time and generates highly efficient JavaScript code, resulting in faster runtime performance. Svelte simplifies development by reducing the amount of boilerplate code needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#5 Ember.js&lt;/strong&gt;&lt;br&gt;
Ember.js is a framework that emphasizes convention over configuration. It provides a strong foundation for building ambitious web applications with its rich set of features and conventions. Ember follows the MVC (Model-View-Controller) pattern and includes features like routing, data management, and testing tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#6 Semantic UI&lt;/strong&gt;&lt;br&gt;
Semantic UI is comparatively new in the industry. It has been accepted as one of the leading frontend frameworks for web development. The usability, simplicity and spontaneous user interface are behind the success. It uses simple coding language, and hence, freshers find it easy to grasp and work with. There is a streamlined process for web and app development, and it has collaboration with several third-party libraries that make it a fantastic development platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#7 Foundation&lt;/strong&gt;&lt;br&gt;
Foundation is a popular front-end development framework that provides a set of tools and features for building responsive and customizable websites and web applications. It is built using HTML, CSS, and JavaScript, and is designed to make the process of building complex web interfaces easier and faster.&lt;/p&gt;

&lt;p&gt;**#8 Bulma&lt;br&gt;
**Bulma is an open source CSS framework based on Flexbox, it allows the developers to build and implement css on web pages more efficiently than plain css. This has been on entirely css based without any javascript dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#9 Alpine&lt;/strong&gt;&lt;br&gt;
Alpine.js is a front-end light weight Javascript framework, with a minimalist API and thoughtful features. As the Alpine.js documentation describes it, Alpine’s API is a collection of 15 attributes, six properties, and two methods. That’s a very small API profile. Its minimalist purpose is to provide reactivity in a clean format, augmented with some surrounding niceties like eventing and a central store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#10 UIKit&lt;/strong&gt;&lt;br&gt;
UIKit is a front-end framework developed by YOOtheme that provides a set of customizable and modular components for building modern and responsive user interfaces. It is built with HTML, CSS, and JavaScript and provides a range of tools and features that make it easy to create beautiful and functional websites and web applications.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Remember that these rankings may vary, and other frameworks might emerge as the year progresses. It’s essential to consider factors such as your project requirements, team expertise, community support, and the specific use case before choosing a framework. Stay updated with the latest developments in the front-end community to make informed decisions.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
  </channel>
</rss>
