<?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: Emma Turner</title>
    <description>The latest articles on DEV Community by Emma Turner (@turneremma21).</description>
    <link>https://dev.to/turneremma21</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%2F540573%2Fbff11861-2575-45f7-86cb-de0d034bd980.jpg</url>
      <title>DEV Community: Emma Turner</title>
      <link>https://dev.to/turneremma21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/turneremma21"/>
    <language>en</language>
    <item>
      <title>The Impact of SaaS Marketing Automation on Businesses</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Fri, 21 Jul 2023 08:24:09 +0000</pubDate>
      <link>https://dev.to/turneremma21/the-impact-of-saas-marketing-automation-on-businesses-2g3k</link>
      <guid>https://dev.to/turneremma21/the-impact-of-saas-marketing-automation-on-businesses-2g3k</guid>
      <description>&lt;p&gt;Learn everything about SaaS marketing automation and how it impacts your business.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;It is without question that the SaaS industry is booming today. According to &lt;a href="https://financesonline.com/saas-statistics/" rel="noopener noreferrer"&gt;statistics&lt;/a&gt;, it can grow up to $623 billion this year. So many SaaS entrepreneurs are sprouting and it has become such a challenge to make your own company stand out. Growing a business with SaaS tools is a tried and tested technique that every modern marketer has to learn. Whether you are new in the business or just getting started at taking your business online, it is necessary to implement SaaS marketing automation if you want to stay ahead of the pack.&lt;/p&gt;

&lt;p&gt;Being in the marketing world is exciting. There is a need to constantly look for better marketing strategies and implement them to get the best results for your business. With plenty of competition on the loose, it is crucial to refine your knowledge about business marketing, especially when it concerns modern approaches, like SaaS marketing.&lt;/p&gt;

&lt;p&gt;Dive on to know how you can use SaaS tools for digital marketing. This article will give insights into how different SaaS tools can grow your business quickly. We will also provide details on how you can tackle top business marketing difficulties using SaaS marketing automation tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SaaS Marketing?
&lt;/h2&gt;

&lt;p&gt;Unlike a regular marketing strategy where you have the products on hand that you try to sell to potential customers, SaaS marketing focuses on attracting customers to sign up for subscription-based digital products. SaaS, or Software as a Service, allows users to connect and access cloud-based apps using the Internet. SaaS marketing, therefore, is a type of marketing that aims to build awareness, generate leads, acquire new customers, and retain existing customers for a SaaS product.&lt;/p&gt;

&lt;p&gt;Traditional businesses treat transactions as a “one and done” deal by which making a sale is the ultimate goal. With SaaS, the focus is to retain customers long after they have downloaded or tried the demo product. This makes the SaaS customer journey more complex. It requires a lot of work to create and promote the content so that it reaches audiences with varied levels of awareness. It means that a wide range of content is needed, based on what customers need to know or already know.&lt;/p&gt;

&lt;p&gt;To put up an effective SaaS marketing strategy, you have to understand the customers before you can attract and reach them. But understanding their needs is only a chunk of the many obstacles that you need to overcome when marketing a business.&lt;/p&gt;

&lt;h2&gt;
  
  
  SaaS Marketing Automation in a Nutshell
&lt;/h2&gt;

&lt;p&gt;The primary goal of SaaS marketing is to generate new leads and convert them into paying customers which will increase the business revenue. This can be achieved faster and easier through marketing automation.&lt;/p&gt;

&lt;p&gt;Simply put, SaaS marketing automation is a method of simplifying the SaaS marketing process using tools or apps. With specially-designed software, a bunch of repetitive marketing tasks are either simplified or eradicated. It is the process of optimizing workflows so that organizations become more productive in their marketing efforts. Apart from reducing time and effort spent on redundant tasks, marketing automation also addresses several difficulties in marketing a business.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Marketing a Business Difficult and How can SaaS Marketing Automation Help?
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  1. Misalignment between objectives and processes.
&lt;/h3&gt;

&lt;p&gt;A misalignment in business occurs when the strategy-making body of the company is disconnected from the operational process that is responsible for the execution of day-to-day decisions for the business. It is important that all teams support the company’s objectives and the methods that are developed and implemented will help realize those objectives.&lt;/p&gt;

&lt;h3&gt;
  
  
  : Automation streamlines marketing workflows.
&lt;/h3&gt;

&lt;p&gt;Oftentimes the problem is not because of the team per se but because of the lack of methods to streamline the workflows. Marketing deals with a lot of processes and a lot of them are small and repetitive tasks. Team members are faced with bottlenecks because of the number of tasks and processes that need to be managed.&lt;/p&gt;

&lt;p&gt;SaaS marketing automation eradicates redundant marketing activities that are either routine or non-essential. By automating some of the activities, you can focus on the most value-added processes. It facilitates a better approach when you have a lot on your plate so that you ensure that everything is managed and nothing is overlooked.&lt;/p&gt;

&lt;p&gt;### 2. The inability to leverage existing data or technologies.&lt;/p&gt;

&lt;p&gt;Monitoring the performance of marketing efforts is crucial but doing it takes a lot of time and effort. Those who fail at their strategies oftentimes do not realize that there is a mine of information laid around, waiting to be analyzed. Much worse, they do not know that the existing data they have has the potential to improve their companies in many aspects.&lt;/p&gt;

&lt;h3&gt;
  
  
  : Accurate data tracking and analysis can be achieved through automation.
&lt;/h3&gt;

&lt;p&gt;Having a marketing stack that includes tools to gather, track, and interpret data generally makes it faster and easier to drive meaningful improvements, like income growth, in your business. Consumers have a lot of choices and it is crucial to satisfy their needs ASAP. Marketers need to use integrated data and technology, such as automation, to make timely decisions. Automated data tracking and analysis will let you understand customers so you can engage and assist them better.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.  Handling a business with suboptimal team collaboration/communication.
&lt;/h3&gt;

&lt;p&gt;Running effective marketing campaigns does not only require the best strategy. Effective communication between team members also matters. At the height of the pandemic, a lot of marketing teams had to work remotely. It became such a challenge to be productive because of the lack of a better process to work collaboratively when teams are geographically scattered.&lt;/p&gt;

&lt;h3&gt;
  
  
  : Automation can increase team efficiency and productivity.
&lt;/h3&gt;

&lt;p&gt;SaaS marketing automation tools provide a real-time and more organized platform for communication between teams. This allows for more effective collaboration since it is easier to brainstorm ideas and work on projects. With marketing automation, collaborative tools are introduced and it takes care of more than the communication challenges. These tools can also allow teams to remotely access files, do edits, and keep track of progress. They can sort out difficult areas of the project without being in the same location.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Insufficient customer insight
&lt;/h3&gt;

&lt;p&gt;Oftentimes the problem why customers do not stay loyal to the brand is because they have not developed a high level of trust and confidence. This makes it challenging for the marketing team to increase ROI with a higher customer retention rate. The most common root cause is the lack of insight about what customers want and need. This leads to unmet customer expectations because they are left unsatisfied with their experience with the brand.&lt;/p&gt;

&lt;h3&gt;
  
  
  : Automation will provide a faster lead nurturing process and develop customer loyalty and trust
&lt;/h3&gt;

&lt;p&gt;Marketing automation allows brands to truly understand customers by creating a complete customer profile. This is done by providing the tools necessary to collect customer data, create a customer analysis, and assess customer intelligence. These are all necessary during the lead nurturing process as they give a complete picture of the user behavior. From the different data points, you can create memorable experiences during the entire customer journey which will lead to customer satisfaction and loyalty.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Lack of resources.
&lt;/h3&gt;

&lt;p&gt;Marketing is expensive. Every strategy will most likely require resources, such as money, time, and effort, to implement. Funding can be a bit of a problem for most startups and is one of the reasons why their marketing efforts are either ineffective or not enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  : Automating reduces costs for manpower, resources, and marketing efforts.
&lt;/h3&gt;

&lt;p&gt;With automation, a lot of costs are lowered, not only in terms of marketing. First off, the cost of implementing automation strategies is significantly lower since they are spread over time, like when subscribing to SaaS tools. It is easier to predict the monthly operating expenses and the flow of expenses can be strictly monitored. As for the manpower needs, there are plenty of tools that can replace the need to hire more people in the team. Photo background removal, for example, can be done by using a reliable tool, like Removal.AI. This is a much cheaper alternative to hiring a full-time photo editor who will do the same type of job. There are automated solutions that take care of crucial marketing tasks, like content creation, social media management, and customer relations. In the end, you will realize how much these different solutions collectively help in lowering the costs of your business operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Many businesses experience difficulty adapting to changing markets and customer needs.
&lt;/h3&gt;

&lt;p&gt;People change and so do their preferences. What could be a fad today will be gone in a couple of days. As a marketer, it is crucial to be able to adapt to the changes fast or risk losing the interest of customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  : Automation can provide the ability to personalize customer experiences.
&lt;/h3&gt;

&lt;p&gt;One of the best benefits of SaaS marketing automation is that it gives precise data about what the customers want or need. This enables marketers to adjust their marketing approaches based on current preferences. Eliminating uncertain points will help you plan out a marketing plan that has a higher chance of success.&lt;/p&gt;

&lt;p&gt;As you can see, all of these marketing challenges are nothing when you have the right SaaS tools for digital marketing. SaaS marketing automation is an effective way to be relevant to your marketing efforts. It ensures that you stay productive even with such a tight budget for business operations. It allows you to understand the customers better so you can serve them in the best possible ways. More importantly, it gives you the advantage of harnessing new technologies that will help you create winning marketing strategies that will significantly contribute to business growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  SaaS Marketing Automation Tools to Help Your Business
&lt;/h2&gt;

&lt;p&gt;It does not take a genius to realize how SaaS marketing can be a gem to any company. Now is the perfect time to explore the versatility of SaaS apps starting with this SaaS tools list:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Contentoo.com
&lt;/h3&gt;

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

&lt;p&gt;Contentoo is a game-changer for businesses that want to maximize the potential of their content marketing campaigns. With an extensive network of pre-qualified professionals, Contentoo helps enterprises access the highest quality talent from around the world. By combining this talent with features like collaboration tools and performance tracking, companies are able to create unique experiences that stand out from the competition. Contentoo's one-stop-shop for content creation makes it easy to craft campaigns that deliver results. With its user-friendly interface and powerful features, it's no wonder why Contentoo is Europe’s premier platform for professional content marketing talent.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.  &lt;a href="https://www.rocketseed.com/" rel="noopener noreferrer"&gt;Rocketseed.com&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;Rocketseed.com is the perfect solution for creating professional email signatures quickly and easily. Whether you choose to use one of their pre-made templates, or brief their expert design team for a bespoke solution, Rocketseed makes it simple to create an on-brand signature in no time. With its easy-to-use drag and drop editor, customize font styles, sizes and colors to create a signature that perfectly reflects your business. Plus add logos, social media icons and other interactive links to ensure you have a fully integrated digital presence. Get professional email signatures in minutes!&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://spotlightr.com/" rel="noopener noreferrer"&gt;Spotlightr.com&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;Spotlightr offers creators, marketers and businesses a comprehensive platform for video hosting. Built to be secure enough for course creators, powerful enough for marketers, and flexible enough for growth, Spotlightr is the perfect solution to protect your videos from unauthorized downloads and provide your viewers with a professional experience. With its own branding capabilities and file hosting options, Spotlightr is the only video host that can accommodate courses, marketing funnels and budgets. Get started with Spotlightr today and take your business to the next level.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Creasquare.io
&lt;/h3&gt;

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

&lt;p&gt;Using AI technology, Creasquare is a useful tool that can do important marketing tasks, like content creation and social media management. It has its own Creative Studio that lets you create digital assets such as videos and images. It has plenty of templates, royalty-free photos, a video and music library, and animations that you can use to make creative marketing materials. You can also set up a brand kit that will customize everything that you make and make it your own.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.   Renderforest.com
&lt;/h3&gt;

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

&lt;p&gt;One of the ways to impress the audience is by presenting them with awesome content. Renderforest can take care of this job with its revolutionary set of design tools. Even without formal training on graphic design, you can create stunning presentations, mockups, videos and animations for your brand. Everything you create using its powerful features can be used to boost online presence and increase brand awareness.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;a href="https://www.kittl.com/" rel="noopener noreferrer"&gt;Kittl.com&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;You can’t avoid &lt;a href="https://www.kittl.com/create/" rel="noopener noreferrer"&gt;creating designs&lt;/a&gt; when you are doing any kind of marketing. Graphic design is essential in digital marketing and it will do you a lot of good if you can create stunning designs to promote your business. Kittl is a great tool for both expert and newbie designers. Its intuitive design tools like &lt;a href="https://www.kittl.com/create/logos" rel="noopener noreferrer"&gt;logo maker&lt;/a&gt;, AI image generator, &lt;a href="https://www.kittl.com/create/t-shirts" rel="noopener noreferrer"&gt;t-shirt designer&lt;/a&gt; and more, professional templates, and precision editing features make it the next-generation design creation platform. Graphics can be created in seconds and nobody will doubt for a second that your designs are not created by professionals.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.  &lt;a href="https://removal.ai/" rel="noopener noreferrer"&gt;Removal.AI&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;One of the fundamental rules of digital marketing is to use high-quality and striking images in every asset. Removal.AI is an all-in-one solution to prepare photos before they are used for marketing purposes. It is one of the best SaaS marketing automation tools because it can save you tons of work from editing photos. With this tool, you can remove backgrounds in seconds, enhance photos on the built-in photo editor, and change backgrounds for a plain color or another background photo.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.  &lt;a href="https://designstripe.com/" rel="noopener noreferrer"&gt;Designstripe.com&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;Illustrations are one of the main digital assets that you need to have for your brand. They are versatile and are very effective at delivering brand messages for a targeted audience. Designstripe is a great tool to have if designing illustrations is not your forte. It has a huge library of illustration templates that you can personalize to fit your brand. You can also use it to create amazing mockups for your website, apps, or products.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.  &lt;a href="https://www.drawkit.com/" rel="noopener noreferrer"&gt;Drawkit.com&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;This is one of the best marketing SaaS tools that you can get your hands on when you are looking for a way to impress the audience. Instead of the usual graphics, Drawkit has customizable illustrations in both 2D and 3D forms. It also has features to create mockups and animations. It provides a way for you to skip on boring content and create exciting ones for your customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.  &lt;a href="https://missinglettr.com/" rel="noopener noreferrer"&gt;Missinglettr.com&lt;/a&gt;
&lt;/h3&gt;

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

&lt;p&gt;A unified content strategy is what may be missing in your marketing arsenal. Missinglettr is a great platform that can do almost every marketing process. It helps you grow social media channels with powerful content. It automates social media drip campaigns so that you can receive plenty of inbound traffic without lifting a finger. Manage social media posts with its efficient social media calendar. On top of it all, you can use this tool to analyze your metrics. This is crucial since metrics give you an overview of your campaign’s success and business growth. Missinglettr saves you the trouble of manually gathering and analyzing data.&lt;/p&gt;

&lt;p&gt;Whether you are facing difficulties in producing impressive content or are at the verge of panic trying to retain customers, there is a SaaS marketing automation tool that you can use to solve the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;SaaS marketing automation is wonderful. There are many advantages to using marketing SaaS tools and the ultimate benefit is that you can use it to leverage your business’ success. Using different SaaS tools for digital marketing is a fantastic strategy to ensure that every step of the marketing process is done flawlessly. By doing so, you get to have more efficient campaigns that will lead you towards achieving business goals faster and easier.&lt;/p&gt;

&lt;p&gt;Obviously, marketing automation does wonders to any business. It provides a way for marketers to work wiser instead of harder in trying to make the business grow. It helps you improve all marketing operations while optimizing the strategies that you are using for your campaigns.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>saas</category>
    </item>
    <item>
      <title>Forget Shopify Why MedusaJS Is the Future of Headless Ecommerce</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Sat, 10 Jun 2023 21:54:53 +0000</pubDate>
      <link>https://dev.to/turneremma21/forget-shopify-why-medusajs-is-the-future-of-headless-ecommerce-ecd</link>
      <guid>https://dev.to/turneremma21/forget-shopify-why-medusajs-is-the-future-of-headless-ecommerce-ecd</guid>
      <description>&lt;p&gt;Have you been hearing all the buzz about headless e-commerce lately but aren't quite sure what it means or why you should care? Well, let me tell you, as an e-commerce business owner, headless commerce is something you need to pay attention to.&lt;/p&gt;

&lt;p&gt;Headless commerce decouples your frontend customer experience from your backend e-commerce infrastructure, giving you way more flexibility and control.&lt;/p&gt;

&lt;p&gt;If you're looking for a headless e-commerce solution that's easy to set up, developer-friendly, and cost-effective, MedusaJS is the platform for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medusajs.com/"&gt;MedusaJS&lt;/a&gt; is an open-source headless commerce engine that lets you build customized e-commerce experiences tailored to your business needs. With MedusaJS, you have full control over your frontend but get all the e-commerce functionality you'd expect from a traditional ecommerce platform on the backend.&lt;/p&gt;

&lt;p&gt;We're talking about things like a product catalog, cart and checkout, payment processing, order management, and more. The best part? MedusaJS is free to use and open source, so you'll save a ton of money versus going with a proprietary SaaS platform.&lt;/p&gt;

&lt;p&gt;Curious to learn more about this exciting new headless ecommerce solution and how it can transform your business? Read on! MedusaJS just might be the future of ecommerce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is headless ecommerce gaining popularity?
&lt;/h2&gt;

&lt;p&gt;If you're an e-commerce business, it's time to consider going headless. Headless commerce means decoupling your frontend customer experience from your backend e-commerce platform. A headless setup gives you way more flexibility and control.&lt;/p&gt;

&lt;p&gt;With a traditional e-commerce platform like &lt;a href="https://shopify.com/"&gt;Shopify&lt;/a&gt;, you're locked into their ecosystem. You have to use their templates, checkout, and backend. Headless platforms like MedusaJS give you the freedom to build the front end however you want, using any framework or library.&lt;/p&gt;

&lt;p&gt;MedusaJS is an API-first, headless ecommerce engine perfect for developers. Their open-source API lets you create unique shopping experiences tailored to your brand. You get full control over the frontend, so you can implement any design or feature you can imagine.&lt;/p&gt;

&lt;p&gt;Headless also means future-proofing your business. If you want to add a voice assistant, smart mirrors, or AR/VR in the future, a headless setup will make that way easier. You won't have to wait for your monolithic ecommerce platform to add support for new innovations.&lt;/p&gt;

&lt;p&gt;With the rise of companies like MedusaJS, headless ecommerce is poised to dominate the industry. If flexibility, control and innovation are priorities for your brand, it may be time to ditch the traditional ecommerce platforms of the past and go headless.&lt;/p&gt;

&lt;p&gt;The future of digital shopping experiences is here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is MedusaJS?
&lt;/h2&gt;

&lt;p&gt;MedusaJS is an open-source headless e-commerce framework that lets you build customized storefronts. Unlike Shopify, MedusaJS gives you full control over your front end and backend.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The frontend is decoupled from the backend, so you have the freedom to build any storefront you want using &lt;a href="https://docs.medusajs.com/medusa-react/overview"&gt;React&lt;/a&gt;, &lt;a href="https://medusajs.com/blog/create-vue-js-ecommerce-store-with-medusa-vue-storefront-ui/"&gt;Vue.js&lt;/a&gt;, or even vanilla HTML and CSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The backend is an API that handles everything from inventory to payments. It's built with Node.js and uses MongoDB as a database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MedusaJS has a plugin architecture that makes it easy to extend. There are already plugins for payments, shipping, taxes, and more. Or you can build your own!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It's perfect for developers who want flexibility and customization. You get to choose your tech stack and build exactly the experience you want for your customers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The best part? MedusaJS is free and open source. So you can hit the ground running without paying expensive licensing fees.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If complete control and customization are important to you, MedusaJS is the ideal headless e-commerce solution. Give your customers an experience that's tailored just for them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits of using MedusaJS for headless ecommerce?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Flexibility
&lt;/h3&gt;

&lt;p&gt;MedusaJS gives you the flexibility to build any frontend you want. You're not locked into a specific frontend framework like with Shopify. Want to use React? Vue.js? Plain HTML and CSS? Go for it! MedusaJS exposes a GraphQL API you can consume from any frontend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization
&lt;/h3&gt;

&lt;p&gt;Tired of the same old ecommerce templates? With MedusaJS, you have full control over the frontend and can build a completely custom storefront tailored to your brand. The sky's the limit in terms of customization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;MedusaJS is built to scale. It uses a microservice architecture with a GraphQL API gateway, so you can scale individual services as needed. It also leverages Redis, PostgreSQL and Elasticsearch under the hood for caching, the database, and search respectively. So your store can handle huge amounts of traffic without a hitch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open Source
&lt;/h3&gt;

&lt;p&gt;MedusaJS is open source, so you have full visibility into the code and can make changes if needed. The community is also actively developing the platform, so new features are being added all the time. And if there's a feature missing, you can build it yourself or sponsor its development!&lt;/p&gt;

&lt;h3&gt;
  
  
  Affordable
&lt;/h3&gt;

&lt;p&gt;While other SaaS ecommerce platforms charge expensive monthly fees, MedusaJS is free to use. You only pay for the infrastructure to host it. This can save you thousands per year in fees. And you own your data rather than it being locked into a platform.&lt;/p&gt;

&lt;p&gt;MedusaJS offers developers and merchants alike an affordable, flexible and customizable solution for headless ecommerce. The benefits over traditional SaaS platforms are huge for those looking to build a unique storefront experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Should Care About Headless Commerce
&lt;/h2&gt;

&lt;p&gt;As an ecommerce business owner, you need to stay on the cutting edge of technology to keep up with customer expectations. Headless commerce is the latest trend that allows you to deliver unique shopping experiences.&lt;/p&gt;

&lt;p&gt;Rather than relying on a traditional monolithic ecommerce platform, headless commerce decouples the frontend presentation layer from the backend ecommerce functionality. This gives you more flexibility and control over the customer experience.&lt;/p&gt;

&lt;p&gt;You can build a custom frontend using a JavaScript framework like React or Vue.js and connect it to a backend API like MedusaJS. Your frontend developers have the freedom to create interactive user interfaces without being limited by your ecommerce platform’s built-in templates.&lt;/p&gt;

&lt;p&gt;Headless also makes it easy to launch your store on multiple channels. You can reuse the same MedusaJS backend and build different frontends for your website, mobile app, smart speakers, and any new devices that emerge.&lt;/p&gt;

&lt;p&gt;As shoppers become more demanding, headless commerce gives you an advantage. You can quickly roll out new features, optimize the checkout process, and deliver unique branded experiences on any channel.&lt;/p&gt;

&lt;p&gt;While headless does require more technical expertise, the flexibility and control it provides over the long run makes it worth the investment. MedusaJS, in particular, handles the heavy lifting on the backend so you can focus on building amazing customer experiences.&lt;/p&gt;

&lt;p&gt;The future of ecommerce is headless. Don’t get left behind!&lt;/p&gt;

&lt;h2&gt;
  
  
  How MedusaJS Enables Blazing Fast Frontends
&lt;/h2&gt;

&lt;p&gt;With MedusaJS, you can build lightning fast frontends using modern frameworks like Next.js, Gatsby, and Nuxt.js. These frameworks utilize techniques like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Static Site Generation (SSG) to pre-render pages at build time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Incremental Static Regeneration (ISR) to re-generate static pages on demand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Server-Side Rendering (SSR) to render pages on request.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By pre-rendering pages, MedusaJS enables frontends to be served directly from a CDN, reducing load on your servers. For dynamic pages, MedusaJS has a GraphQL API that frontends can query to get data and render pages on the server or client.&lt;/p&gt;

&lt;p&gt;The decoupled nature of MedusaJS means you have full control over your frontend tech stack. You can choose whatever frameworks and libraries you want to build the optimal experience for your customers.&lt;/p&gt;

&lt;p&gt;MedusaJS was built from the ground up to enable the fastest possible frontends. By utilizing techniques like SSG, ISR and SSR, frontends get a huge performance boost.&lt;/p&gt;

&lt;p&gt;The GraphQL API provides a flexible interface for frontends to get data from MedusaJS. This combination of speed and flexibility makes MedusaJS the perfect platform for headless ecommerce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So there you have it. MedusaJS is poised to disrupt the headless ecommerce space in a big way. Forget the big names like Shopify and Magento, MedusaJS gives you the flexibility and control you've always wanted as a developer. You're no longer locked into a rigid system with limited customization.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://medusajs.com"&gt;MedusaJS&lt;/a&gt;, the possibilities are endless. The sky's the limit in terms of the experiences you can build for your customers. If you're ready to take your ecommerce store to the next level, look no further than MedusaJS. The future is headless, and MedusaJS is leading the charge.&lt;/p&gt;

&lt;p&gt;What are you waiting for? Dive in and see what you can build! The ecommerce world will never be the same.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>ecommerce</category>
      <category>react</category>
    </item>
    <item>
      <title>Secrets to using REM in CSS: CSS Tips</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Wed, 12 May 2021 02:39:07 +0000</pubDate>
      <link>https://dev.to/turneremma21/secrets-to-using-rem-in-css-css-tips-2gkh</link>
      <guid>https://dev.to/turneremma21/secrets-to-using-rem-in-css-css-tips-2gkh</guid>
      <description>&lt;p&gt;As device sizes proceed to wander and programs give more client alternatives, utilizing static units simply doesn't cut it any longer. Some such countless individuals set their browser inclination to bigger content with no impact on the sites they visit. &lt;/p&gt;

&lt;p&gt;While pixels will permit clients to zoom in and out, their content settings on their PC or program won't have any impacts. &lt;/p&gt;

&lt;p&gt;By utilizing REM units you make Scalable sites that keep up the proportions between components while likewise scaling to the client's inclination. So if a client sets their settings to have bigger content - your site ought to react so they can appreciate it like every other person!&lt;/p&gt;

&lt;p&gt;Over the last couple of years, I have stopped using pixel units and also advising people to do the same. Let's see why you should use REM units. &lt;/p&gt;




&lt;h3&gt;
  
  
  REM vs EM
&lt;/h3&gt;

&lt;p&gt;But first, we must clear up the difference between EM and REM units. Both units are calculated to form the font size and use a base value the number of ems/rems is the multiple of that value. &lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/*Base fontsize 16px*/&lt;/span&gt;
&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;16&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;32&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;

&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="nt"&gt;em&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;16&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;em&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;32&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference is that REM values always use the root base value (set on the HTML element), whereas EM units are relative to their container. &lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/*Base fontsize 16px*/&lt;/span&gt;
&lt;span class="c"&gt;/*Container fontsize 20px*/&lt;/span&gt;

&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;16&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;32&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;

&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="nt"&gt;em&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;em&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;40&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What is the root base value?
&lt;/h3&gt;

&lt;p&gt;The default base font size is set by the browser and on most of the browser 1 rem = 16px.  This means you can even use the standardized 8px grid since 0.5rem = 8px. &lt;br&gt;
It is possible to set your base value by changing the &lt;code&gt;font-size&lt;/code&gt; of the HTML element but the beauty f letting the browser control the default value is that users can change it. &lt;/p&gt;
&lt;h3&gt;
  
  
  Fluid Elements
&lt;/h3&gt;

&lt;p&gt;By using REM units and letting the browser (and user control the base value, you create scalable elements that will keep their form when they are sized up or down. This created truly fluid and flexible layouts that will scale beautifully no matter the users' personal preference and settings. &lt;/p&gt;

&lt;p&gt;Example:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
 &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&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;The title will be always larger than the paragraph text no matter what the base size is. They scale together. And this is the same with the buttons too, &lt;code&gt;font-size&lt;/code&gt;, &lt;code&gt;border-radius&lt;/code&gt; and padding all scales with the base size. &lt;/p&gt;

&lt;h3&gt;
  
  
  What about PX units?
&lt;/h3&gt;

&lt;p&gt;The pixel has a place on the web through ad there are plenty of times when you require a fixed value that isn't scald based on the user's preference. For example, pixels are still good for setting borders that don't always need to scale. &lt;/p&gt;




&lt;p&gt;Thank you for showing interest and reading. So use REM instead of PX🤗. &lt;/p&gt;

</description>
      <category>css</category>
      <category>programming</category>
      <category>codenewbie</category>
      <category>webdev</category>
    </item>
    <item>
      <title>6 small Career advice for CodeNewbies</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Sat, 08 May 2021 03:16:19 +0000</pubDate>
      <link>https://dev.to/turneremma21/6-small-career-advice-for-codenewbies-4oi3</link>
      <guid>https://dev.to/turneremma21/6-small-career-advice-for-codenewbies-4oi3</guid>
      <description>&lt;p&gt;These are my main 6 advices for any individual who is figuring out how to code or simply beginning in an engineer career. I trust you track down these valuable and in the event that you have anything to add leave it in the remarks beneath😉. &lt;/p&gt;




&lt;p&gt;If you're interested in learning to code  or if you're just starting out in a coding career then these tips will help you improve your code and problem solving skills. &lt;/p&gt;

&lt;h3&gt;
  
  
  Have a clean goal in mind
&lt;/h3&gt;

&lt;p&gt;If your doing a tutorial make sure you have a clear goal in mind of what you will by the end of it and more importantly why you are learning it. This will help keep you focused and make sure you are only spending time on useful learning. &lt;/p&gt;

&lt;h3&gt;
  
  
  Projects
&lt;/h3&gt;

&lt;p&gt;The best wat to learn is to apply the knowledge by creating mini projects. This will help you retain the knowledge as well as creating a portfolio of work you can refer to. Keep the projects small and simple, so they don't take too long to complete. &lt;/p&gt;

&lt;h3&gt;
  
  
  Make and refractor
&lt;/h3&gt;

&lt;p&gt;While thinking of the best way to solve a problem it's easy to over complicate it. Use what you know to create a solution that works first, once it works you can refractor to make improvements. This will save your time and you will start to see patterns in your refactoring and learn from it. &lt;/p&gt;

&lt;h3&gt;
  
  
  Learn as you go
&lt;/h3&gt;

&lt;p&gt;Don't set out to learn everything -- learn the things you need to complete projects or tutorials. This way your knowledge will accumulate and get more complex over time rather than trying to understand everything within a few weeks. &lt;/p&gt;

&lt;h3&gt;
  
  
  Write pseudo code
&lt;/h3&gt;

&lt;p&gt;Pseudo code is when you write out what the code is doing in normal English. It can be very useful to step away from the code and look at it as a logical puzzle first. Once you figure out the logic then you can translate it to code. &lt;/p&gt;

&lt;h3&gt;
  
  
  Deconstruct other websites
&lt;/h3&gt;

&lt;p&gt;Find something on a website you would like to recreate and try to deconstruct how they did it by looking at the source code. This can be really beneficial since the act of trying to figure it out will help you remember it better and you might learn something you didn't expect on the way. &lt;/p&gt;




&lt;p&gt;Hopefully you found this list useful and it will help you improve your coding skills. If you have any other tips add them in the comments. &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>CSS Selectors crash course for beginners</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Thu, 29 Apr 2021 03:54:52 +0000</pubDate>
      <link>https://dev.to/turneremma21/css-selectors-crash-course-for-beginners-19b</link>
      <guid>https://dev.to/turneremma21/css-selectors-crash-course-for-beginners-19b</guid>
      <description>&lt;p&gt;A CSS selector is the first of a CSS rule. It is a pattern of elements and other terms that tell the browser which HTML elements should be selected to have the CSS property values inside the rule applied to them. &lt;/p&gt;

&lt;p&gt;or "CSS Selectors are used to "find"(or select) the HTML elements you want to style. &lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;universal selector&lt;/strong&gt;: Selects all elements of the DOM and make their margin and padding 0px.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&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;ul&gt;
&lt;li&gt;Type selector: Selects all elements that have the given node name. Syntax -&amp;gt; &lt;code&gt;elementName&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&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;Above, match any "a" tag and remove the underline or any text decoration. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;class selector: Selects all elements that have the given clasas attribute. Syntax -&amp;gt; &lt;code&gt;.className&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.intro&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&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;Above, &lt;code&gt;.intro&lt;/code&gt; will match any element that has a class of "intro" and change their text colour to blue. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID Selector: Selects an element based on the vlaue of its id attribute. There should be only one elemet with a given ID in a document.  Syntax -&amp;gt; &lt;code&gt;#IdName&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#firstName&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&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;Above, &lt;code&gt;#firstName&lt;/code&gt; will match an element that has an id of "firstName" and apply these styles. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Attribute selector&lt;/strong&gt;: Selects all elements that have the given attribute. Syntax: &lt;code&gt;[attr][attr=value]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&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;ul&gt;
&lt;li&gt;
&lt;code&gt;[attr=value]&lt;/code&gt; : This represents elements with an attribute-name of attr whose value is exactly value. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;[attr~=value]&lt;/code&gt; : Represents elements with an attribute-name of attr whose value is a whitespace-separated list of words, one of which is the exact value. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;[attr^=value]&lt;/code&gt;: Represents elements with an attribute name of attr whose value is prefixed (preceded) by value. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;[attr$=value]&lt;/code&gt; : Represents elements with an attribute name of attr whose value is suffixed (followed) by value.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;[attr*=value]&lt;/code&gt; : Represents elements with an attribute-name of attr whose value contains at least one occurrence of value within the string. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Selector list&lt;/strong&gt;: The &lt;code&gt;,&lt;/code&gt; is a grouping method, it selects all the matching nodes.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.start&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&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;Above, p.intro will match both &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;div class="start"&amp;gt;&lt;/code&gt; elements. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Child Combinator&lt;/strong&gt; : The &lt;code&gt;&amp;gt;&lt;/code&gt; combinator selects nodes that are direct children of the first element.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.intro&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&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;Above, it wil match all &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; elements that are nested directly inside a &lt;code&gt;&amp;lt;div class="intro"&amp;gt;&lt;/code&gt; element. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;General sibling combinator&lt;/strong&gt;: The &lt;code&gt;~&lt;/code&gt; combinator selects siblings. This means that the second element follows the first (though not necessarily immediately), and both share the same parent. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: &lt;code&gt;p~span&lt;/code&gt; will match all &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; elements that follow a &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, immediately or not. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adjacent sibling combinator&lt;/strong&gt;: The &lt;code&gt;+&lt;/code&gt; combinator selects an adjacent sibling. This means that the second element directly follows the first, and both share the same parent. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example : &lt;code&gt;h2 + p&lt;/code&gt; will match all &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements that directly follow an &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Descendant combinator&lt;/strong&gt;: The &lt;code&gt;&lt;/code&gt; (space) combinator selects nodes that descendant of the first element. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example : &lt;code&gt;div span&lt;/code&gt; will match all &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; elements that are inside a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; element. &lt;/p&gt;




&lt;p&gt;Hope you have enjoyed this post 😀 &lt;/p&gt;

&lt;p&gt;You can support me from &lt;a href="https://buymeacoffee.com/emmaturner"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>codenewbie</category>
      <category>programming</category>
    </item>
    <item>
      <title>Circular access of Array in JavaScript</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Fri, 25 Dec 2020 04:53:53 +0000</pubDate>
      <link>https://dev.to/turneremma21/circular-access-of-array-in-javascript-j52</link>
      <guid>https://dev.to/turneremma21/circular-access-of-array-in-javascript-j52</guid>
      <description>&lt;p&gt;The formula you see is part of modular arithmetic. I plan digging into this stuff to see what practical things for our coding I can find! Tell me in the comments if you want more of these techniques!&lt;/p&gt;

&lt;h3&gt;
  
  
  What is this basically?
&lt;/h3&gt;

&lt;p&gt;An abstract technique which is super simply but I've found it &lt;strong&gt;so many applications!&lt;/strong&gt; Let's get to know 'em in detail. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's say that we've the following array: ['a','b','c']. If we try to access it at position &lt;strong&gt;0&lt;/strong&gt; it returns &lt;code&gt;'a'&lt;/code&gt;. Position &lt;strong&gt;1&lt;/strong&gt; returns &lt;code&gt;'b'&lt;/code&gt;.&lt;br&gt;
Position &lt;strong&gt;2&lt;/strong&gt; returns &lt;code&gt;'c'&lt;/code&gt;. Position &lt;strong&gt;3&lt;/strong&gt; returns &lt;em&gt;undefined&lt;/em&gt;, since we don't have an element at position &lt;strong&gt;3&lt;/strong&gt;. &lt;br&gt;
In this normal case, every index greater than &lt;strong&gt;2&lt;/strong&gt; returns &lt;em&gt;undefined&lt;/em&gt; because it was not found in the array. &lt;br&gt;
But what if, instead of returning &lt;em&gt;undefined&lt;/em&gt; at position &lt;strong&gt;3&lt;/strong&gt;, it started from the beginning again and returned &lt;code&gt;'a'&lt;/code&gt;? And then, for position &lt;strong&gt;4&lt;/strong&gt;-&lt;code&gt;'b'&lt;/code&gt;? Position &lt;strong&gt;5&lt;/strong&gt;-&lt;code&gt;'c'&lt;/code&gt;? Position &lt;strong&gt;6&lt;/strong&gt;-&lt;code&gt;'a'&lt;/code&gt; and  so, until infinity... ♾&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That is not matter of the index you try to access, it always gives an existing next element.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Now let's see the codes
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;//REALITY&lt;/span&gt;
&lt;span class="nx"&gt;arr&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="c1"&gt;//=&amp;gt; 'a'&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; 'b'&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; 'c'&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; undefined&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; undefined&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; undefined&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; undefined&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; undefined&lt;/span&gt;

&lt;span class="c1"&gt;// GOAL: &lt;/span&gt;
&lt;span class="nx"&gt;arr&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="c1"&gt;//=&amp;gt; 'a'&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; 'b'&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; 'c'&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; `a`&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; `b`&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; `c`&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; `a`&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;//=&amp;gt; `b`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;h3&gt;
  
  
  Implementation
&lt;/h3&gt;

&lt;p&gt;Once you've understood what it does, the implementation is just a formula which you don't even have to understand :) Just use it. Here it is:&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="c1"&gt;// EXAMPLE&lt;/span&gt;

&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="c1"&gt;// the array which you access&lt;/span&gt;
&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="c1"&gt;// the index of arr you're trying to access&lt;/span&gt;
&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="c1"&gt;// the length of arr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="c1"&gt;//index you wanna access&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;

&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; 'c'&lt;/span&gt;

&lt;span class="c1"&gt;//At the end it works as if: &lt;/span&gt;
&lt;span class="c1"&gt;//['a', 'b', 'c', 'a', 'b', 'c', 'a', ...♾]&lt;/span&gt;
&lt;span class="c1"&gt;//  0    1    2    3    4    5    6   ...♾&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  Example Use
&lt;/h3&gt;

&lt;p&gt;Let's say that we have a function which has to return the next element from an array with unspecified length. Simple. &lt;/p&gt;

&lt;p&gt;We could hardcode it with a ternary or switch or if/else but we don't have to. Here's my solution using the circular array access:&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;const&lt;/span&gt; &lt;span class="nx"&gt;choosePos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentPos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;chooseFromArr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;chooseFromArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentPos&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;chooseFromArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;chooseFromArr&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pos2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pos3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pos4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nx"&gt;choosePos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; pos2&lt;/span&gt;
&lt;span class="nx"&gt;choosePos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; pos3&lt;/span&gt;
&lt;span class="nx"&gt;choosePos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; pos4&lt;/span&gt;
&lt;span class="nx"&gt;choosePos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;post4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; pos1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Thanks For Reading. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>The beginners guide to RESTful API</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Fri, 18 Dec 2020 06:25:34 +0000</pubDate>
      <link>https://dev.to/turneremma21/the-beginners-guide-to-restful-api-2820</link>
      <guid>https://dev.to/turneremma21/the-beginners-guide-to-restful-api-2820</guid>
      <description>&lt;p&gt;Today hundreds of companies use REST APIs to create web services. It's the most logical, efficient and widespread standard. So in this article we will take a deep look into it. &lt;/p&gt;



&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;
&lt;h1&gt;
  
  
  API
&lt;/h1&gt;

&lt;p&gt;It stands for Application Programming Interface, a software intermediary that allows two apps to talk to each other. &lt;/p&gt;



&lt;h3&gt;
  
  
  Types by use Cases
&lt;/h3&gt;

&lt;h4&gt;APIs&lt;/h4&gt;  

&lt;p&gt;It can be classified according to the systems for which they are designed. &lt;/p&gt;

&lt;p&gt;Here are they : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Operating Systems&lt;/li&gt;
&lt;li&gt;Remote&lt;/li&gt;
&lt;li&gt;Web&lt;/li&gt;
&lt;/ul&gt;


 
&lt;h3&gt;
  
  
  What is it then?
&lt;/h3&gt;
&lt;h1&gt;
  
  
  RESTful API
&lt;/h1&gt;

&lt;p&gt;It is an architectural style and approach to communications often used in web service development. &lt;/p&gt;
&lt;h3&gt;
  
  
  Architectural Constraints
&lt;/h3&gt;

&lt;p&gt;There are 6 architectural constraints that make any web service. The only optional constraint is the last one: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uniform Interface&lt;/li&gt;
&lt;li&gt;Stateless
-Cacheable&lt;/li&gt;
&lt;li&gt;Client-Server&lt;/li&gt;
&lt;li&gt;Layered System&lt;/li&gt;
&lt;li&gt;Code on Demand (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Why REST?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Client and server are separated&lt;/li&gt;
&lt;li&gt;Visibility, readability and scalability&lt;/li&gt;
&lt;li&gt;Independent of platforms and languages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How it works?
&lt;/h2&gt;

&lt;p&gt;RESTful API uses existing HTTP method, providing a meaning for the request you're making, to obtain resources from the server: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt; - To retrieve a resource&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; - To update a resource&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; - To create a new resource&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Format
&lt;/h3&gt;

&lt;p&gt;JSON - JavaScript Object Notation is a common format to send and request data through REST APIs. It's object looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;/*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;property&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;must&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;be&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;wrapped&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;double&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;quotation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;marks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;*/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"property1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"value1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
  &lt;/span&gt;&lt;span class="nl"&gt;"property2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"value2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
  &lt;/span&gt;&lt;span class="nl"&gt;"property3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"value3"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Thanks For Reading &lt;/p&gt;

&lt;p&gt;Previously at -&amp;gt;  &lt;a href="https://blogemma.netlify.app/"&gt;Emma's Blog&lt;/a&gt; &lt;/p&gt;

</description>
      <category>api</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Get out of Tutorial Purgatory NOW!</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Wed, 16 Dec 2020 03:38:21 +0000</pubDate>
      <link>https://dev.to/turneremma21/get-out-of-tutorial-purgatory-now-431g</link>
      <guid>https://dev.to/turneremma21/get-out-of-tutorial-purgatory-now-431g</guid>
      <description>&lt;p&gt;Here is why you should get out the Tutorial Purgatory NOW!&lt;br&gt;
You people will surely have in mind what is Tutorial Purgatory?  Here I will explain you how to escape tutorial Purgatory and many things you must know.  &lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ujr5FT03--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1608088980531/tnuHb315z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ujr5FT03--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1608088980531/tnuHb315z.png" alt="undraw_youtube_tutorial_2gn3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Tutorial Purgatory?  🤔
&lt;/h2&gt;

&lt;p&gt;It is where you try to learn a skill by going from tutorial to tutorial, but then realize that hardly anything you have learnt has actually stuck with you. You really haven't learnt all that much. &lt;/p&gt;

&lt;h3&gt;
  
  
  Find 1-3 good tutorials and stick with it. 🤨
&lt;/h3&gt;

&lt;p&gt;A few good ones are better than many ordinary ones. Close and remove others, it's time to let go of those tutorials.  &lt;/p&gt;

&lt;h3&gt;
  
  
  No instructions, No problem 😁
&lt;/h3&gt;

&lt;p&gt;Step watching tutorials, abandon your comfort zone and build a project on your own, without all the instructions neatly laid out. You can seek help but try building something on your own. &lt;/p&gt;

&lt;h3&gt;
  
  
  Get comfortable being uncomfortable 😳
&lt;/h3&gt;

&lt;p&gt;Tutorials are our safe zone. We cling into it a little too much, a little longer because we are scared that when errors and problems come up we wouldn't know what to do. Don't doubt yourself and take the leap. &lt;/p&gt;

&lt;h2&gt;
  
  
  Never stuck in this Tutorial Hell !!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EjagQimw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1608089060575/xnwkDhQ-i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EjagQimw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1608089060575/xnwkDhQ-i.png" alt="undraw_Online_learning_re_qw08.png"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;h3&gt;
  
  
  DO NOT REPEAT THE MISTAKE THAT EVERYONE DOES
&lt;/h3&gt;

&lt;p&gt;Here is why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;❌You will end up in learning nothing solid.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;❌You will work so hard on learning those technologies but get ZERO results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;❌You will lose interest in learning.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Instead, try this :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;✅ Find UNIQUE and BETTER content by asking for suggestions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ Get out of your Comfort Zone and try building your own logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;✅ Try to learn something that EXCITES you!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;br&gt;&lt;br&gt;
Get the amazing &lt;a href="https://api.daily.dev/get?r=emmaturner"&gt;daily.dev&lt;/a&gt; extension. &lt;br&gt;&lt;br&gt;

&lt;br&gt;&lt;br&gt;
Comment Your thoughts on this below!

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>100daysofcode</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Beginners guide to JavaScript Classes</title>
      <dc:creator>Emma Turner</dc:creator>
      <pubDate>Tue, 15 Dec 2020 06:01:32 +0000</pubDate>
      <link>https://dev.to/turneremma21/beginners-guide-to-javascript-classes-p9p</link>
      <guid>https://dev.to/turneremma21/beginners-guide-to-javascript-classes-p9p</guid>
      <description>&lt;p&gt;I have recently joined this platform and this is my first post here hoping that you'll like it. So a bit about me - I'm Emma. Front-end Developer and Blogger. I focus on teaching more so I will be posting articles related to JavaScript, CSS for beginners. &lt;/p&gt;



&lt;h2&gt;
  
  
  😳 Classes In JavaScript?
&lt;/h2&gt;

&lt;p&gt;Classes were introduced in JavaScript ECMA2015(2016). &lt;br&gt;
Unlike the classes in Object-Oriented Model. But instead of classes are just a special type of functions. But instead of using the "function" keyword, we use the "class". &lt;/p&gt;

&lt;p&gt;It was introduced in JavaScript to make the syntax look like other object-oriented languages (Java, Python, C++). &lt;/p&gt;

&lt;h3&gt;
  
  
  😃 Defining a Class
&lt;/h3&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="nx"&gt;Rectangle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&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="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;height&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="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;width&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;To declare a &lt;strong&gt;class&lt;/strong&gt;, you use the &lt;strong&gt;class&lt;/strong&gt; keyword with the name of the class (&lt;strong&gt;"Rectangle"&lt;/strong&gt; here). &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Constructor *&lt;/em&gt;: This is a special method for initializing an instance of that class. So what that means is that whenever we create a new instance of the class, it will invoke the constructor.  &lt;/p&gt;

&lt;h3&gt;
  
  
  📘 Methods in a Class
&lt;/h3&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="nx"&gt;Rectangle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&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="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;height&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="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;//prototype method&lt;/span&gt;
  &lt;span class="nx"&gt;area&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`The area is &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="nx"&gt;height&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="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;//static method&lt;/span&gt;
  &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nx"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Height: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; Width: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&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;span class="nx"&gt;rectangle1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//instantiate the class&lt;/span&gt;
&lt;span class="nx"&gt;rectangle1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="c1"&gt;//the area is 20&lt;/span&gt;
&lt;span class="nx"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rectangle1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;//Height: 5 Width: 4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prototype Method&lt;/strong&gt;: area() is a prototype method. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Static Method&lt;/strong&gt;: display() is a static method. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤨 Prototype Method
&lt;/h3&gt;

&lt;p&gt;A prototype method is a method that is only accessible when you create an instance of the class. &lt;/p&gt;

&lt;p&gt;As you can see in the example above, you call the prototype method by referring to the object's method name followed by parentheses (any parameter would go inside the parentheses). &lt;/p&gt;

&lt;h3&gt;
  
  
  🤔 Static Method
&lt;/h3&gt;

&lt;p&gt;A static method is something you can call without instantiating the class. The static method is defined in the class itself, and not on the object. That means you cannot call the static method on the object (rectangle1), but on the class (Rectangle) as shown in &lt;em&gt;line 19&lt;/em&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  ⭐ Inheritance
&lt;/h3&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="nx"&gt;car&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;brand&lt;/span&gt;&lt;span class="p"&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="nx"&gt;carname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;brand&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;present&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`I have a `&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="nx"&gt;carname&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;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;Model&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;Car&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;brand&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mode&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="nx"&gt;brand&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="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mod&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&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="nx"&gt;present&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt; , it is a &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="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&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;span class="nx"&gt;mycar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ford&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Raptor&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="nx"&gt;mycar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="c1"&gt;//I have a ford , it is a Raptor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To create a class inheritance, use the &lt;strong&gt;extends&lt;/strong&gt; keyword. &lt;/p&gt;




&lt;p&gt;A class created with class inheritance inherits all the methods from another class. In the above example, the Model class inherits all the methods from &lt;strong&gt;Car&lt;/strong&gt; class. &lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;super()&lt;/strong&gt; method refers to the parent class. &lt;/p&gt;

&lt;p&gt;By calling the &lt;strong&gt;super()&lt;/strong&gt; method in the constructor methods, we call the parent's constructor method and gets access to the parent's properties and methods. &lt;/p&gt;

&lt;p&gt;Inheritance is useful for &lt;strong&gt;code reusability&lt;/strong&gt;, we can reuse properties and methods of an existing class when you create a new class. &lt;/p&gt;



&lt;br&gt;
Get the amazing  &lt;a href="https://api.daily.dev/get?r=emmaturner"&gt;daily.dev&lt;/a&gt; extension. You'll get amazing news and ideas.&lt;br&gt;


&lt;p&gt;Thanks For Reading. If you have anything on your mind comment below. You can follow me too. 🙂📚&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
