<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Richard Rembert</title>
    <description>The latest articles on Forem by Richard Rembert (@rembertdesigns).</description>
    <link>https://forem.com/rembertdesigns</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%2F859933%2F2864b108-ada4-4fd3-b3d5-7619e023c71f.jpg</url>
      <title>Forem: Richard Rembert</title>
      <link>https://forem.com/rembertdesigns</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rembertdesigns"/>
    <language>en</language>
    <item>
      <title>Uizard: The AI-Powered Tool for Streamlining Your UX/UI Wireframing</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Mon, 10 Apr 2023 18:11:04 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/uizard-the-ai-powered-tool-for-streamlining-your-uxui-wireframing-32hn</link>
      <guid>https://forem.com/rembertdesigns/uizard-the-ai-powered-tool-for-streamlining-your-uxui-wireframing-32hn</guid>
      <description>&lt;p&gt;&lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt; is an innovative tech startup that provides cutting-edge AI-powered tools to help &lt;a href="https://www.rembertdesigns.co/" rel="noopener noreferrer"&gt;designers&lt;/a&gt;, &lt;a href="https://www.rembertdesigns.co/" rel="noopener noreferrer"&gt;developers&lt;/a&gt;, and &lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;creatives&lt;/a&gt; streamline their workflows and achieve their goals faster. With a focus on revolutionizing the traditional design process, Uizard has developed a range of software solutions that leverage the power of artificial intelligence to automate repetitive and time-consuming tasks, allowing users to focus on the creative aspects of their work. Whether you're looking to rapidly prototype your ideas, wireframe your next app or website, or create stunning visuals for your marketing campaigns, Uizard has a tool that can help you achieve your vision with ease and efficiency. &lt;/p&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%2Fsht60sjoskx2sqxs9ugx.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%2Fsht60sjoskx2sqxs9ugx.png" alt="Uizard Prototypes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this blog, I'll dive deep into the world of &lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt;, exploring their product, features, and benefits, and providing you with insights and tips to help you make the most of their innovative tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Uizard: The Future of Design
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt; is an advanced prototyping tool that simplifies the process of turning wireframes into high-fidelity prototypes with lightning speed. By leveraging computer vision and machine learning algorithms, Uizard transforms hand-drawn sketches, screenshots and wireframe images into fully functional and interactive mockups. With its built-in style guide system, users can easily customize UI components and choose from multiple themes.&lt;br&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%2Fvezv62vfo1mbhjf284tg.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%2Fvezv62vfo1mbhjf284tg.png" alt="Uizard Themes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, Uizard offers a powerful prototype engine that enables designers and developers to build and test user flows quickly and efficiently. Whether you need to export your design as a wireframe, download to share for social media, or iterate rapidly, Uizard is the perfect solution for streamlining your workflow and creating stunning designs in no time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Should I Use Uizard?
&lt;/h2&gt;

&lt;p&gt;There are several reasons why people should use Uizard to streamline their design process. &lt;/p&gt;

&lt;p&gt;Firstly, Uizard offers a time-efficient and cost-effective way to create high-fidelity prototypes from low-fidelity wireframes, saving designers and developers significant time and effort. &lt;/p&gt;

&lt;p&gt;Secondly, Uizard's AI algorithms enable users to generate and iterate designs automatically, reducing the need for manual input and minimizing errors. &lt;/p&gt;

&lt;p&gt;Thirdly, Uizard's built-in style guide system makes it easy for users to customize UI components, resulting in a more visually cohesive and polished design. &lt;/p&gt;

&lt;p&gt;Lastly, Uizard's powerful prototype engine allows users to test user flows and create interactive designs, making it ideal for rapid prototyping and user testing. &lt;/p&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%2Fm5j73qwm5iiq9pfmic6f.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%2Fm5j73qwm5iiq9pfmic6f.png" alt="Uizard Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall, &lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt; is a game-changer for designers and developers looking to enhance their workflow and create visually stunning designs in record time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Uizard Guidelines to Follow
&lt;/h2&gt;

&lt;p&gt;When using Uizard to create designs, there are some guidelines that you should keep in mind to make the most of this powerful tool. First, start by identifying the problem you are trying to solve and defining your project's goals. Uizard allows you to choose from a wide range of templates, so select the one that best suits your needs. Once you have your template, use Uizard's intuitive drag-and-drop interface to add your content and make any necessary modifications. Remember to use high-quality images and graphics that are consistent with your branding. Finally, test your design across different devices and screen sizes to ensure that it looks great and functions properly. By following these guidelines, you can create professional-looking designs quickly and efficiently using Uizard.&lt;/p&gt;

&lt;p&gt;You can learn more by &lt;a href="https://uizard.io/blog/" rel="noopener noreferrer"&gt;reading their blog&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with Uizard
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to the &lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt; website and sign up for a new account. You can choose a free or paid plan, depending on your needs.&lt;br&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%2Fmrwz5jeds56eg7j3o3th.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%2Fmrwz5jeds56eg7j3o3th.png" alt="Uizard Homepage"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once you have created your account, you will be taken to the Uizard dashboard. Here, you can choose to create a new project or explore some of the templates that are available.&lt;br&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%2F1c3t8gzt1ne624lbntxp.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%2F1c3t8gzt1ne624lbntxp.png" alt="Uizard Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you choose to create a new project, you will be prompted to select a template. Uizard offers a wide range of templates for different types of designs, such as web pages, mobile apps, and social media posts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once you have selected a template, you can use Uizard's drag-and-drop interface to add your content and customize the design. You can upload your own images, choose from Uizard's library of graphics, and adjust colors, fonts, and layouts.&lt;br&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%2F1areld77palmd394x9uj.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%2F1areld77palmd394x9uj.png" alt="Upload to Uizard"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As you work on your design, Uizard's AI-powered technology will automatically generate code in the background, allowing you to see a live preview of your design as you make changes.&lt;br&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%2Fp6greey64b81dcjxew0o.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%2Fp6greey64b81dcjxew0o.png" alt="Wireframe in Uizar"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you are satisfied with your design, you can export it in various formats, such as a jpg, png, and pdf file. You can also share your design with others by generating a link or embedding it on a website.&lt;br&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%2F5kar0kfklg4zf6ovgn5z.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%2F5kar0kfklg4zf6ovgn5z.png" alt="Export on Uizard"&gt;&lt;/a&gt;&lt;br&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%2F42r7oztfvjysbimw54dh.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%2F42r7oztfvjysbimw54dh.png" alt="Share on Uizard"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it! With these simple steps, you can get started with Uizard and create professional-looking designs in no time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In summary, &lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt; is a great option for those who need to create professional-looking designs quickly and easily. With its user-friendly interface and AI-powered technology, Uizard makes it easy to create designs without any coding knowledge. While it may not have as many customization options as some other design tools, its wide range of templates and collaboration features make it a great choice for teams and individuals who need to work on projects together. Overall, &lt;a href="https://uizard.io/i/e138ffa94a" rel="noopener noreferrer"&gt;Uizard&lt;/a&gt; is a powerful and intuitive design tool that can help you bring your ideas to life quickly and easily.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; where I post daily about Tech related things!&lt;/p&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%2Fijinng8k7bf23v0o6gkj.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%2Fijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/links" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ux</category>
      <category>webdev</category>
      <category>design</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Synthesia AI: The Ultimate Solution for Turning Your Text into Engaging Video Content</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Tue, 04 Apr 2023 20:43:22 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/synthesia-ai-the-ultimate-solution-for-turning-your-text-into-engaging-video-content-2fee</link>
      <guid>https://forem.com/rembertdesigns/synthesia-ai-the-ultimate-solution-for-turning-your-text-into-engaging-video-content-2fee</guid>
      <description>&lt;p&gt;With videos playing a significant role in modern-day marketing, the process of creating a high-quality video demands significant investment in time, effort, and money. However, content creators can now leverage artificial intelligence (AI) tools to produce compelling videos from text in mere seconds. &lt;a href="https://www.synthesia.io/?via=rembertdesigns"&gt;Synthesia&lt;/a&gt; is one of the top AI-powered tools that can generate audiovisual content.&lt;/p&gt;

&lt;p&gt;Synthesia democratizes video production by placing AI-driven video creation into the hands of creators. This user-friendly software leverages AI to transform video creation, thereby reducing video production costs significantly. If you're considering creating high-quality videos for your YouTube channel or website, this Synthesia review will offer you an in-depth analysis of its features, pricing, pros, cons, and how it works.&lt;/p&gt;

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

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

&lt;p&gt;The creators of Synthesia AI video generator are a team of accomplished researchers and entrepreneurs from leading institutions such as &lt;a href="https://www.ucl.ac.uk"&gt;UCL&lt;/a&gt;, &lt;a href="https://www.tum.de/en/"&gt;TUM&lt;/a&gt;, &lt;a href="https://www.stanford.edu"&gt;Stanford&lt;/a&gt;, &lt;a href="https://www.foundry.com"&gt;Foundry&lt;/a&gt;, and &lt;a href="https://www.cam.ac.uk"&gt;Cambridge&lt;/a&gt;. This revolutionary synthetic media software uses AI to create videos from text prompts.&lt;/p&gt;

&lt;p&gt;Synthesia is globally recognized as a pioneer in synthetic media and has collaborated with top-tier media brands such as the British Broadcasting Corporation (&lt;a href="https://www.bbc.com"&gt;BBC&lt;/a&gt;), &lt;a href="https://corporate.mcdonalds.com/corpmcd/home.html"&gt;McDonald's&lt;/a&gt;, &lt;a href="https://www.reuters.com"&gt;Reuters&lt;/a&gt;, &lt;a href="https://www.accenture.com/us-en"&gt;Accenture&lt;/a&gt;, &lt;a href="https://www.wpp.com"&gt;WPP&lt;/a&gt;, and &lt;a href="https://www.ey.com/en_us"&gt;Ernst &amp;amp; Young&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Synthesia allows you to produce captivating videos for e-learning, customer onboarding, YouTube channels, websites, advertising, and other marketing materials. With this AI video generator, there is no need for a studio, actors, video recording, or audio equipment to create a high-quality video.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-Step Guide: How Synthesia AI Generates Videos
&lt;/h2&gt;

&lt;p&gt;Generating a video with Synthesia is a breeze. The process involves following a few simple steps, and the tool handles the rest. To guide you on creating a video with Synthesia, here's a step-by-step tutorial:&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing the Right Presenter for Your Video: Synthesia's Options
&lt;/h3&gt;

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

&lt;p&gt;The Synthesia platform offers over 160+ presenters to choose from within its panel. For premium plan subscribers, you can even create and personalize your own avatar. Once you've selected or designed your avatar, you have the flexibility to modify the following aspects using the Synthesia tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Template&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Background&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Images&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Music&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shapes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Creating an Engaging Video Script with Synthesia
&lt;/h3&gt;

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

&lt;p&gt;Before commencing the video creation process, it is necessary to craft a script for your video. Moreover, if you possess a pre-existing video in your library, you have the choice of uploading it to Synthesia to generate a replica video in another language. You only need to select the target language, accent, and voice, and Synthesia will produce the video in just a few minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transform Your Script into a Video with Synthesia's Processing Power
&lt;/h3&gt;

&lt;p&gt;When generating a video from scratch, the AI-powered tool will use your script as the foundation for the video. Once you have written the script and chosen your desired language, the AI tool will commence producing the video.&lt;/p&gt;

&lt;h3&gt;
  
  
  Synthesia Video Access Made Simple: Download and Stream
&lt;/h3&gt;

&lt;p&gt;Once Synthesia has finished processing your video, you will typically be prompted to either save, stream, or share it. This final step is usually performed after the video creation process is complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discover the Top Applications of Synthesia: Popular Use Cases
&lt;/h2&gt;

&lt;p&gt;Synthesia's AI video creation tool is a versatile solution that can be used in a wide range of applications. One of the most popular use cases is in &lt;strong&gt;e-learning&lt;/strong&gt;, where the tool can be used to create engaging and interactive educational videos. Businesses are also using Synthesia to create &lt;strong&gt;marketing videos&lt;/strong&gt; that can promote products and services in a creative and visually appealing way. Other popular applications include &lt;strong&gt;customer onboarding videos&lt;/strong&gt;, &lt;strong&gt;internal training videos&lt;/strong&gt;, &lt;strong&gt;social media videos&lt;/strong&gt;, and even &lt;strong&gt;video resumes&lt;/strong&gt;. The ability to create videos in multiple languages is also a major benefit for global organizations. With Synthesia, users can create high-quality videos without the need for expensive equipment or production teams, making it an accessible tool for creators and businesses of all sizes.&lt;/p&gt;

&lt;p&gt;Here is a sample video that I produced for &lt;a href="https://www.gamedaydna.com/non-invasive-prenatal-dna-paternity-testing-near-me"&gt;GameDay DNA&lt;/a&gt;, a paternity business that I collaborate with for content creation and SEO purposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Features of Synthesia AI Video Creator
&lt;/h2&gt;

&lt;p&gt;Synthesia's AI video creator offers a range of features that make it a top choice for content creators and businesses looking to generate high-quality videos quickly and efficiently. One of the most notable features is the ability to choose from over 160 presenters or create custom avatars, giving users full control over the visual aspect of their videos. The tool also offers a range of customization options for the video's background, images, music, and shapes.&lt;/p&gt;

&lt;p&gt;Additionally, Synthesia's AI technology can process scripts in multiple languages, making it a valuable tool for global organizations. The tool's simple and intuitive interface makes it beginner-friendly, while still offering advanced options for experienced video creators. Finally, Synthesia offers a range of pricing plans to suit different needs and budgets, making it a flexible and accessible solution for businesses of all sizes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Synthesia Pro's
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Fast and efficient video creation: Synthesia can generate high-quality videos in a matter of minutes, which can save content creators time and money.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy to use: The user interface is beginner-friendly, with drag-and-drop features and intuitive controls that make video creation accessible to even those with little to no experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Customizable presenters: With over 160 presenters to choose from, Synthesia allows for customization of the presenter's appearance, background, music, and other aspects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multilingual video creation: Synthesia can create videos in over 40 languages, making it a useful tool for businesses and organizations with global reach.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Affordable pricing plans: Synthesia offers several pricing plans, including a free plan, making it accessible to businesses of all sizes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Synthesia Con's
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Limited customization options: While Synthesia allows for the customization of presenters and some other elements, there are limitations to the extent of customization available, which may not meet the needs of all businesses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited video length: Synthesia has a maximum video length of 3 minutes, which may not be sufficient for some businesses or organizations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited voice options: While Synthesia can generate videos in over 120 languages, the number of voice options available for each language is limited, which may not suit the needs of businesses with specific voice requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited integration options: Synthesia's integration options are limited to a select few platforms, which may not be compatible with some businesses' existing workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lack of advanced features: While Synthesia offers several useful features, it may not have all the advanced features that some businesses may require, such as advanced editing tools or special effects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Synthesia Account: Step-by-Step Guide
&lt;/h2&gt;

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

&lt;p&gt;Signing up for Synthesia AI Video Creator is a simple process that can be completed in just a few steps. One of the easiest ways to sign up for Synthesia is to visit their &lt;a href="https://www.synthesia.io/?via=rembertdesigns"&gt;official website&lt;/a&gt; and click on the "Sign Up" button. You will then be taken to the registration page, where you'll be prompted to fill in your details such as your name, email address, and password. Another option is to sign up using your Google or Facebook account, which saves you the hassle of having to create a new account from scratch.&lt;/p&gt;

&lt;p&gt;Additionally, you can sign up for a free trial of Synthesia by clicking on the "Try for free" button on their website and entering your email address to receive a link to activate your free account. Once you've completed the sign-up process, you can start creating engaging videos using Synthesia's AI-powered platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Can Benefit the Most from Synthesia?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.synthesia.io/?via=rembertdesigns"&gt;Synthesia&lt;/a&gt; is an ideal tool for anyone who wants to create engaging videos easily and quickly. Here are some groups of people who can benefit the most from Synthesia:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content Creators&lt;/strong&gt;: Synthesia is a great tool for content creators who want to produce high-quality videos quickly and cost-effectively. With Synthesia, they can create videos for their blogs, social media channels, and other online platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Business Owners&lt;/strong&gt;: Synthesia is an excellent tool for business owners who want to create promotional or explainer videos for their products or services. This tool can help them save time and money on video production and boost their marketing efforts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Educators&lt;/strong&gt;: Synthesia is an ideal tool for educators who want to create instructional videos for their students. They can use Synthesia to create engaging e-learning videos, course introductions, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Social Media Managers&lt;/strong&gt;: Synthesia is a valuable tool for social media managers who want to create engaging video content for their clients. With Synthesia, they can quickly create videos that are optimized for social media platforms.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Video Editors&lt;/strong&gt;: Synthesia is a powerful tool for video editors who want to add a professional touch to their videos. They can use Synthesia to create animated text overlays, intros, outros, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In summary, Synthesia is a remarkable tool for content creators, marketers, educators, and anyone who wants to make high-quality videos quickly and efficiently. With Synthesia, you can create videos from a text in minutes without any technical or creative expertise. Its vast library of presenters, languages, and customization options makes it easy to tailor your videos to your specific needs.&lt;/p&gt;

&lt;p&gt;Synthesia's innovative AI technology is transforming the way videos are produced, allowing for greater creativity, flexibility, and cost-effectiveness. If you're looking to take your video content to the next level, Synthesia is undoubtedly worth trying out. &lt;a href="https://www.synthesia.io/?via=rembertdesigns"&gt;Sign up for Synthesia today&lt;/a&gt; and start creating compelling videos that engage your audience and drive results.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt; where I post daily about Tech related things!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pPwOGWwZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pPwOGWwZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="800" height="225"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/links"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What is Local Link Building? Creating an SEO Strategy Step-by-Step Guide</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Sun, 20 Nov 2022 22:46:20 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/what-is-local-link-building-creating-an-seo-strategy-step-by-step-guide-3ado</link>
      <guid>https://forem.com/rembertdesigns/what-is-local-link-building-creating-an-seo-strategy-step-by-step-guide-3ado</guid>
      <description>&lt;p&gt;Regardless of your company size, you want your target audience and potential clients to quickly find you and learn about your services. But small businesses might have a more challenging time reaching a more significant number of customers than giant enterprises and corporations. Luckily, small businesses can leverage the power of backlinking with my local link-building guide.&lt;/p&gt;

&lt;p&gt;Small businesses also have a unique advantage – they have higher odds of targeting a regional market and achieving visibility.&lt;/p&gt;

&lt;p&gt;The trick is to get your business in front of more potential customers by boosting your online regional search presence. However, you must wonder how to accomplish that.&lt;/p&gt;

&lt;p&gt;Establishing relevant links helps you enhance your organic regional traffic and rankings. Backlinks are the decisive factor in how your website will rank.&lt;/p&gt;

&lt;p&gt;Because of that, I created this local link-building guide. It aims to help you increase your traffic and improve your ranking strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Local Link Building?
&lt;/h2&gt;

&lt;p&gt;Local link building represents the process of building up-to-date and relevant links from regional business websites. That helps boost organic traffic and rank a company higher in searches for compatible regional keywords.&lt;/p&gt;

&lt;p&gt;These links are continuously among the most crucial ranking factors. For instance, a 2020 survey found that 93 percent of consumers used online searches to find a nearby company.&lt;/p&gt;

&lt;p&gt;Moreover, 28 percent of these searches result in purchases. These links help companies increase their domain authority and traffic, allowing them to convert more leads.&lt;/p&gt;

&lt;p&gt;Thus, establishing helpful links is among the best ways to ensure a website is relevant and beneficial to the community. Some might say there are other methods to achieve that, such as social network mentions, podcast appearances, and blog guest posts.&lt;/p&gt;

&lt;p&gt;But this backlink building is unique. These links derivate from sources compatible with the company’s geographical area (e.g., press releases, blogs, directories, and city guides).&lt;/p&gt;

&lt;p&gt;For instance, if you own a pasta restaurant in New York City and get a backlink from a food blog in Washington DC, that is relevant and will likely improve your backlink profile. However, that wouldn’t be efficient in attracting nearby customers and encouraging them to visit your company.&lt;/p&gt;

&lt;p&gt;Hence, links from regional platforms and websites are essential for reaching people in your area. Small companies must center their efforts around regional link-building, which helps drive success.&lt;/p&gt;

&lt;p&gt;Nevertheless, getting just any links to your website is not enough. Instead, you should have an intentional approach and focus on relevant backlinking.&lt;/p&gt;

&lt;p&gt;You should also participate in your community, sponsor events, cultivate connections, and ensure people in your area know about your organization and mission. Thanks to that, you’ll become a go-to company brand among your customers.&lt;/p&gt;

&lt;p&gt;This local link-building guide gives you the necessary insights into this process and how to get local backlinks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diving Deeper into Local Link Building
&lt;/h3&gt;

&lt;p&gt;Before leveraging this method, it’s crucial to understand how this link-building works.&lt;/p&gt;

&lt;p&gt;Google has the Local pack and local organic results. The former is a feature appearing on the first search results page for any queries with regional keywords and intent.&lt;/p&gt;

&lt;p&gt;This SERP element uses a map to highlight business locations and the three most relevant companies for the person looking for a service or product. As a result, company owners should optimize their Google Business profiles efficiently.&lt;/p&gt;

&lt;p&gt;The Local pack shows organic results beneath the query. When someone looks up “New York City beauty salons“ the regional organic results show New York City beauty salons and any relevant links, including directories, blog posts, and guides.&lt;/p&gt;

&lt;p&gt;These results mainly depend on link signals and on-page signals. It would help to establish solid regional links to rank high in organic results.&lt;/p&gt;

&lt;p&gt;However, people often mix links and citations. Here’s the difference.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a Local Citation?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D-qLMH7M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1668984076774/_Y4c72ABf.jpg%2520align%3D%2522left%2522" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D-qLMH7M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1668984076774/_Y4c72ABf.jpg%2520align%3D%2522left%2522" alt="seo-link-building-2.jpg" width="" height=""&gt;&lt;/a&gt;&lt;br&gt;
This citation represents any mention of a regional business, including its partial name, full name, phone number, or address. One may find these citations on apps, social media networks, or websites.&lt;/p&gt;

&lt;p&gt;These mentions help internet users discover nearby businesses. Therefore, they affect regional SERPs.&lt;/p&gt;

&lt;p&gt;But despite both being beneficial for your company, backlinks represent direct links from another website to your company’s page. However, partial citations might not impact your traffic and authority much due to not giving complete information.&lt;/p&gt;

&lt;p&gt;Follow these local link-building tips to create the most efficient strategies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 5 Tips on How to Get Local Backlinks and Improve Your Local SEO
&lt;/h2&gt;

&lt;p&gt;Our local link-building guide highlights the five most efficient ways to drive organic traffic by getting relevant backlinks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Establish Close Business Connections
&lt;/h3&gt;

&lt;p&gt;Reinforcing human relationships is often underrated. Yet, this is also the most efficient way to get these links and be more present in the minds of your consumers.&lt;/p&gt;

&lt;p&gt;Start with your existing relationships. Go through contacts and assess who would benefit from a partnership or might be interested in spreading the positive word about your company.&lt;/p&gt;

&lt;p&gt;For example, bar owners may reach out to nearby restaurants, suggesting coupons their customers could use after buying a particular number of drinks. The latter could share information about this promotion on their website, providing a relevant backlink.&lt;/p&gt;

&lt;p&gt;Think about the businesses that complement your services or have something in common. You can also talk with your vendors or suppliers to get relevant backlinks to your website.&lt;/p&gt;

&lt;p&gt;However, it’s wise to do this in person. Instead of sending an email or calling your potential partner, visit them and present your idea face-to-face, allowing more efficient communication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build Citations
&lt;/h3&gt;

&lt;p&gt;Establishing citations should always be among your first link-building strategies. That helps you share the elementary data about your business across various sources online and reach more people.&lt;/p&gt;

&lt;p&gt;Although citations are online mentions in business directories, they can also include links to your website. When building citations, seek industry-related directories and those focusing on your unique niche.&lt;/p&gt;

&lt;p&gt;Thus, they are easy to find. Simply type (industry) directory, (industry) listings, (city/town) (industry) directory, or (city/town) (industry) listings. But research them before establishing links.&lt;/p&gt;

&lt;p&gt;These directories should align with your company’s products and services, ensuring they can generate sufficient traffic. Choose free listings or check whether they offer benefits that match the fee required for paid directories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reach Out to Influencers from Your City
&lt;/h3&gt;

&lt;p&gt;Influencers are becoming an increasingly valuable marketing tool for companies, regardless of their products and services. They can help you establish a presence and authority in your community.&lt;/p&gt;

&lt;p&gt;Most cities have blogs that attract many visits and provide relevant information to the citizens. That is a great way to get the word about your company out there and piggyback on their audience.&lt;/p&gt;

&lt;p&gt;Moreover, these influential individuals typically look for new opportunities and connections. They would eagerly share a link to your website on their platforms in return for a product sample or discount.&lt;/p&gt;

&lt;p&gt;Collaboration with influencers would help you get relevant backlinks and connect with younger customers, who are more likely to inform themselves about businesses through their favorite online personalities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Mentions in Relevant Press
&lt;/h3&gt;

&lt;p&gt;Although it might take more time and dedication to research and contact regional blogs, newspapers, websites, and podcasts, it would accelerate your backlink-building strategy. Besides, you can reach out to media outlets that have already mentioned you in their content and ask to add a link to your website.&lt;/p&gt;

&lt;p&gt;Use your communication skills and write a friendly email asking to adjust the article by introducing a backlink. But it would help if you also worked on getting new press features by creating a list of relevant websites and publications.&lt;/p&gt;

&lt;p&gt;Leverage Google’s Advanced Search to look up terms like a business spotlight, feature, or entrepreneur spotlight. Moreover, check your competitors’ backlinks and consider reaching out to the press that mentioned them.&lt;/p&gt;

&lt;p&gt;Reach out to relevant writers, inspire them to write about your company, and add a link to your website. Offer a different angle on a story that would interest their readers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Work with Professionals and Experts from Your City
&lt;/h3&gt;

&lt;p&gt;Reach out to professionals and experts from your area to build tight-knit connections that could help you get backlinks and increase brand awareness. For instance, you can collaborate on niche projects and events related to your organizational mission.&lt;/p&gt;

&lt;p&gt;A graphic designer could partner with technical writers from their city to create video or written content on the latest trends and techniques. On the other hand, if you’re a tourist agency owner, you might work with travel insurance companies on developing insurance plan content for your website.&lt;/p&gt;

&lt;p&gt;The first step is to list relevant professionals who align with your niche. For example, you can use online directories to find nearby specialists with authority in your industry.&lt;/p&gt;

&lt;p&gt;Working with these experts would help develop more informative, engaging, and helpful content for your website visitors. Thus, when your partners post these articles and reviews on their social media and websites, you’ll get backlinks that boost your SEO.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Building links to your website might take time, research, and strategizing, but improving your SEO and gaining more business visibility is an efficient strategy. However, you should start today and choose the best method to encourage companies and industry professionals to link content to your website.&lt;/p&gt;

&lt;p&gt;If you want to go beyond the local link-building guide and prefer specialists to do this for you, consider contacting us to get a quote for our local SEO services. That would allow you to focus on interacting with your target audience and brainstorming future strategies to improve your company’s visibility and authority.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt; where I post daily about Tech related things!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="880" height="247"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Video SEO: How to Optimize Video Content for Google Ranking</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Fri, 18 Nov 2022 00:25:24 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/video-seo-how-to-optimize-video-content-for-google-ranking-3cm7</link>
      <guid>https://forem.com/rembertdesigns/video-seo-how-to-optimize-video-content-for-google-ranking-3cm7</guid>
      <description>&lt;p&gt;Roughly, internet users make around 93,939 Google searches every second. And while that seems like enormous volumes of internet traffic, you shouldn’t forget that there are also around over 1.8 billion web platforms that compete with you to capture that traffic.&lt;/p&gt;

&lt;p&gt;In such a digital rat race, what can help you stand out in the SERPs and garner more of that traffic? &lt;/p&gt;

&lt;p&gt;Truth be told, there are quite a few tested and effective SEO approaches, content strategies, and other ways that help you increase traffic to your website. &lt;/p&gt;

&lt;p&gt;In this article, we’ll be discussing the power of video SEO and how it can improve your content strategy, especially if you opt for quality &lt;a href="https://www.rembertdesigns.co/"&gt;content marketing services&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;So, in this article, I’ll talk about the value of a high-quality video content strategy and touch base on the importance of video in the digital sphere, in general.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Importance of a Video Content Strategy
&lt;/h2&gt;

&lt;p&gt;Before we get into the best practices for video SEO, you should first understand why video is essential to your content strategy.&lt;/p&gt;

&lt;p&gt;In essence, every marketing plan has one general aim: to bring more traffic to your website. In that regard, video SEO can go a long way since it will favor Google’s algorithm, help you win backlinks, improve your bounce rates, and, overall, make your website more engaging.&lt;/p&gt;

&lt;p&gt;As hinted above, Google loves video because internet users love it too. Research suggests that around 96% of consumers have watched explainer videos to learn about a specific service or product. &lt;/p&gt;

&lt;p&gt;Naturally, Google jumped on the video bandwagon, promoting video-heavy content, which means one thing: websites with a strong video content strategy will get ranked higher. &lt;/p&gt;

&lt;p&gt;On the other hand, video SEO will help you increase your overall digital presence. Think about it: you post a video on your site and provide your visitors with links to your social channels, YouTube account, webinar content, etc.; you are giving them a chance to visit all those platforms via one funnel. As more and more people visit these pages, Google will recognize them and rank them higher. In this regard, video SEO can help you improve your overall presence and can help earn more customers from all your channels. &lt;/p&gt;

&lt;p&gt;Lastly, video SEO can help you maximize your potential for link-building. The &lt;a href="https://www.semrush.com/blog/link-building/"&gt;majority of SEO&lt;/a&gt; experts say that backlinks can be a crucial website ranking factor. Video can help you a great deal in attracting quality backlinks because such materials are regarded as “TOFU content” or top-of-the-funnel content. &lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for a Bullet-Proof Video Content Strategy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FWmAv_ce--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3elc11l8zlpla4dc62p2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FWmAv_ce--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3elc11l8zlpla4dc62p2.jpg" alt="Video SEO" width="880" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrate Videos
&lt;/h3&gt;

&lt;p&gt;To get started, ensure you integrate all of your relevant videos into your site. Naturally, you can’t just upload random videos and hope for the best. Your content strategy with video will only work if the videos fulfill the following criteria: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Relevancy&lt;/strong&gt;: The videos you post should be relevant to your brand and the specific topic you’re addressing. These can be how-to videos, tutorials, or content that showcases your products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exclusivity&lt;/strong&gt;: The info you provide can’t be found elsewhere (product tests, insider tips, and so on).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt;: The videos you upload should be well-produced, edited, and high-quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more help, consider these video types which meet all three criteria points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explainer videos&lt;/li&gt;
&lt;li&gt;Product demonstration videos&lt;/li&gt;
&lt;li&gt;Testimonials and user reviews&lt;/li&gt;
&lt;li&gt;BTS or behind-the-scenes videos&lt;/li&gt;
&lt;li&gt;Videos that showcase company culture&lt;/li&gt;
&lt;li&gt;Sales video&lt;/li&gt;
&lt;li&gt;Webinars&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Apply Video SEO
&lt;/h3&gt;

&lt;p&gt;Again, you simply can’t just add a video to your site and hope for the best. Even a high-quality video needs some “SEO love,” so Google will recognize its worth. &lt;/p&gt;

&lt;p&gt;The necessary video optimization tasks (like adding descriptions, glossary, and creating an accompanying copy) are all essential to give your viewers even more information and to throw in a few links to your products, services, and other web pages. Also, the content will be easily indexable, which will help with your ranking efforts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Educate Through Video
&lt;/h3&gt;

&lt;p&gt;Every content strategy should educate, entertain, and give users the information they are looking for. &lt;/p&gt;

&lt;p&gt;Here are a few tips that will help with creating engaging and educational content: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain why you are qualified to make the video&lt;/li&gt;
&lt;li&gt;Cover basic terms and jargon&lt;/li&gt;
&lt;li&gt;Use relevant statistics and other data to back your claims&lt;/li&gt;
&lt;li&gt;Enrich the video with visual elements, like animations, diagrams, overlay text, and so on&lt;/li&gt;
&lt;li&gt;Answer the potential questions your users might have about the topic or your products/services&lt;/li&gt;
&lt;li&gt;Make sure to have an intro and an outro&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stay up-to-date with Technicalities
&lt;/h3&gt;

&lt;p&gt;Lastly, you should ensure that the video meets the specifications and requirements of the platform you are uploading it to. Social channels, your website, and YouTube may sport different dimensions and aspect ratios, support various video formats, and so on. &lt;/p&gt;

&lt;p&gt;These may seem a bit nit-picky, but the truth is that people won’t watch low-quality videos that they can’t really make sense of. &lt;/p&gt;

&lt;h2&gt;
  
  
  Best Video SEO Practices
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fa_Y4gnY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jicfg20jrqiwh40sx4z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fa_Y4gnY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jicfg20jrqiwh40sx4z.jpg" alt="Best Video SEO Practices" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
Optimizing your videos for search engines take time and effort, but it isn’t impossible. As a matter of fact, there are several easy steps businesses and content creators can take to improve the visibility of their video content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the Right Platforms
&lt;/h3&gt;

&lt;p&gt;For starters, you need a hosting service that’s reliable and will be able to host your video, and will let you embed the video on your platform.&lt;/p&gt;

&lt;p&gt;Also, make sure to consider using YouTube, TikTok, or other video-sharing platforms that already have an established name and huge traffic. This way, you are already placing your content in a “busy area” with potential viewers. &lt;/p&gt;

&lt;h3&gt;
  
  
  Make Good Use of Closed Captions and Transcripts
&lt;/h3&gt;

&lt;p&gt;According to stats, around 83% of viewers watch videos on mute. This will naturally mean that if you want to keep the traffic optimal, you will need to add closed captions and video transcriptions.&lt;/p&gt;

&lt;p&gt;These won’t only come in handy when you want to keep more viewers engaged but will also help you with page ranking because search engine crawlers will scan the text for keywords. &lt;/p&gt;

&lt;h3&gt;
  
  
  Use Engaging Thumbnails
&lt;/h3&gt;

&lt;p&gt;Video SEO is crucial, but it won’t help you with your efforts if you don’t get views. Using engaging and exciting thumbnails can help you get more clicks. Simply choose one that grabs more attention and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make the thumbnail relevant to the content&lt;/li&gt;
&lt;li&gt;Align the text to the left&lt;/li&gt;
&lt;li&gt;Make sure the text is readable&lt;/li&gt;
&lt;li&gt;Use brighter colors&lt;/li&gt;
&lt;li&gt;Don’t make it “too busy” – limit it to only a few key elements&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Make Good Use of Traditional SEO
&lt;/h3&gt;

&lt;p&gt;Video SEO is a great way to improve your rankings, but that doesn’t mean that you should stop doing other optimization tasks altogether. The truth is, you probably won’t see the benefits of video if the rest of your site isn’t SEO-friendly.&lt;/p&gt;

&lt;p&gt;You need to make sure that your pages, tags, content, keywords, loading speed, images, and so on are all optimized.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Track the Metrics
&lt;/h3&gt;

&lt;p&gt;Measuring the performance of your videos enables you to improve your video content strategy on the fly. This is crucial if you want to improve your visibility with video in the long term. What this means is that you will have to keep tabs on things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The average duration of the video – how long your users spend watching your video&lt;/li&gt;
&lt;li&gt;Watch time – the total time amount people spend watching your content&lt;/li&gt;
&lt;li&gt;Demographics – who are the people who watch your videos the most?&lt;/li&gt;
&lt;li&gt;Conversion rates – how many people have bought your product after watching your videos?&lt;/li&gt;
&lt;li&gt;Bounce rate – the number of people who leave your site after watching a single page or video&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By assessing these metrics, you can identify the parts of your strategy that are doing great and the aspects that can do with a bit of improvement. Also, you can get a better idea of who is watching your videos and to whom you should cater your video content in the future. Also, you can determine which topic categories perform the best and adjust your strategy accordingly. &lt;/p&gt;

&lt;p&gt;From this point of view, metrics can help you fine-tune your existing approach, making it even better. Also, it can help you fix any unaccounted errors in time. &lt;/p&gt;

&lt;h2&gt;
  
  
  Embrace Video Marketing
&lt;/h2&gt;

&lt;p&gt;If you’ve spent any time researching digital marketing, then you know that video is crucial for online success. Users are hungry for video content, and businesses and content creators should cater to their needs if they want to remain relevant in the digital world. &lt;/p&gt;

&lt;p&gt;Setting up a sound search engine optimization strategy for your video content isn’t easy, but with the right tools and expert help, your brand can reach new digital heights in both the SERPS and conversions. It’s not something that will happen overnight, but it will help you cement your brand in the ever-growing digital wall, in plain eyesight, helping you reach more and more people.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt; where I post daily about Tech related things!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="880" height="247"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Getting Started With Parcel.js: A Web Application Bundler in 2022</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Wed, 02 Nov 2022 17:32:49 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/getting-started-with-parceljs-a-web-application-bundler-in-2022-3o88</link>
      <guid>https://forem.com/rembertdesigns/getting-started-with-parceljs-a-web-application-bundler-in-2022-3o88</guid>
      <description>&lt;p&gt;This post is your introduction to Parcel.js, the self-proclaimed “blazing fast, zero configuration web application bundler.” Here’s everything you need to know to get started with it:&lt;/p&gt;

&lt;p&gt;Many front-end developers have become frustrated with some of the complexities involved with building web apps today. It’s pretty standard practice to include some kind of build or bundling tool in a front-end workflow, thus many developers have looked into using a front-end tool like webpack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://webpack.js.org/" rel="noopener noreferrer"&gt;Webpack&lt;/a&gt; is the most popular bundler and it followed on the heels of &lt;a href="https://requirejs.org/" rel="noopener noreferrer"&gt;Require.js&lt;/a&gt;, &lt;a href="https://rollupjs.org/guide/en/" rel="noopener noreferrer"&gt;Rollup&lt;/a&gt;, and similar solutions. But the learning curve for a tool like webpack is steep. Getting started with webpack isn’t easy due to its complex configurations. As a result, in recent years another solution has emerged. This tool is not necessarily a front-runner, but an easier-to-digest alternative on the front-end module bundler landscape. Introducing &lt;a href="https://parceljs.org/" rel="noopener noreferrer"&gt;Parcel.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://parceljs.org/" rel="noopener noreferrer"&gt;Parcel.js&lt;/a&gt; is exactly what many beginnings to intermediate developers want: A simple, low-configuration bundler that you can get up and running with quickly.&lt;/p&gt;

&lt;p&gt;I hope this Parcel tutorial will provide an easy-to-follow introduction to this tool. I’ll cover the basics and then I’ll show you how to use Parcel to bundle a simple web app that incorporates &lt;a href="https://babeljs.io/" rel="noopener noreferrer"&gt;Babel&lt;/a&gt; and &lt;a href="https://sass-lang.com/" rel="noopener noreferrer"&gt;Sass&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use a Web App Bundler?
&lt;/h2&gt;

&lt;p&gt;Here’s a basic rundown of the benefits of using such a tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your app will have fewer HTTP requests due to scripts or stylesheets being combined&lt;/li&gt;
&lt;li&gt;Scripts and stylesheets can be loaded on demand, further improving performance&lt;/li&gt;
&lt;li&gt;Scripts and stylesheets can be automatically minified to deliver fewer kilobytes to the user&lt;/li&gt;
&lt;li&gt;Bundling and minification work is done automatically by the tool, minimizing manual work&lt;/li&gt;
&lt;li&gt;Development files are organized modularly, making your code much easier to maintain and debug&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, the benefits are many, and mostly related to performance and project maintenance. There certainly are lots of reasons to use a bundler, if this is something you haven’t yet considered.&lt;/p&gt;

&lt;p&gt;With that out of the way, let’s get started with the basics for getting up and running with Parcel.js. I’ll slowly go over the features in this tutorial using some simple examples that you’ll easily be able to follow along with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Parcel.js
&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%2Fuyj5sy576gzpyt1e870x.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%2Fuyj5sy576gzpyt1e870x.png" alt="Install Parcel.js"&gt;&lt;/a&gt;&lt;br&gt;
You can install Parcel.js in your terminal using Yarn or npm. For this tutorial, I’ll use npm. Here’s the command to install it globally so you can use it on any project:&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;parcel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;bundler&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-g&lt;/code&gt; flag installs it globally. If you only want to install it for a single project and add it to your project’s &lt;code&gt;devDependencies&lt;/code&gt; in &lt;code&gt;package.json&lt;/code&gt;, you can run the same command inside the root folder of the project using the &lt;code&gt;--save-dev&lt;/code&gt; flag instead of &lt;code&gt;-g&lt;/code&gt;:&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;parcel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;bundler&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the global install (which will be the most common use case), you can initiate any given project using the &lt;code&gt;init&lt;/code&gt; command. Use the terminal to navigate to the folder you want to use as the root of your application and run:&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-y&lt;/code&gt; flag prevents npm from asking any questions, using the defaults for the setup. Assuming my project is called &lt;code&gt;parcel-demo&lt;/code&gt;, this creates a package.json file at the root that looks like this:&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="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&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;parcel-demo&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;version&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;1.0.0&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;description&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="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&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;index.js&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;scripts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&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;test&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;echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Error: no test specified&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp;&amp;amp; exit 1&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;keywords&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&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;author&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="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;license&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;ISC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating a File Entry Point
&lt;/h2&gt;

&lt;p&gt;For a basic project setup, I’m going to use Parcel.js on an index.html file that points to a primary JavaScript file called index.js (as shown in the package.json file). This HTML file will serve as my Parcel entry point. My HTML file will have a script element that points to my JavaScript file, so it will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Parcel Demo&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./js/index.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once I have the correct HTML file and JavaScript file in place, I can start Parcel’s built-in development server by running the following in my terminal inside my project’s folder:&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="nx"&gt;parcel&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This starts the server and tells it what file to use as the entry point. As a result, I get the following message in my terminal session:&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="nx"&gt;Server&lt;/span&gt; &lt;span class="nx"&gt;running&lt;/span&gt; &lt;span class="nx"&gt;at&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//localhost:1234&lt;/span&gt;
&lt;span class="err"&gt;√&lt;/span&gt;  &lt;span class="nx"&gt;Built&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;887&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I can now open &lt;code&gt;http://localhost:1234/&lt;/code&gt; in my browser to view what I’ve built so far. The live server uses live reload and something called hot module replacement. This will automatically update modules on a page without doing a full page refresh. This way I can see the progress of my build in faster increments, as I work.&lt;/p&gt;

&lt;p&gt;Once I have Parcel.js running with its server active, any changes I make to a file will automatically rebuild my app each time the file is saved. To see this in action, I’m going to add a simple console log line in my script. This will trigger the following message in my terminal:&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="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;parcel&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;span class="nx"&gt;Server&lt;/span&gt; &lt;span class="nx"&gt;running&lt;/span&gt; &lt;span class="nx"&gt;at&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//localhost:1234&lt;/span&gt;
&lt;span class="err"&gt;√&lt;/span&gt;  &lt;span class="nx"&gt;Built&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;1.08&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="err"&gt;√&lt;/span&gt;  &lt;span class="nx"&gt;Built&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each “Built…” line represents one build, triggered by a change in content and save.&lt;/p&gt;

&lt;p&gt;If I want to use my own server, rather than Parcel’s built-in development server, I can use the &lt;code&gt;watch&lt;/code&gt; command:&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="nx"&gt;parcel&lt;/span&gt; &lt;span class="nx"&gt;watch&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I get the same result in my terminal session, with Parcel.js building my app and then waiting for changes:&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="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;parcel&lt;/span&gt; &lt;span class="nx"&gt;watch&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;span class="err"&gt;√&lt;/span&gt;  &lt;span class="nx"&gt;Built&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;855&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The dist/ Folder
&lt;/h2&gt;

&lt;p&gt;Once I’ve started Parcel.js either in watch mode or via the built-in server, if I look inside my project’s folder, I’ll see a folder and file structure like the following:&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="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;span class="kr"&gt;package&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;
&lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;    
 &lt;span class="err"&gt;└─────&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;
&lt;span class="nx"&gt;dist&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
 &lt;span class="err"&gt;└─────&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
 &lt;span class="err"&gt;└─────&lt;/span&gt; &lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="nx"&gt;a46daa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;
 &lt;span class="err"&gt;└─────&lt;/span&gt; &lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="nx"&gt;a46daa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;dist&lt;/code&gt; folder that gets created automatically. This is where my production files are; I don’t touch any of these files. Notice that my Parcel build has automatically converted my index.js file to one with a unique cache-friendly version (with a revisioned file name). It’s also added a source map file.&lt;/p&gt;

&lt;p&gt;If I look in my index.html file inside the &lt;code&gt;dist&lt;/code&gt; folder, I’ll see the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Parcel Demo&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/js.00a46daa.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;dist&lt;/code&gt; version of my index.html file points correctly and conveniently to the &lt;code&gt;dist&lt;/code&gt; version of my .js file.&lt;/p&gt;

&lt;p&gt;If my website includes multiple files that point to the same scripts (for example, about.html, contact.html, etc.), I can use the following command:&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="nx"&gt;parcel&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="nx"&gt;about&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="nx"&gt;contact&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells Parcel that I want to use multiple entry points to build from. I can also use the following command to tell Parcel.js to use all my HTML files as entry points:&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="nx"&gt;parcel&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using Parcel.js with Babel
&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%2Fq1u3ht7iz4jwdcu7pwpo.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%2Fq1u3ht7iz4jwdcu7pwpo.png" alt="Babel Homepage"&gt;&lt;/a&gt;&lt;br&gt;
Parcel.js has built-in support for different code transpilers, including &lt;a href="https://babeljs.io/" rel="noopener noreferrer"&gt;Babel&lt;/a&gt;, the popular tool for converting modern next-generation JavaScript to equivalent code that can be understood by all browsers. Because Babel is built into Parcel.js, you don’t need a special plug-in to use it, it just works. Let’s look at an example.&lt;/p&gt;

&lt;p&gt;I’m going to add the following code to my index.js file:&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;function&lt;/span&gt; &lt;span class="nf"&gt;getInfo&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;black&lt;/span&gt;&lt;span class="dl"&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ferrari&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1987&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Red&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rolls Royce&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2018&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mercedes Benz&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code uses an ES6 feature called default parameters, which you can see specifically in the function head. Older browsers don’t support default parameters for functions. To make sure the code doesn’t throw an error, I need Babel to transpile the code into equivalent code that works in all browsers. Once I’ve saved my index.js file, Parcel.js will rebuild my app and produce the following in place of the ES6 code I wrote:&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;function&lt;/span&gt; &lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;arguments&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="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;arguments&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="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;arguments&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="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;arguments&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="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;black&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ferrari&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1987&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Red&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rolls Royce&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2018&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mercedes Benz&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use Babel’s online repo to &lt;a href="https://babeljs.io/repl#?browsers=&amp;amp;build=&amp;amp;builtIns=false&amp;amp;corejs=3.21&amp;amp;spec=false&amp;amp;loose=false&amp;amp;code_lz=GYVwdgxgLglg9mABAcwKZQJJmHRAKMAQwFtUAaRAT1UICdEBeRAJgAYBGADgojgBs49JgHIARnxCphASkQBvAFCJEvMAGd-qAHQDkBEuSo1aPfoOkBuBQF8FCtJmxw8wgMIALVADdKwiuwBOAFYAdgphAHFaVFQwGSsHLBwXACFYgC8_RECQoMt7dCTnYQAJBAATQnigA&amp;amp;debug=false&amp;amp;forceAllTransforms=false&amp;amp;shippedProposals=false&amp;amp;circleciRepo=&amp;amp;evaluate=false&amp;amp;fileSize=false&amp;amp;timeTravel=false&amp;amp;sourceType=module&amp;amp;lineWrap=true&amp;amp;presets=es2015%2Creact%2Cstage-2&amp;amp;prettier=false&amp;amp;targets=&amp;amp;version=7.9.0&amp;amp;externalPlugins=&amp;amp;assumptions=%7B%7D" rel="noopener noreferrer"&gt;test a variation of this out&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And notice the most important factor here: I didn’t do anything to install or configure Babel – it just works out-of-the-box as part of Parcel’s default setup! Of course, you might want to add some config options to alter Babel to do what you want. If that’s the case, you can add a .babelrc file in your project’s root folder, with your configuration preferences included. You can read more about &lt;a href="https://parceljs.org/languages/javascript/#babel" rel="noopener noreferrer"&gt;using a .babelrc file&lt;/a&gt; on the Parcel.js website.&lt;/p&gt;

&lt;p&gt;Take a look at my GitHub Repo of a &lt;a href="https://github.com/rembertdesigns/Formula-1-Driver-Standings" rel="noopener noreferrer"&gt;Formula 1 Driver Standings &lt;/a&gt;created with Pug, SCSS, and Babel.&lt;br&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%2Fgfep6xx9znh5yz274le8.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%2Fgfep6xx9znh5yz274le8.png" alt="Formula 1 Driver Standings"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Using Parcel.js with Sass
&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%2Fpghgw9bhp2h72zple108.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%2Fpghgw9bhp2h72zple108.png" alt="Sass Homepage"&gt;&lt;/a&gt;&lt;br&gt;
Similar to Babel, Parcel will also by default automatically compile my SCSS (Sass) files to valid CSS. To demonstrate this, I’m going to add a folder called “css” to the root of my example project. In that folder I’ll add a style.scss file with the following Sass code:&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;body&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;black&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="err"&gt;.module&lt;/span&gt; &lt;span class="err"&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="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I’m using Sass’s selector nesting feature. I’ll add the following line to the &lt;code&gt;&amp;amp;lt;head&amp;amp;gt;&lt;/code&gt; section of my HTML files:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="nx"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stylesheet&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./css/style.scss&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once all my files are saved, Parcel will produce a fresh build in my &lt;code&gt;dist/&lt;/code&gt; folder with a compiled CSS file that has converted my SCSS to the following:&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;body&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;black&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="nc"&gt;.module&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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As long as I have Sass installed on my system globally, Parcel will do this automatically, with no configuration needed. If I don’t have a global install of Sass, no problem. I can just write my SCSS, then start Parcel and Parcel will install Sass automatically as a project-specific dependency. Very convenient! And again this is especially useful because it doesn’t require any configuration.&lt;/p&gt;

&lt;p&gt;And just like with Babel, I can choose to go with whatever default configuration options come with Sass. Or I can create a &lt;code&gt;.sassrc&lt;/code&gt; file in my project’s root and &lt;a href="https://en.parceljs.org/scss.html" rel="noopener noreferrer"&gt;add my own configurations&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bundling Multiple Scripts with Parcel
&lt;/h2&gt;

&lt;p&gt;So far, the examples I’ve shown you are just to get you up and running with Parcel, so you can get a basic idea of how it functions. As mentioned earlier, the power of any bundler is the ability to automatically combine multiple files into a single file. This helps with reducing HTTP requests and improving the speed of your website or app.&lt;/p&gt;

&lt;p&gt;Everything I’ve demonstrated so far can be done using multiple scripts that are pulled in using ES6’s module feature. This allows me to create and import scripts in a modular fashion. This keeps my code easy to maintain while still only serving a single bundled script in production.&lt;/p&gt;

&lt;p&gt;To demonstrate this, I’m going to add a separate file called module.js that will contain the following JavaScript:&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="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;n2&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;n1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;n2&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;This is just some basic code to export two objects: A variable and a function. In my index.js file I’m going to import these resources with the following code:&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../js/module.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "green"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// 60&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, this is just basic ES6 module syntax. I won’t go into the details of how this works here. The beautiful part about this is the fact that I did not need to specify in my HTML file that I was using a module. Normally my script tag will look like this, with the &lt;code&gt;type&lt;/code&gt; attribute set to &lt;code&gt;module&lt;/code&gt;:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./js/index.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;module&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But this isn’t needed. Parcel recognizes the module being imported and bundles up my two scripts into a single performance-friendly resource. This happens without any special configuration or plugins. And just like the earlier examples, the code is transpiled using Babel into ES5-equivalent code that will give me the most browser support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Splitting with Parcel.js
&lt;/h2&gt;

&lt;p&gt;Yet another feature in Parcel that works without any configuration is &lt;a href="https://en.parceljs.org/code_splitting.html" rel="noopener noreferrer"&gt;code splitting&lt;/a&gt;. In some cases, I’ll want all my modules loaded on all my pages. But in other cases, I might only want to load certain modules on certain pages, in certain contexts. This is what code splitting allows me to do.&lt;/p&gt;

&lt;p&gt;Earlier I mentioned that my example project includes three pages: index.html, about.html, and contact.html. Let’s say I want to run the same JavaScript bundle on all three pages, but on the about.html page, I have a button that triggers something specific. But I only want that code to load when that button is pressed.&lt;/p&gt;

&lt;p&gt;Here’s how that code might look using the code-splitting feature:&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="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.about&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.about&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&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="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../js/about.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;About Page Updated&lt;/span&gt;&lt;span class="dl"&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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice This is incorporating a new JavaScript feature, &lt;a href="https://v8.dev/features/dynamic-import" rel="noopener noreferrer"&gt;dynamic imports&lt;/a&gt; using the &lt;code&gt;import()&lt;/code&gt; function. This allows me to dynamically load the code I want in a specific instance. In this case, I’m doing it when a button is pressed on the about page. The &lt;code&gt;import()&lt;/code&gt; feature returns a promise, so I can do whatever I want inside the &lt;code&gt;.then()&lt;/code&gt; clause, which triggers once the imported script is loaded. The about.js script is loaded on demand and this code will be transpired by Babel to cross-browser ES5, to ensure it works everywhere. When my bundle gets created, the about.js portion gets put in its own file inside the &lt;code&gt;dist/&lt;/code&gt; folder, to enable this file to be loaded on demand.&lt;/p&gt;

&lt;p&gt;Like other features I’ve discussed, the &lt;code&gt;import()&lt;/code&gt; feature works in Parcel without any configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Builds with Parcel.js
&lt;/h2&gt;

&lt;p&gt;Up until now, I’ve been producing all my Parcel builds on the fly using the built-in server that comes with Parcel and that includes live reload. Each time I save my project, my bundle is built. But the code was always bundled for ongoing development. This way I can view or inspect the source as needed to do some debugging.&lt;/p&gt;

&lt;p&gt;Once my project is complete and ready to be pushed to a live server, I can stop Parcel from watching my project. CTRL-C in the terminal does this on many platforms. Then I’ll run the following command to tell Parcel to produce one final build:&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="nx"&gt;parcel&lt;/span&gt; &lt;span class="nx"&gt;build&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="nx"&gt;about&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="nx"&gt;contact&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, I’m building from all three of my entry files. Once this is done, Parcel is no longer waiting for changes; the final bundle is built and that’s it. In addition to the build being finalized, my code is prepared for production by Parcel. The HTML, CSS, and JavaScript are all minified to produce the smallest possible files for optimized performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Any Drawbacks to using Parcel?
&lt;/h2&gt;

&lt;p&gt;The parcel should definitely be the go-to choice for those who have little or no experience with building tools. But in my own research, I’ve found a few things I can mention that should be improved in the future.&lt;/p&gt;

&lt;p&gt;First of all, you’ll notice that Parcel always places your bundled scripts and stylesheets in the same directory as the entry point HTML files. This happens even if you have your CSS and JavaScript files in separate folders. Since these are production files, it might not matter much. But it’s something to keep in mind. The good news is this &lt;a href="https://github.com/parcel-bundler/parcel/issues/4006" rel="noopener noreferrer"&gt;seems to have been corrected&lt;/a&gt; in the upcoming Parcel version 2 (still in Alpha). So there should be a way to override this behavior when that version of Parcel is stable (the current stable version is 1.12.4).&lt;/p&gt;

&lt;p&gt;Another drawback is that I found the Parcel documentation is pretty minimal when it comes to information on customizing the configuration options for the different features. It’s true that one of Parcel’s huge benefits is how well it works out of the box. But I think some more extensive documentation on customizing it would be useful. For example, how do I disable HTML minification on my builds, while maintaining CSS and JavaScript minification? I don’t see a description of that in the docs. When I looked through the closed issues on GitHub, there is &lt;a href="https://github.com/parcel-bundler/parcel/issues/2561" rel="noopener noreferrer"&gt;a workaround&lt;/a&gt; (though it’s not very convenient).&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;One last thing I’ll mention is a tool called &lt;a href="https://createapp.dev/parcel/no-library" rel="noopener noreferrer"&gt;Create App&lt;/a&gt;, which you can use to automatically produce configuration files for Parcel. It lets you select your JavaScript library, transpiler, linter, and so forth, and these will all be added to your package.json file, ready to be initialized.&lt;br&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%2Fcb8p1lgt5y3mghd3shhg.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%2Fcb8p1lgt5y3mghd3shhg.png" alt="Create App Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it for this Parcel tutorial for beginners. I hope you’ll be able to use this information to get up and running quickly with Parcel and use it on future projects. And if you’re new to app bundling, or have never tried it on any project, maybe this introduction will inspire you to give Parcel a try.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; where I post daily about Tech related things!&lt;br&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%2Fijinng8k7bf23v0o6gkj.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%2Fijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Squarespace Tutorial: Learn How to Build a Squarespace Website in 2022</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Mon, 31 Oct 2022 02:30:45 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/squarespace-tutorial-learn-how-to-build-a-squarespace-website-in-2022-4fkn</link>
      <guid>https://forem.com/rembertdesigns/squarespace-tutorial-learn-how-to-build-a-squarespace-website-in-2022-4fkn</guid>
      <description>&lt;p&gt;In this Squarespace tutorial, I’ll walk you through how to build a website on Squarespace, from start to finish.&lt;/p&gt;

&lt;p&gt;Compared to its competitors, Squarespace offers some of the most stylish website designs in the industry, along with a site builder made for business owners of all experience levels.&lt;/p&gt;

&lt;p&gt;The platform expands its functionality on a regular basis with user-friendly tools for social media marketing, online selling, and email marketing.&lt;/p&gt;

&lt;p&gt;Squarespace makes it simple to construct and launch a website without much design work at all.&lt;/p&gt;

&lt;p&gt;To begin, go to &lt;a href="https://www.squarespace.com/"&gt;the Squarespace website&lt;/a&gt; and click on the Get Started button. It’s located in several areas on the Squarespace homepage. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0mSPvwar--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8m51ruj96nc4ovsunu9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0mSPvwar--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8m51ruj96nc4ovsunu9x.png" alt="Squarespace Homepage" width="880" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Personalize your Squarespace Experience
&lt;/h2&gt;

&lt;p&gt;Initially, Squarespace asks you about your business and personal information to lead you in the right direction. For instance, someone making a fitness blog would be sent to website themes that cater to blogging, fitness, or other related designs. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ROslKpo7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/760vmi2o11acvouc910o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ROslKpo7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/760vmi2o11acvouc910o.png" alt="Squarespace Experience" width="880" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can skip this section, but we recommend browsing through it to locate the ideal designs and features.&lt;/p&gt;

&lt;p&gt;Choose what your site is about, such as fitness, restaurants, fashion, or travel.&lt;/p&gt;

&lt;p&gt;Click on the &lt;strong&gt;Next&lt;/strong&gt; button to proceed.&lt;/p&gt;

&lt;p&gt;On the next page, specify your top goals, like selling products or publishing a blog. Again, these questions are meant to present the right styles and tools when launching your website.&lt;/p&gt;

&lt;p&gt;Select &lt;strong&gt;Next&lt;/strong&gt; when you’re done.&lt;/p&gt;

&lt;p&gt;Tell Squarespace where you are in the site-building process. One of the main reasons for this step is just in case you need help transferring a site from another platform to Squarespace.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Finish&lt;/strong&gt; to proceed with the Squarespace tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Choose a Starting Design
&lt;/h2&gt;

&lt;p&gt;With your personalized details at the ready, Squarespace attempts to provide a website theme that comes close to what you may want for your business, portfolio, or band.&lt;/p&gt;

&lt;p&gt;For this Squarespace tutorial, I’ll go with an online store and blog theme. Therefore, I can filter based on those criteria.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NhHgHgNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dg7d7khenkqx23txc0gu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NhHgHgNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dg7d7khenkqx23txc0gu.png" alt="Squarespace Online Store" width="880" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scroll through the results to find designs that match your desired brand image. Try your best to get as close to the sought-after colors, fonts, and images. This way, you won’t have to customize as much in the future.&lt;/p&gt;

&lt;p&gt;After previewing some website themes, click on one to act as your primary design.&lt;/p&gt;

&lt;p&gt;Squarespace then asks you to sign in or create an account.&lt;/p&gt;

&lt;p&gt;You can continue with email or a social login like Facebook or Google.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Essentials
&lt;/h2&gt;

&lt;p&gt;The first steps before launching your site involve adding essentials like SEO elements and the site name.&lt;/p&gt;

&lt;p&gt;A popup appears to type in your Site Title. Complete this field and click on the &lt;strong&gt;Continue&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FCBk6ZJZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gs0hl7w6zhhg72gtpl8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FCBk6ZJZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gs0hl7w6zhhg72gtpl8f.png" alt="Squarespace Site Title" width="880" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What’s great about Squarespace themes is that they already turn much of your website into a functioning product, with images, headers, and demo menus.&lt;/p&gt;

&lt;p&gt;You’ll be redirected to the Squarespace editor, which displays your site design on one side, next to the feature list and settings.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y_HQZ9cM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8rvj0b4pwu44duqq3i7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y_HQZ9cM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8rvj0b4pwu44duqq3i7.png" alt="Squarespace Editor" width="880" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the &lt;strong&gt;Edit&lt;/strong&gt; button on the site preview.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FT9TY6RN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d8bn2r2dpnssi9807yk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FT9TY6RN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d8bn2r2dpnssi9807yk6.png" alt="Squarespace Fluid Engine" width="880" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A pop-up to show you the latest updates to Squarespace with Fluid Engine, you can watch a tutorial or skip over it.&lt;/p&gt;

&lt;p&gt;If you click on Pages, You’ll see a &lt;em&gt;gear&lt;/em&gt; icon to proceed to the basic settings.&lt;/p&gt;

&lt;p&gt;Click on that.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YM1pScUz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k2xyaijsi5vqprw7jp8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YM1pScUz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k2xyaijsi5vqprw7jp8s.png" alt="Squarespace Settings" width="670" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;Page Settings&lt;/em&gt; include tabs for &lt;em&gt;General Settings&lt;/em&gt;, &lt;em&gt;SEO&lt;/em&gt;, the &lt;em&gt;Social Image&lt;/em&gt;, and &lt;em&gt;Advanced settings&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Feel free to click through all of these to set your site’s identity.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UfOmESGv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h8yxplw9fvb6apncn8uu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UfOmESGv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h8yxplw9fvb6apncn8uu.png" alt="Squarespace Page Settings" width="880" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, the &lt;em&gt;Social Image&lt;/em&gt; tab only requires you to upload a quick image that gets used if a social site has trouble pulling an image from a page or post.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GKo0ednF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pejkvnfszzz958fjl6tq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GKo0ednF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pejkvnfszzz958fjl6tq.png" alt="Squarespace Social Image" width="880" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Edit the Header and Add Sections
&lt;/h2&gt;

&lt;p&gt;The visual Squarespace editor includes various buttons and links that appear when you scroll over certain sections of the page.&lt;/p&gt;

&lt;p&gt;A great place to start is the &lt;em&gt;Site Header&lt;/em&gt;. Scroll your cursor over the header area to show the &lt;strong&gt;Edit Site Header&lt;/strong&gt; button. Click that button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e7vOxqnD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f0vddv8j5pazntnr523o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e7vOxqnD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f0vddv8j5pazntnr523o.png" alt="Squarespace Site Header" width="880" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;Site Header&lt;/em&gt; editing tools include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Site Title and Logo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colors&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed Position&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed Header Style&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S7XpjZ7w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fm4fevz0jy49yao53wuh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S7XpjZ7w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fm4fevz0jy49yao53wuh.png" alt="Squarespace Site Header" width="836" height="1078"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each header setting has its own tools for you to turn on and off or adjust based on what needs to be completed.&lt;/p&gt;

&lt;p&gt;As an example, you may feel like changing the color scheme or adding a new font.&lt;/p&gt;

&lt;p&gt;Each modification you make immediately appears in the preview.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WlfGbNrb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/56qx2l34ec4xsjufduqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WlfGbNrb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/56qx2l34ec4xsjufduqv.png" alt="Squarespace Color Scheme" width="880" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adding a section takes place in the visual editor as well.&lt;/p&gt;

&lt;p&gt;Technically, each page on a Squarespace site is pieced together as multiple sections. You can click and drag sections to reorder them or click the &lt;strong&gt;Add Section&lt;/strong&gt; button near a section to place a new one underneath or above it.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H6D6GSUS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2vr40durv3kydvtssvus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H6D6GSUS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2vr40durv3kydvtssvus.png" alt="Squarespace Add Section" width="880" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should now see a popup box for adding sections.&lt;/p&gt;

&lt;p&gt;All sections are categorized into different collections, some of which include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Donations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Events&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Appointments&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reservations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Menus&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Charts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;plus much more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Select a collection to view the different designs and options for each one. For example, the &lt;em&gt;Events&lt;/em&gt; collection has three calendar formats with varying functionality.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U613kZRE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jw4hyayxzvkum5lzo427.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U613kZRE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jw4hyayxzvkum5lzo427.png" alt="Squarespace Events" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking on one of those sections drops it into the place you selected.&lt;/p&gt;

&lt;p&gt;Considering each section varies in its functionality, they all have different features.&lt;/p&gt;

&lt;p&gt;Click on the new section in the visual editor to modify its unique settings. The events section, for instance, has options for displaying events, products, and blog posts by pulling from your website or third-party services.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---DiCZR1r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9nxqbwqo8or90klnasy6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---DiCZR1r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9nxqbwqo8or90klnasy6.png" alt="Squarespace Events" width="880" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Editing Content on Your Pages
&lt;/h2&gt;

&lt;p&gt;Squarespace allows you to visit all pages of your website through the visual editor. It’s done by clicking through the preview window like you would a regular website or going to the Pages tab and clicking on the other pages outside of the homepage.&lt;/p&gt;

&lt;p&gt;To edit anything on a page, select the &lt;strong&gt;Edit&lt;/strong&gt; button on the visual editor and move your cursor around the page to see the editing option.&lt;/p&gt;

&lt;p&gt;Most of the time, clicking on an element like a paragraph box or an image lets you change something.&lt;/p&gt;

&lt;p&gt;In this Squarespace tutorial, we’ll click on a paragraph text box to edit some of the headings and sentences. As you can see, a simple text editor shows up with buttons for formatting, bolding text, and linking to other pages.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U1cEk3Qg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u5ha7lj9pv6dygf4yzy6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U1cEk3Qg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u5ha7lj9pv6dygf4yzy6.png" alt="Squarespace Editing" width="880" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Squarespace lets you make as many edits as you want before saving modifications.&lt;/p&gt;

&lt;p&gt;To move onto another part of your site, or configure other features, go to &lt;strong&gt;Done → Save&lt;/strong&gt; in the upper right-hand corner of the page.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Sgj5imqx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sae812p586w02gt6libj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Sgj5imqx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sae812p586w02gt6libj.png" alt="Squarespace Save" width="880" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Add Pages and Edit the Menu
&lt;/h2&gt;

&lt;p&gt;With most Squarespace themes, a navigational menu is added by default.&lt;/p&gt;

&lt;p&gt;You’re able to add additional pages, edit the current ones, and delete demo content by clicking on the &lt;em&gt;Pages&lt;/em&gt; tab.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fOwzeQu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6zxmngonya2m7c98owfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fOwzeQu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6zxmngonya2m7c98owfh.png" alt="Squarespace Navigational Menu" width="880" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each page in your main navigation is listed under the &lt;em&gt;Main Navigation&lt;/em&gt; header.&lt;/p&gt;

&lt;p&gt;You might also have unlinked pages below that, serving as pages but not included in the main menu.&lt;/p&gt;

&lt;p&gt;Every time you add a page or change the name of a menu item it renders the new item in the website preview.&lt;/p&gt;

&lt;p&gt;To make a new page, select the “+” button above the current list of menu items.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vVOOleKB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g07d9smq4t7vk8v4o211.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vVOOleKB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g07d9smq4t7vk8v4o211.png" alt="Squarespace New Pages" width="880" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Publish your Squarespace Website
&lt;/h2&gt;

&lt;p&gt;At some point, you’ll decide that the website has enough content and is ready for the public’s eye.&lt;/p&gt;

&lt;p&gt;All Squarespace websites start as 14-Day free trials, after which you’ll be prompted to pay for a premium plan to launch the website.&lt;/p&gt;

&lt;p&gt;To begin this process, click on the &lt;strong&gt;Settings&lt;/strong&gt; tab.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--95s_E83C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vpfvaoq5xonm1avgglte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--95s_E83C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vpfvaoq5xonm1avgglte.png" alt="Squarespace Settings" width="880" height="1341"&gt;&lt;/a&gt;&lt;br&gt;
Next to Site Availability, you should see the words &lt;em&gt;“Private"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Click on the &lt;strong&gt;Site Availability&lt;/strong&gt; button to change it to &lt;em&gt;Public&lt;/em&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qqA2HPk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eajan6zcpmtt1arjshne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qqA2HPk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eajan6zcpmtt1arjshne.png" alt="Squarespace Site Availability" width="880" height="1395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can still pay for a Squarespace subscription and keep your site private.&lt;/p&gt;

&lt;p&gt;In fact, there are three &lt;em&gt;Site Availability&lt;/em&gt; settings: &lt;em&gt;Public&lt;/em&gt;, &lt;em&gt;Password Protected&lt;/em&gt;, and &lt;em&gt;Private&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To officially launch your website and make it public (and gain full control of all other features) select the &lt;strong&gt;Upgrade to Publish&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BGgMO1K5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pt1zvkko3ri981el06aa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BGgMO1K5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pt1zvkko3ri981el06aa.png" alt="Squarespace Site Availability" width="880" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This brings you to a page to decide on a payment plan. You can opt to pay monthly or annually and decide on a &lt;em&gt;Personal&lt;/em&gt;, &lt;em&gt;Business&lt;/em&gt;, &lt;em&gt;Commerce Basic&lt;/em&gt;, or &lt;em&gt;Commerce Advanced plan&lt;/em&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X4pBeW-4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6q8obj8wixeedemh4k88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X4pBeW-4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6q8obj8wixeedemh4k88.png" alt="Squarespace Plans" width="880" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill in your personal and payment information to activate a plan and get it running.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iVmy5-91--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zglqxx5od7av85syh1jd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iVmy5-91--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zglqxx5od7av85syh1jd.png" alt="Squarespace Payment Plan" width="880" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the payment is processed, you’re the proud owner of a live Squarespace website!&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Activate a Domain Name
&lt;/h2&gt;

&lt;p&gt;A professional domain name is a next step to making your website official. Luckily, Squarespace offers a domain name buying and transfer tool right in the dashboard.&lt;/p&gt;

&lt;p&gt;Find and select the &lt;strong&gt;Domain&lt;/strong&gt; button to get started.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eLrJKF73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btcxywxyhkphcuf3pzv0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eLrJKF73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btcxywxyhkphcuf3pzv0.png" alt="Squarespace Domains" width="880" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have a few choices when making a domain name for your website. A built-in Squarespace domain is already provided as a space for you to host your website, test out new designs, and play around with the Squarespace interface without having to pay for anything.&lt;/p&gt;

&lt;p&gt;The other options include the &lt;strong&gt;Get a Domain&lt;/strong&gt; button and the option to &lt;strong&gt;Use A Domain I Own&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--15qVFT63--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s60pcahqbi2aighoihd3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--15qVFT63--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s60pcahqbi2aighoihd3.png" alt="Squarespace Domains" width="880" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose &lt;strong&gt;Use A Domain I Own&lt;/strong&gt; to walk through the process of transferring over a domain from another provider.&lt;/p&gt;

&lt;p&gt;When going through the &lt;strong&gt;Get a Domain&lt;/strong&gt; option, you’ll see a list of suggested domains.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--glWqLPck--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/usr9n47o6w6km27xco5o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--glWqLPck--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/usr9n47o6w6km27xco5o.png" alt="Squarespace Domains" width="880" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select a domain you like and click on the &lt;strong&gt;Checkout&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RWiKcBdg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drv94nj8h5bfzt2u8tjb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RWiKcBdg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drv94nj8h5bfzt2u8tjb.png" alt="Squarespace Domain Checkout" width="880" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Much like upgrading your website to a paid account, Squarespace asks for payment information and automatically applies the domain name to your active website.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Design Aspects of Your Squarespace Website
&lt;/h2&gt;

&lt;p&gt;The &lt;em&gt;Design&lt;/em&gt; module in Squarespace has a myriad of tools for adjusting colors, sizes, and fonts.&lt;/p&gt;

&lt;p&gt;To explore these features, click on the &lt;strong&gt;Design&lt;/strong&gt; tab.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dP9jtfDK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/161caura31hyhtv5oijx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dP9jtfDK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/161caura31hyhtv5oijx.png" alt="Squarespace Design Tab" width="880" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What can you expect to find in the &lt;em&gt;Design&lt;/em&gt; after you click on the &lt;strong&gt;Site Styles&lt;/strong&gt; module?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fonts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colors&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Animations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spacing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buttons&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image blocks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser icons&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lock screens&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkout pages&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I recommend clicking on each of these tabs to see what editing options are available.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I68CQyls--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3qsh9uvadfc3f6gl826.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I68CQyls--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3qsh9uvadfc3f6gl826.png" alt="Squarespace Site Styles" width="880" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the most part, a design edit renders in the live website preview.&lt;/p&gt;

&lt;p&gt;As an example, modifying the default font family immediately swaps out the previous fonts for the new ones.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XOUh-ucG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1uchq6zatqmipomzpii4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XOUh-ucG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1uchq6zatqmipomzpii4.png" alt="Squarespace Design Fonts" width="880" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All design tools include several settings, allowing you to get to a fairly unique layout.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Add an E-commerce Store to Your Website
&lt;/h2&gt;

&lt;p&gt;Although not everyone will need an online store, Squarespace offers a store builder tool to incorporate online selling within any style of the website.&lt;/p&gt;

&lt;p&gt;Some themes are better than others, but in general, it’s possible to add a few products to even the simplest of business themes.&lt;/p&gt;

&lt;p&gt;If you’re interested in adding a store, where customers come to your site and purchase products, click on the &lt;strong&gt;Commerce&lt;/strong&gt; tab.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fIjOZQ__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsyd9kk613klkb7wtvwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fIjOZQ__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsyd9kk613klkb7wtvwj.png" alt="Squarespace Online Store" width="880" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The store setup process takes a handful of steps. A prompt with 4 steps will pop up after clicking the tab, just follow the directions.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nNTDxbtb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wlklltjogqy3fdwx7dhb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nNTDxbtb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wlklltjogqy3fdwx7dhb.png" alt="Squarespace Online Store Setup" width="880" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first course of action for a store is to add products for selling.&lt;/p&gt;

&lt;p&gt;Select the &lt;strong&gt;Products&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h3a-ye2F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szoj17w0ghxom5lc2mj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h3a-ye2F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szoj17w0ghxom5lc2mj9.png" alt="Squarespace Products" width="880" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At some point, Squarespace requests that you choose a store layout. Themes vary but usually offer at least two layouts.&lt;/p&gt;

&lt;p&gt;Click on the store layout of your choice.&lt;/p&gt;

&lt;p&gt;The majority of store-oriented themes have demo products already included with the design. Therefore, you can use those to either edit for future products or to get an idea of what products should look like on your website.&lt;/p&gt;

&lt;p&gt;Choose from the following options to specify which type of product you’d like to sell:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Physical&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Digital&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Membership&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gift Card&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduling&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The type of product dictates the product settings available and how those sales get delivered to customers.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XrSjnZgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o829d1i2clj5amtkb37w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XrSjnZgn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o829d1i2clj5amtkb37w.png" alt="Squarespace Products" width="880" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next section in this Squarespace tutorial is for the product page itself, showing a wide range of fields for uploading product images, setting the price, and configuring the inventory. Keep scrolling down on the product page to ensure you fill in all the important information.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j-xycyqr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kc00shj77ci7j4fy81y8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j-xycyqr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kc00shj77ci7j4fy81y8.png" alt="Squarespace Products" width="880" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The very bottom of the product page asks if you’d like to add custom content or extra functionality to the product, such as custom forms or subscription features and marketing.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Save&lt;/strong&gt; when you’re satisfied with the design and content of your product page.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SBsSGSrv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wpz7i0sdtkg7dlhpez5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SBsSGSrv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wpz7i0sdtkg7dlhpez5z.png" alt="Squarespace Products Page" width="880" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Add Payments to Your Online Store
&lt;/h2&gt;

&lt;p&gt;Click the &lt;strong&gt;Payments&lt;/strong&gt; button to incorporate a payment gateway that processes all sales.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fQ5e2fam--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qx93raz4v94hem92ft84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fQ5e2fam--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qx93raz4v94hem92ft84.png" alt="Squarespace Payments" width="880" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Squarespace supports several payment gateways, including &lt;a href="https://stripe.com/"&gt;Stripe&lt;/a&gt;, &lt;a href="https://www.paypal.com/us/home"&gt;PayPal Business&lt;/a&gt;, and &lt;a href="https://squareup.com/us/en"&gt;Square&lt;/a&gt; (for US point of sale transactions).&lt;/p&gt;

&lt;p&gt;To move forward with the Squarespace tutorial, click on the one you’d like to use and walk through the steps to link your PayPal, Stripe, or Square account to the website.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m0ipmIRb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4qzr8ifu433tn64hcefc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m0ipmIRb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4qzr8ifu433tn64hcefc.png" alt="Squarespace Payments" width="880" height="984"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Shipping Requirements
&lt;/h2&gt;

&lt;p&gt;Click on the &lt;strong&gt;Fulfillment&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bHm67aci--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ltx9ahm2hcc54v9w7lkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bHm67aci--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ltx9ahm2hcc54v9w7lkx.png" alt="Squarespace Shipping" width="880" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Decide shipping rates on this page.&lt;/p&gt;

&lt;p&gt;You can choose a flat rate, ship products based on weight, or have the carriers calculate pricing for you.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rkdQaNtQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ulnrte10lakq9091kj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rkdQaNtQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ulnrte10lakq9091kj4.png" alt="Squarespace Fulfillment" width="880" height="930"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All shipping methods and rates appear under your list of shipping options, along with the regions in which these shipping methods are activated.&lt;/p&gt;

&lt;p&gt;Earlier in this post, I have a complete breakdown of Squarespace pricing. For most of the Commerce features to work, you must turn on a &lt;em&gt;Business&lt;/em&gt;, &lt;em&gt;Commerce Basic&lt;/em&gt;, or &lt;em&gt;Commerce Advanced&lt;/em&gt; plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. View Your Published Squarespace Website
&lt;/h2&gt;

&lt;p&gt;A &lt;em&gt;phone&lt;/em&gt; icon is located in the upper right-hand corner of the editor. You can click on that to see a mobile preview of the site.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0ismoo2F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i0f15ng2ihtjwb7xn604.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ismoo2F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i0f15ng2ihtjwb7xn604.png" alt="Squarespace Mobile View" width="880" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The site simply snaps all content into place, offering a responsive interface for smaller devices.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GfKfcsrJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gevt7uit4okiic1en91i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GfKfcsrJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gevt7uit4okiic1en91i.png" alt="Squarespace Mobile View" width="862" height="1448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To view your website in full, click the &lt;em&gt;arrow&lt;/em&gt; button in the upper right-hand corner.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kaSX04qs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mnex9vtm7nkxzrd73ce1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kaSX04qs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mnex9vtm7nkxzrd73ce1.png" alt="Squarespace Full Website" width="880" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This redirects you to the live website with its domain name active. You can now test and view all aspects of your Squarespace website.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jsbo8GpS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m668fdg9nyccvvg11fnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jsbo8GpS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m668fdg9nyccvvg11fnd.png" alt="Squarespace Live Website" width="880" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Squarespace provides the tools and design prowess to make it seem like any beginner has the knowledge to make a beautiful website.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt; where I post daily about Tech related things!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="880" height="247"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>design</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Using Breadcrumbs in Web Design: Best Practices</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Thu, 06 Oct 2022 16:43:37 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/using-breadcrumbs-in-web-design-best-practices-28dh</link>
      <guid>https://forem.com/rembertdesigns/using-breadcrumbs-in-web-design-best-practices-28dh</guid>
      <description>&lt;p&gt;If you’ve spent any time in web design and development, then you pretty much know how important it is to create a website for your visitors that looks great, has stellar content, and is easy to navigate.&lt;/p&gt;

&lt;p&gt;Easier said than done, right?&lt;/p&gt;

&lt;p&gt;While the definition of good design will differentiate among designers and users, navigation is straightforward. You either find your way easily on the web platform or get lost somewhere. Or, you spend minutes trying to find a page or info. &lt;/p&gt;

&lt;p&gt;To tackle these issues, quite a few designers opt to use breadcrumb trails as they enable their users to track their path on a website. This helps them make better sense of where they are currently on the website, improving the UX in the process.&lt;/p&gt;

&lt;p&gt;That being said, in this blog post, I will talk about breadcrumb navigation, different breadcrumb types, the advantages of this navigation system, best uses, and best practices for breadcrumb navigation.&lt;/p&gt;

&lt;p&gt;So, without further ado, let’s dive into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Breadcrumb Trails in Web Design – Why?
&lt;/h2&gt;

&lt;p&gt;As you’ve probably guessed from the intro, breadcrumbs are a category of secondary navigation methods aiding site visitors in, well, navigation.&lt;/p&gt;

&lt;p&gt;They identify visitor locations within the site hierarchy. This is a handy UX feature that helps with improving user navigation across the website, helping them find the sites they are looking for faster.&lt;/p&gt;

&lt;p&gt;They basically show the site’s page hierarchy and enable the user to go to higher-level pages with ease. It’s a really great feature when in &lt;a href="https://www.rembertdesigns.co/"&gt;eCommerce website development&lt;/a&gt;, where you can simply browse different product types with a few clicks without having to go back and forth on the site, trying to find the goods you want to add to your cart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trail Types
&lt;/h2&gt;

&lt;p&gt;In essence, there are three different breadcrumb trail types that function differently.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Location Breadcrumbs
&lt;/h3&gt;

&lt;p&gt;These include the user’s location in the site hierarchy. These location-based systems are great for sites that sport multi-level navigation as they help the user get to higher-level pages from their current location easier. It’s a good choice when a site has a lot of deeper-level pages, like product pages, making it an &lt;a href="https://www.rembertdesigns.co/"&gt;ideal solution for eCommerce platforms&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Path Breadcrumbs
&lt;/h3&gt;

&lt;p&gt;These systems display all the pages users have visited in an orderly fashion, starting with the first page and ending with the current one they are viewing. This type enables to user to get back to previous pages faster than by clicking the “back” button. &lt;/p&gt;

&lt;h3&gt;
  
  
  Attribute Breadcrumbs
&lt;/h3&gt;

&lt;p&gt;These systems display the attributes of the pages the users are viewing. Attribute systems are also often used by eCommerce platforms, especially when visitors can use product attributes to filter their search.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DStR0rab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i67vjrm987mlnmgeqy7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DStR0rab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i67vjrm987mlnmgeqy7x.png" alt="Attribute Breadcrumbs Navigation" width="810" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Breadcrumb Trail Benefits
&lt;/h2&gt;

&lt;p&gt;Webmasters will usually use breadcrumb trails to improve UX, and as such, it can come with a heap of benefits if done right. To give you a better idea, here are only some of the benefits that might come from implementing this navigation system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve Site Findability
&lt;/h3&gt;

&lt;p&gt;Let’s face it, users don’t really want to spend a lot of time looking for anything. They want to find the needed info as fast as possible. When findability on a website is solid, the user experience becomes a lot better. This is especially true in the case of eCommerce sites. When customers have a hard time finding what they want, they will most probably end up visiting another site and buying the goods there. If they only need a few clicks to find what they’re looking for, your conversion rates improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reduce Bounce Rates
&lt;/h3&gt;

&lt;p&gt;This is pretty similar to the case above. When your visitors land on your website, they want to find the product they’re interested in as fast as possible. And, what happens when they can’t find the goods? Well, they either try to find the product by using your navigation system and product category pages or leave your website and look for another one.&lt;/p&gt;

&lt;p&gt;Sadly, the latter scenario happens more often than the first one.&lt;/p&gt;

&lt;p&gt;However, with implementing breadcrumb navigation, visitors will be encouraged to visit the category page, look at the preferred product, and view similar products. This alone can dramatically reduce bounce rates on the website and potentially help improve conversion rates.&lt;/p&gt;

&lt;p&gt;And every site owner knows that low bounce rates and high conversion rates are two of the key performance metrics they want to see on their analytics pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reduce User Frustration
&lt;/h3&gt;

&lt;p&gt;At one point or another, all of us have been there. Trying to find a page, a product, with no luck. No matter how often we visit the website at hand, due to lousy navigation, the pages remain elusive.&lt;/p&gt;

&lt;p&gt;It’s frustrating. It really is. As a matter of fact, around 94% of users say that good navigation is their top UX feature? On the other hand, poor navigation is one of the main sources of frustration.&lt;/p&gt;

&lt;p&gt;On that end, breadcrumbs can help your visitors know where they are on your site, evading frustration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reduce User Action Numbers
&lt;/h3&gt;

&lt;p&gt;As I’ve already discussed, the breadcrumb system allows visitors to reach high-level pages faster. When looking at an eCommerce website, this can be a huge advantage, especially when users are comparing products, prices, etc. When they want to return to the category page to view more, they don’t have to hit “back” over and over again. Instead, they can get back almost instantly by using the breadcrumbs.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use Breadcrumbs?
&lt;/h2&gt;

&lt;p&gt;It goes without saying, that those sites with an intricate and complex hierarchy can highly benefit from using breadcrumb navigation. For eCommerce sites with several product pages and filters, these systems can help a great deal with creating a better UX.&lt;/p&gt;

&lt;p&gt;On the same note, these systems might not be utterly necessary with sites with a flat hierarchy. As each page is only a few clicks away from the other, users will intuitively figure out where they are and where they want to go.&lt;/p&gt;

&lt;p&gt;Lastly, it might also not be the best move in the case of websites where the pages belong to several categories. Simply put, including all the categories in the breadcrumb trail can be confusing both for the site owner and the visitor, defeating their purpose altogether.&lt;/p&gt;

&lt;p&gt;Figuring out whether you should use one shouldn’t be a hassle. Reaching out to your web design agency is a good way to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;p&gt;Before entrusting a &lt;a href="https://www.rembertdesigns.co/"&gt;web design and development agency&lt;/a&gt; with creating a breadcrumb trail for your site, there are a couple of things you should keep in mind.&lt;/p&gt;

&lt;p&gt;For starters, you need a reliable team who know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The proper way to use separators between links&lt;/strong&gt;. You can use a few different methods for separating links in the breadcrumb trail. Make sure to partner with a team of experts who know how to choose the best separation method based on the visual appeal of your website and the breadcrumb type they’re using.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They know how big the trail should be&lt;/strong&gt;: Your breadcrumb trail is still secondary navigation, and it shouldn’t be more prominent than your primary system. Good webmasters know this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best placement&lt;/strong&gt;: Designers know where should the breadcrumb trail be on your site.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applying the best hyperlinking practices&lt;/strong&gt;: Should you link the last item in the trail? A good expert knows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visibility&lt;/strong&gt;: The trail needs to be visible enough to stand out but not too big to overshadow the main navigation system. Hire a designer who works according to the latest design principles to get the best out of breadcrumbs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are only just a few key points you should consider. There’s more, and your agency will probably know every detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measuring Effectiveness
&lt;/h2&gt;

&lt;p&gt;The best way to see whether the breadcrumbs are paying off is by tracking user interactions.&lt;/p&gt;

&lt;p&gt;There are a handful of great analysis tools that can help you track user behavior, with heat mapping services and &lt;a href="https://tagmanager.google.com/#/admin/accounts/create"&gt;Google Tag Manager&lt;/a&gt; that monitors clicking activity.&lt;/p&gt;

&lt;p&gt;These tools can help you figure out just how effective your breadcrumbs are. If there’s no user activity with the trail system, it might mean that your agency should redesign it to make it more visible or to use another solution.&lt;/p&gt;

&lt;p&gt;Work closely with your design agency to track any changes, to test solutions and tools to find the best method your visitors will love and use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting the Most Out of Your Secondary Navigation
&lt;/h2&gt;

&lt;p&gt;Using a handy breadcrumb system can be a great way to improve user experience on your website and to help boost conversion rates. They have a myriad of advantages. Still, you should know that they don’t work for every website. &lt;/p&gt;

&lt;p&gt;If you are thinking about implementing them, discuss the idea with your design agency first. They will be able to help you either with finding the best breadcrumb trail system for your site or coming up with another solution that will yield even better results.&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; where I post daily about Tech related things!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="880" height="247"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>design</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What Do Customers &amp; Consumers Want to See on Your Website?</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Mon, 03 Oct 2022 01:42:12 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/what-do-customers-consumers-want-to-see-on-your-website-3g0b</link>
      <guid>https://forem.com/rembertdesigns/what-do-customers-consumers-want-to-see-on-your-website-3g0b</guid>
      <description>&lt;p&gt;A website is an essential way of reaching new audiences and engaging with potential buyers. Often, the website is responsible for making the first impression of your brand. &lt;/p&gt;

&lt;p&gt;Back in the day, actually having an online presence was enough to boost attention. Nowadays, having a site alone isn’t really enough to gain more customers. To boost the number of potential clients and buyers, you also need a well-designed and high-quality site. Otherwise, you are risking losing your leads.&lt;/p&gt;

&lt;p&gt;Website design is a massive player in this aspect for several reasons. First of all, it impacts your platform’s ranking ability on search engines. Secondly, the design of your site can influence the user, prompting them to stay for longer or to look elsewhere only seconds after landing on the main page.&lt;/p&gt;

&lt;p&gt;Finally, &lt;a href="https://www.rembertdesigns.co/links" rel="noopener noreferrer"&gt;web design&lt;/a&gt; also influences the number of prospects and leads you are able to convert.&lt;/p&gt;

&lt;p&gt;Solid website design usually starts with knowing that is the main action you want your visitors to take. &lt;/p&gt;

&lt;p&gt;To see what constitutes a good design, marketers and business owners should look at the data regarding user behavior and trends. Knowing what users want from a company website can help every business a great deal in coming up with converting designs.&lt;/p&gt;

&lt;p&gt;As such, here are the latest trends below, compiled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact Information on a Website is Critical.
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://www.hubspot.com" rel="noopener noreferrer"&gt;Hubspot’s&lt;/a&gt; latest findings, around 62% of the respondents polled in the US, having a comprehensive contact us page with all the necessary info is vital.&lt;/p&gt;

&lt;p&gt;This is rather simple, yet still, several companies fail to include it on their website. From a certain point of view, a good &lt;a href="https://www.rembertdesigns.co/contact" rel="noopener noreferrer"&gt;Contact Us&lt;/a&gt; page is one of the most important elements you can include on a business website.&lt;/p&gt;

&lt;p&gt;Including an email address, a physical address, and a phone number can all help the people who are looking for ways to contact you for sales inquiries. As such, highlighting the page in the header of other easily findable locations makes perfect sense. &lt;/p&gt;

&lt;p&gt;On that end, clickable contact CTAs (like “email us”) that lead to your contact form or email clients can also be a great option. As a matter of fact, having embedded “Contact Us” forms placed throughout your site is also a good idea. This way, your visitors don’t need to start looking for your contact info to reach out to you. &lt;/p&gt;

&lt;h2&gt;
  
  
  Customer Testimonials Can Help a Website Improve and Grow
&lt;/h2&gt;

&lt;p&gt;According to the same poll, 20% of respondents, testimonials can greatly enhance trust in their prospects. &lt;/p&gt;

&lt;p&gt;Your website is an outstanding opportunity to build trust through showcasing your track record, knowledge, expertise, and satisfied customers. When you get a testimonial, make sure to ask for your customers’ or clients’ permission and use their actual names.&lt;/p&gt;

&lt;p&gt;These are real endorsements from real people that mean a lot to visitors. More than fictional quotes and anonymous testimonials.&lt;/p&gt;

&lt;p&gt;Also, if you have pages for case studies, make sure that they follow a concise format, and include an easily readable template that explains the customer’s problems and how the company managed to solve them. Also, include the process and, of course, the results.&lt;br&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%2Fkvukj7rcy4r5uh0b9u2g.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%2Fkvukj7rcy4r5uh0b9u2g.png" alt="Customer Testimonial"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Always Blog
&lt;/h2&gt;

&lt;p&gt;Online marketing needs good content, no matter which channels we are talking about. Content is still king, and a quality blog section is an outstanding way to distribute high-quality content that is related to your business. &lt;/p&gt;

&lt;p&gt;On that end, the Hubspot survey shows that around 19% of people believe the blog section is the most important segment of a business site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/recent-projects/blogs" rel="noopener noreferrer"&gt;Blogs&lt;/a&gt; can help you with your SEO efforts, driving you more traffic with the right keywords, increasing brand awareness, and potentially converting leads and converts via valuable and educational content. &lt;/p&gt;

&lt;h2&gt;
  
  
  Add Newsletter Sign-up Options
&lt;/h2&gt;

&lt;p&gt;Around 10% of the polled people state that having a newsletter sign-up button is a desirable feature on business websites.&lt;/p&gt;

&lt;p&gt;This way, you offer your visitors an outstanding opportunity to keep being up-to-date with your business. It’s also a great way to keep brand awareness high and to increase brand loyalty as well.&lt;/p&gt;

&lt;p&gt;Apart from sharing basic information about your company, you can also use your newsletter to launch special promotions and build your email list simultaneously. As long as the newsletter content is valuable, your prospects and clients will respond to it positively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Your Social Media Icons on Your Website
&lt;/h2&gt;

&lt;p&gt;These small icons can increase traffic to your social pages. And according to 30% of the respondents, these are highly important aspects of a business website.&lt;/p&gt;

&lt;p&gt;When a website manages to drive significant traffic, it’s also crucial to link to social channels so prospects can follow businesses there as well.&lt;/p&gt;

&lt;p&gt;Social media pages are great tools to present a sharper picture regarding brand image and vision, and visitors can even get a better idea about what your business is really about. Also, most people regularly use their social media meaning they will see your business channels as well.&lt;/p&gt;

&lt;p&gt;When it comes to social icons, make sure to include a few of them, especially those that you regularly update with valuable content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Geographic Details to Enhance Local SEO
&lt;/h2&gt;

&lt;p&gt;As a large chunk of online searches revolves around looking for and finding local information, businesses should be optimized for local search. As a matter of fact, Hubspot’s research shows that a company’s actual brick and mortar location is a key website component in 26% of cases.&lt;/p&gt;

&lt;p&gt;Even though COVID-19 managed to prioritize online shopping, offline, physical experiences are still important. As such, you should focus on getting local SEO service, so you ensure showing up in the search results when prospects conduct searches in your area.&lt;/p&gt;

&lt;p&gt;When you have one location, the process is pretty straightforward. However, when there are more cities involved, creating several landing pages for each location can make navigation easier for your prospects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Chatbot
&lt;/h2&gt;

&lt;p&gt;Data indicates that live chat is an important element of website design, with 28% of the respondents highlighting it as a necessary site feature.&lt;/p&gt;

&lt;p&gt;While it’s true that chatbots won’t be replacing people any time soon, they are still valuable for those users who don’t like to email or call or just want to ask something simple. &lt;/p&gt;

&lt;p&gt;Simply put, some customers value instant feedback, and installing a live chat feature on the website can be an outstanding way to keep them engaged.&lt;/p&gt;

&lt;p&gt;Chatbots are easy to use and install and as the tech of artificial intelligence improves, so are chatbots becoming more and more valuable with better overall functionality.&lt;/p&gt;

&lt;p&gt;On the other hand, a lot of consumers find it helpful when they get their questions answered via live chat during a purchase, and the majority of them will also return to such a website and purchase again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don’t Skip the “About Us” Page
&lt;/h2&gt;

&lt;p&gt;Sharing the brand’s story along with highlighting the core company values is a critical element of designing a website as it can play a crucial part in determining a brand’s long-term success. As a matter of fact, around 31% of the respondents say that it’s the most important element of a website, even more so than blogs, live chat, and case studies.&lt;/p&gt;

&lt;p&gt;It makes sense. If people intend to do business with you, they want to know who you are. An “About Us” page matters a lot but keep it brief since your visitors probably won’t spend too much time reading it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Original Product Images and Videos
&lt;/h2&gt;

&lt;p&gt;Customers are incredibly good at differentiating stock photos from original images, especially in the case of products. &lt;/p&gt;

&lt;p&gt;Authentic photos and videos from behind the scenes can help in this area a great deal.&lt;/p&gt;

&lt;p&gt;For example, including a few before and after photos following your service is a great way to build trust. In cases where you’re area of expertise is something less tangible, you can always showcase your staff and highlight your core values through powerful visuals. &lt;/p&gt;

&lt;p&gt;On that end, videos where you explain your brand’s mission and vision can create powerful opportunities for trust-building.&lt;br&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%2Fodkens2bkh0mnpgdu87i.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%2Fodkens2bkh0mnpgdu87i.png" alt="About Us Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Don’t Neglect the Numbers
&lt;/h2&gt;

&lt;p&gt;While these few design elements are crucial for success, you should also consider other design integrations that align with your brand and industry needs. &lt;/p&gt;

&lt;p&gt;On that end, a good homepage is an understandable must, along with intuitive site navigation, mobile-friendliness, readability, and accessibility.&lt;/p&gt;

&lt;p&gt;Lastly, analytics are also crucial for success. Your metrics can help you determine the current performance stats of your website and shows your highest-ranking pages. As such, metrics can help you a great deal with tweaking existing designs to better meet user requirements.&lt;/p&gt;

&lt;p&gt;And at the end of the day, a lot of it boils down to continuous testing. Only with regular testing can you meet and potentially exceed your visitor’s expectations. &lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; where I post daily about Tech related things!&lt;br&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%2Fijinng8k7bf23v0o6gkj.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%2Fijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>design</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What Does 'This' Mean in JavaScript? The Keyword Explained</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Thu, 22 Sep 2022 21:03:27 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/what-does-this-mean-in-javascript-the-keyword-explained-4paa</link>
      <guid>https://forem.com/rembertdesigns/what-does-this-mean-in-javascript-the-keyword-explained-4paa</guid>
      <description>&lt;p&gt;While working with JavaScript, you’ll inevitably come across the &lt;code&gt;this&lt;/code&gt; keyword. As a concept, it can be quite tricky to grasp! Normally &lt;code&gt;this&lt;/code&gt; refers to the object that &lt;strong&gt;owns&lt;/strong&gt; the method. However, its meaning is entirely different — depending on how the function is called.&lt;/p&gt;

&lt;p&gt;In this article, we’ll be looking at &lt;code&gt;this&lt;/code&gt; in detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Objects are the basic building blocks of JavaScript! &lt;em&gt;And the &lt;code&gt;this&lt;/code&gt; keyword will &lt;strong&gt;always&lt;/strong&gt; refer to an object&lt;/em&gt;. You can check its current value at every line of code execution. &lt;strong&gt;The value of &lt;code&gt;this&lt;/code&gt; is determined based on the code’s **execution context&lt;/strong&gt;.**&lt;/p&gt;

&lt;h3&gt;
  
  
  Execution Context
&lt;/h3&gt;

&lt;p&gt;JavaScript code is read and executed line by line. The environment (or scope), of the line currently being executed, is known as &lt;strong&gt;Execution Context&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Behind the scenes, JavaScript runtime is maintaining a stack of these execution contexts and the context present at the top of this stack — is the one currently being executed.&lt;/p&gt;

&lt;p&gt;The object that &lt;code&gt;this&lt;/code&gt; refers to changes every time the execution context is changed.&lt;/p&gt;

&lt;p&gt;This is why &lt;code&gt;this&lt;/code&gt; can be difficult to understand! Let’s look at &lt;code&gt;this&lt;/code&gt; in a number of different contexts — so we can learn how it works!&lt;/p&gt;

&lt;h2&gt;
  
  
  “this” in Global Scope
&lt;/h2&gt;

&lt;p&gt;If there is no current object, &lt;code&gt;this&lt;/code&gt; refers to the global object. Within our browser that happens to be the &lt;code&gt;window&lt;/code&gt; object. It’s the top-level object which represents the document.&lt;/p&gt;

&lt;p&gt;Let’s test to confirm:&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;function&lt;/span&gt; &lt;span class="nx"&gt;testThis&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&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="k"&gt;this&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt; 

&lt;span class="nx"&gt;testThis&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="c1"&gt;// returns true&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="k"&gt;this&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="c1"&gt;// returns true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  “this” when calling Function
&lt;/h2&gt;

&lt;p&gt;The value of &lt;code&gt;this&lt;/code&gt; remains as the global object if you’re calling a function:&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="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;check&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi! I'm the window object&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;thisFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;alert&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;check&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Hi! I'm the window object&lt;/span&gt;
    &lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&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="c1"&gt;// true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;thisFunction&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  “this” in Methods
&lt;/h3&gt;

&lt;p&gt;When we call a function as a method of an object, &lt;code&gt;this&lt;/code&gt; refers to the object, which is then known as the receiver of the function call.&lt;/p&gt;

&lt;p&gt;In the following example, the method &lt;code&gt;quote&lt;/code&gt; is inside an object called &lt;code&gt;author&lt;/code&gt;. The &lt;code&gt;quotes‘&lt;/code&gt; &lt;code&gt;this&lt;/code&gt; value refers to &lt;code&gt;author&lt;/code&gt; itself. So the &lt;code&gt;author&lt;/code&gt; object will receive the &lt;code&gt;quote&lt;/code&gt; method call:&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;author&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Oscar Wilde&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&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;`Be yourself. Everyone else is already taken. - &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;name&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;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  “this” with call() and apply()
&lt;/h2&gt;

&lt;p&gt;A function’s &lt;code&gt;this&lt;/code&gt; value is set implicitly, however, we can also call a function with an explicit &lt;code&gt;this&lt;/code&gt; argument with &lt;code&gt;call()&lt;/code&gt; and &lt;code&gt;apply()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Essentially, &lt;code&gt;call()&lt;/code&gt; and &lt;code&gt;apply()&lt;/code&gt; run JavaScript functions as if they were methods of another object.&lt;/p&gt;

&lt;p&gt;Let’s see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;testThis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;type&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;test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'm the &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;!&lt;/span&gt;&lt;span class="dl"&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;let&lt;/span&gt; &lt;span class="nx"&gt;firstObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="nx"&gt;testThis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firstObject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firstObject&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&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="nx"&gt;firstObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// I'm the firstObject&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;secondObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="nx"&gt;testThis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;secondObject&lt;/span&gt;&lt;span class="p"&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;secondObject&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&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="nx"&gt;secondObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// I'm the secondObject&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The only difference is that &lt;code&gt;call()&lt;/code&gt; expects a discrete number of parameters while &lt;code&gt;apply()&lt;/code&gt; can be passed an array of parameters.&lt;/p&gt;

&lt;p&gt;Note: If you’re using &lt;code&gt;call&lt;/code&gt; or &lt;code&gt;apply&lt;/code&gt; outside of &lt;strong&gt;strict mode&lt;/strong&gt;, then passing &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;undefined&lt;/code&gt; using &lt;code&gt;call&lt;/code&gt; or &lt;code&gt;apply&lt;/code&gt; will be ignored by the JavaScript engine. This is one of the reasons why it is usually suggested to always write code in strict mode!&lt;/p&gt;

&lt;h2&gt;
  
  
  “this” with bind()
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;bind()&lt;/code&gt; method allows us to &lt;strong&gt;permanently&lt;/strong&gt; tie a &lt;code&gt;this&lt;/code&gt; argument to a value. So in the below example, &lt;code&gt;bind&lt;/code&gt; will create a new &lt;code&gt;quote&lt;/code&gt; function and set its &lt;code&gt;this&lt;/code&gt; value to &lt;code&gt;author&lt;/code&gt;.&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;author&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Oscar Wilde&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&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;`Be yourself. Everyone else is already taken. - &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;name&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;setTimeOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By doing so, our &lt;code&gt;this&lt;/code&gt; cannot be changed with the &lt;code&gt;call&lt;/code&gt; or &lt;code&gt;apply&lt;/code&gt; methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  “this” inside an Arrow Function
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;this&lt;/code&gt; with an arrow function is different from any other kind of JavaScript function. &lt;em&gt;An arrow function uses the &lt;code&gt;this&lt;/code&gt; value from its enclosing execution context since it does have one of its own&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;An arrow function permanently captures the &lt;code&gt;this&lt;/code&gt; value, preventing &lt;code&gt;apply&lt;/code&gt; or &lt;code&gt;call&lt;/code&gt; from being able to change it later on.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;author&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;oscarWilde&lt;/span&gt; &lt;span class="o"&gt;=&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="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="k"&gt;this&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;oscarWilde&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;oscarWilde&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we are storing the value of a &lt;code&gt;this&lt;/code&gt; in a variable and then comparing the value with a &lt;code&gt;this&lt;/code&gt; value that is inside an arrow function.&lt;/p&gt;

&lt;p&gt;An arrow function’s &lt;code&gt;this&lt;/code&gt; value &lt;strong&gt;cannot&lt;/strong&gt; be set explicitly! Also, the arrow function will ignore any attempt to pass a value to &lt;code&gt;this&lt;/code&gt; using methods like &lt;code&gt;call&lt;/code&gt;, &lt;code&gt;apply&lt;/code&gt;, and &lt;code&gt;bind&lt;/code&gt;. An arrow function will refer to the &lt;code&gt;this&lt;/code&gt; value that was set when the arrow function was created.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: An arrow function can also not be used as a constructor. So we cannot assign properties to &lt;code&gt;this&lt;/code&gt; inside an arrow function.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;So now, you can figure out the value of &lt;code&gt;this&lt;/code&gt; with these simple rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By default, &lt;code&gt;this&lt;/code&gt; refers to global object — within the browser, this is the &lt;code&gt;window&lt;/code&gt; object.&lt;/li&gt;
&lt;li&gt;When a method is called as a property of object, &lt;code&gt;this&lt;/code&gt; refers to the parent object.&lt;/li&gt;
&lt;li&gt;When a function is called with a &lt;code&gt;new&lt;/code&gt; operator, &lt;code&gt;this&lt;/code&gt; refers to the newly created instance.&lt;/li&gt;
&lt;li&gt;When a function is called using &lt;code&gt;call()&lt;/code&gt; and &lt;code&gt;apply()&lt;/code&gt;, then &lt;code&gt;this&lt;/code&gt; refers to the value passed as the first argument of the method.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;We’ve looked at how &lt;code&gt;this&lt;/code&gt; works in a number of different contexts, such as global scope, functions, methods, &lt;code&gt;call()&lt;/code&gt;, &lt;code&gt;apply()&lt;/code&gt;, &lt;code&gt;bind()&lt;/code&gt;, and arrow functions!&lt;/p&gt;

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; where I post daily about Tech related things!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="880" height="247"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Object &amp; Array Methods in JavaScript</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Thu, 22 Sep 2022 20:16:56 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/object-array-methods-in-javascript-bfk</link>
      <guid>https://forem.com/rembertdesigns/object-array-methods-in-javascript-bfk</guid>
      <description>&lt;p&gt;In this article, we’ll be taking a look at some highly useful array and object methods. The eloquence of these methods will help us to write very clean and readable code — as we go about manipulating our arrays &amp;amp; objects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Object.assign()
&lt;/h2&gt;

&lt;p&gt;This method gives us the ability to combine objects together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example&lt;/em&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Combine two separate objects into one:&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;objectOne&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Richard&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;objectTwo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rembert&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;objectCombined&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objectOne&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;objectTwo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// objectCombined is: { firstName: 'Richard', lastName: 'Rembert' }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: You could also use the object spread syntax — which we’ll look at later in this article!&lt;/p&gt;

&lt;h2&gt;
  
  
  Object.create()
&lt;/h2&gt;

&lt;p&gt;This method will create a new object, using an existing object as the prototype of the newly created object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&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;let&lt;/span&gt; &lt;span class="nx"&gt;newObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newObject&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
&lt;span class="c1"&gt;//{}&lt;/span&gt;


&lt;span class="nx"&gt;newObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;Richard&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;speak&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;


&lt;span class="c1"&gt;// My Name is Richard and this is year 2022&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our example, &lt;strong&gt;&lt;em&gt;obj&lt;/em&gt;&lt;/strong&gt; is the prototype from which &lt;strong&gt;&lt;em&gt;newObject&lt;/em&gt;&lt;/strong&gt; is created. So via inheritance, it can use the properties of our prototype. This is why we can use the &lt;strong&gt;&lt;em&gt;speak()&lt;/em&gt;&lt;/strong&gt; method without declaring it in &lt;strong&gt;&lt;em&gt;newObject&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Object.entries()
&lt;/h2&gt;

&lt;p&gt;Here we can create an array containing arrays of key/value pairs of an object. Essentially, it converts objects into arrays of arrays.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&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;let&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Richard”,
  age:32
}


let entries = Object.entries(person);


console.log(entries);


//[ [ 'name', 'Richard' ], [ 'age', 32 ] ]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Object.keys()
&lt;/h2&gt;

&lt;p&gt;This method returns an array of the &lt;strong&gt;&lt;em&gt;keys&lt;/em&gt;&lt;/strong&gt; (or property labels) of a given object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&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;seasonalColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;winter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;spring&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;summer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yellow&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;fall&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;brown&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;types&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;seasonalColors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// 'types' is equal to ["winter", "spring", "summer", "fall"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Object.values()
&lt;/h2&gt;

&lt;p&gt;This method returns an array of the &lt;strong&gt;&lt;em&gt;values&lt;/em&gt;&lt;/strong&gt; of a given object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&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;seasonalColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;winter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;spring&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;summer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yellow&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;fall&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;brown&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;colors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;seasonalColors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// 'colors' are equal to ["blue", "green", "yellow", "brown"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Object.freeze()
&lt;/h2&gt;

&lt;p&gt;You can use this method to prevent the modification of existing object properties, or of adding new properties and values to an object. Essentially the function &lt;strong&gt;freezes&lt;/strong&gt; the object from any further changes (key or values).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Freeze an object to prevent the &lt;code&gt;name&lt;/code&gt; property from being changed.&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;frozenObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Iron Man&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;freeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frozenObject&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="nx"&gt;frozenObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Captain America&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="c1"&gt;// frozenObject will remain equal to { name: 'Iron Man' }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Object.seal()
&lt;/h2&gt;

&lt;p&gt;This method stops any new properties from being added to an object, but it’ll still allow for existing properties to be changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Seal an object to prevent the &lt;code&gt;isBetter&lt;/code&gt; property from being added.&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;sealedObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Iron Man&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;seal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sealedObject&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="nx"&gt;sealedObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Captain America&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;sealedObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isBetter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="c1"&gt;// sealedObject will be equal to { name: 'Captain America' }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .map()
&lt;/h2&gt;

&lt;p&gt;With this method, we can create a new array by manipulating the values in another array. The new array is then returned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an array that will multiply each number by &lt;em&gt;10&lt;/em&gt;:&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;let&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="mi"&gt;1&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="mi"&gt;3&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;multiply10&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="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&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="o"&gt;=&amp;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;val&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="nx"&gt;multiply10&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: With .map() we just define what we want to happen &amp;amp; return it — no loops are required!&lt;/p&gt;

&lt;h2&gt;
  
  
  .filter()
&lt;/h2&gt;

&lt;p&gt;Using this method we create a new array based on whether the items of an array pass a certain condition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an array of lucky numbers (numbers &amp;gt; 3):&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;allNumbers&lt;/span&gt; &lt;span class="o"&gt;=&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="mi"&gt;2&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="mi"&gt;4&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;6&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;luckyNumbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;allNumbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;&amp;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;// luckyNumbers will be equal to [4, 5, 6]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .reduce()
&lt;/h2&gt;

&lt;p&gt;This method will reduce all items in an array to a single value. It’s quite useful for calculating totals. And the returned value can be of any type (object, array, string, number).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add up &lt;strong&gt;all&lt;/strong&gt; the numbers in an array:&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;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&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;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accumulator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;currentValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;accumulator&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;currentValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// total will be equal to 50&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .forEach()
&lt;/h2&gt;

&lt;p&gt;Using this method we can apply a function to each item in a given array.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&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;poets&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;Ginsberg&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;Plath&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;Yeats&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;


&lt;span class="nx"&gt;poets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;poet&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;poet&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// 'Ginsberg'&lt;/span&gt;
&lt;span class="c1"&gt;// 'Plath'&lt;/span&gt;
&lt;span class="c1"&gt;// 'Yeats'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .some()
&lt;/h2&gt;

&lt;p&gt;This method checks if &lt;strong&gt;any&lt;/strong&gt; item in an array passes a given condition. A good use case would be checking for user privileges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check if there is at least one &lt;code&gt;'teacher'&lt;/code&gt; in an array:&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;classReady&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;student&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;student&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;teacher&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;student&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;containsTeacher&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;classReady&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;some&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;teacher&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// containsTeacher will equal true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .every()
&lt;/h2&gt;

&lt;p&gt;This method is very similar to &lt;code&gt;.some()&lt;/code&gt;, however, it will check if &lt;strong&gt;all&lt;/strong&gt; items in an array pass a condition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check if &lt;strong&gt;all&lt;/strong&gt; ratings are equal to or greater than 3 stars.&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;ratings&lt;/span&gt; &lt;span class="o"&gt;=&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="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="mi"&gt;3&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;goodOverallRating&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ratings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;every&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;rating&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;rating&lt;/span&gt; &lt;span class="o"&gt;&amp;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;// goodOverallRating will equal true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  .includes()
&lt;/h2&gt;

&lt;p&gt;Using this method we can check if an array contains a certain value. It’s like &lt;code&gt;.some()&lt;/code&gt;, however, instead of looking for a condition to pass, it’ll check for a specific value in the given array.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check if the array includes an item with the string &lt;code&gt;‘no’&lt;/code&gt;.&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;respones&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;yes&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;maybe&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;no&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;yes&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;includesNo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;responses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;no&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// includesNo will equal true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Array.from()
&lt;/h2&gt;

&lt;p&gt;This method creates an array based on another array or string. However, it’s far more common to use the &lt;code&gt;.map()&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an array from a string:&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;newArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;abcde&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="c1"&gt;// newArray will equal ['a', 'b', 'c', 'd', 'e']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create an array that has double the value for each item in another array.&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;doubledValues&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&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="mi"&gt;4&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="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&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;// doubleValues will equal [4, 8, 12]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Array spread
&lt;/h2&gt;

&lt;p&gt;We can spread arrays using the spread operator (…). This allows us to expand the elements in an array. It’s very useful when concatenating a number of arrays together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Combine two given arrays.&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;arrayOne&lt;/span&gt; &lt;span class="o"&gt;=&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="mi"&gt;2&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arrayTwo&lt;/span&gt; &lt;span class="o"&gt;=&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="mi"&gt;5&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;combinedArrays&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;arrayOne&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;arrayTwo&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;


&lt;span class="c1"&gt;// combinedArrays is equal to [1, 2, 3, 4, 5, 6]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can also use spread with &lt;code&gt;.slice()&lt;/code&gt; to remove an array element &lt;em&gt;without mutating the original array&lt;/em&gt;:&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;companies&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;mercedes&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;boeing&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;starbucks&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;honda&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;transport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;companies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;companies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&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;// transport will equal ['mercedes', 'boeing', 'honda']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Object spread
&lt;/h2&gt;

&lt;p&gt;We can spread an object to allow for the addition of new properties and values without mutations (a new object is created). It can also be used to combine multiple objects together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add a new object property and value without mutating the original object:&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;originalObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Richard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;New York City&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;newObject&lt;/span&gt; &lt;span class="o"&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;originalObject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;occupation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Software Engineer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="c1"&gt;// newObject is equal to&lt;/span&gt;
&lt;span class="c1"&gt;// { occupation: 'Software Engineer', name: 'Richard', city: 'New York City' }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We’ve looked at a number of array and object methods including: &lt;code&gt;.assign()&lt;/code&gt;, &lt;code&gt;.create()&lt;/code&gt;, &lt;code&gt;.entries()&lt;/code&gt;, &lt;code&gt;.keys()&lt;/code&gt;, &lt;code&gt;.values()&lt;/code&gt;, &lt;code&gt;.freeze()&lt;/code&gt;, &lt;code&gt;.seal()&lt;/code&gt;, &lt;code&gt;.map()&lt;/code&gt;, &lt;code&gt;.filter()&lt;/code&gt;, &lt;code&gt;.reduce()&lt;/code&gt;, &lt;code&gt;.forEach()&lt;/code&gt;, &lt;code&gt;.some()&lt;/code&gt;, &lt;code&gt;.every()&lt;/code&gt;, &lt;code&gt;.includes()&lt;/code&gt;, &lt;code&gt;.from()&lt;/code&gt;, &amp;amp; Array/Object spread syntax.&lt;/p&gt;

&lt;p&gt;Mastering these methods will greatly improve the readability of your code as well as give you some great go-to techniques to have ready, as you go about manipulating arrays &amp;amp; objects!&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; where I post daily about Tech related things!&lt;br&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%2Fijinng8k7bf23v0o6gkj.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%2Fijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A Walkthrough Guide to Regular Expressions (RegEx) in JavaScript</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Thu, 22 Sep 2022 00:16:16 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/a-walkthrough-guide-to-regular-expressions-redex-in-javascript-55l5</link>
      <guid>https://forem.com/rembertdesigns/a-walkthrough-guide-to-regular-expressions-redex-in-javascript-55l5</guid>
      <description>&lt;p&gt;A JavaScript Regular Expression (or &lt;strong&gt;Regex&lt;/strong&gt;) is a sequence of characters that we can utilize to work effectively with strings. Using this syntax, we can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;search&lt;/strong&gt; for text in a string&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;replace&lt;/strong&gt; substrings in a string&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extract&lt;/strong&gt; information from a string&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dating back to the 1950s, Regular Expressions were formalized as a concept for pattern searching in string-processing algorithms.&lt;/p&gt;

&lt;p&gt;JavaScript has regular expressions support directly built into the language. A solid understanding of regular expressions will make you a much more effective programmer. So let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Regex Pattern
&lt;/h2&gt;

&lt;p&gt;Here’s a basic pattern:&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;var&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;  
&lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We are simply matching the literal text with the test string. We’ll look at the regex test method in detail shortly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Regular Expressions?
&lt;/h2&gt;

&lt;p&gt;As mentioned, Regular Expressions are a way to describe patterns in string data. We can use them to check a string of characters, for example, to look for an e-mail address — by matching the pattern which is defined by our regular expression.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Regular Expression
&lt;/h2&gt;

&lt;p&gt;In JavaScript, we can create a Regular Expression in two ways: Either by using the RegExp constructor or by using forward slashes &lt;code&gt;/&lt;/code&gt; to enclose the regex pattern.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Constructor Method:
&lt;/h3&gt;

&lt;p&gt;The syntax is like so:&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="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;RegExp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="nx"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regexConst&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;RegExp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;abc&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Literal Method:
&lt;/h3&gt;

&lt;p&gt;The syntax is like so:&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="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;pattern&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;flags&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regexLiteral&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/abc/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: flags are optional, we’ll look at these later in this article!&lt;/p&gt;

&lt;p&gt;In the case where you need to create regular expressions dynamically, you’ll need to use the constructor method.&lt;/p&gt;

&lt;p&gt;In either case, the result will give a regex object — which will have the same methods and properties attached to them, for our use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regular Expression Methods
&lt;/h2&gt;

&lt;p&gt;When testing our regular expressions, we generally use one of two methods: &lt;code&gt;RegExp.prototype.test()&lt;/code&gt; or &lt;code&gt;RegExp.prototype.exec()&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  RegExp.prototype.test()
&lt;/h3&gt;

&lt;p&gt;We use this method to test whether a match has been found or not. It accepts a string which we test against a regular expression and returns either trueor false, depending if the match is found or not.&lt;/p&gt;

&lt;p&gt;Let’s see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// returns 'true' as hello is present in our string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  RegExp.prototype.exec()
&lt;/h3&gt;

&lt;p&gt;We use this method to receive an array of all the matched groups. It accepts a string that we test against our regular expression.&lt;/p&gt;

&lt;p&gt;An example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, &lt;code&gt;‘hello’&lt;/code&gt; is our matched pattern, &lt;code&gt;index&lt;/code&gt; is where the regular expression starts &amp;amp; &lt;code&gt;input&lt;/code&gt; is the string that was passed.&lt;/p&gt;

&lt;p&gt;For the rest of the article, we’ll be using the &lt;code&gt;test()&lt;/code&gt; method.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Regex
&lt;/h2&gt;

&lt;p&gt;We’ve so far seen how to create simple regular expression patterns. This is really just the tip of the iceberg. Let’s now take a dive into the syntax to see the full power of regular expressions for handling more complex tasks!&lt;/p&gt;

&lt;p&gt;An example of a more complex task would be if we needed to match a number of email addresses. By using the special characters defined in the syntax — we can achieve this!&lt;/p&gt;

&lt;p&gt;Let’s take a look now so we can more fully grasp &amp;amp; therefore utilize regular expressions in our programs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flags:
&lt;/h2&gt;

&lt;p&gt;In any regular expression, we can use the following flags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;g&lt;/code&gt;: matches the pattern multiple times&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;i&lt;/code&gt;: makes the regex case insensitive&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;m&lt;/code&gt;: enables multi-line mode. Where &lt;code&gt;^&lt;/code&gt; and &lt;code&gt;$&lt;/code&gt; match the start and end of the entire string. Without this, multi-line strings match the beginning and end of each line.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;u&lt;/code&gt;: enables support for unicode&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;s&lt;/code&gt;: short for &lt;em&gt;single line&lt;/em&gt;, it causes the &lt;code&gt;.&lt;/code&gt; to also match new line characters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flags may also be combined in a single regular expression &amp;amp; the flag order doesn’t matter. They are added at the end of the string in regex &lt;strong&gt;literals&lt;/strong&gt;:&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="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HEllo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If using RegExp object &lt;strong&gt;constructors&lt;/strong&gt;, they’re added as the second parameter:&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="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;RegExp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&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;ig&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HEllo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="c1"&gt;// returns true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Character groups:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Character Set [abc]
&lt;/h3&gt;

&lt;p&gt;We use character sets to match different characters in a single position. They match any single character in the string with the characters inside the brackets:&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;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;[&lt;/span&gt;&lt;span class="sr"&gt;hc&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;ello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Negated Character Set [^abc]
&lt;/h3&gt;

&lt;p&gt;It matches anything that is &lt;strong&gt;not&lt;/strong&gt; enclosed in the brackets:&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;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;[^&lt;/span&gt;&lt;span class="sr"&gt;hc&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;ello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns false&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns false&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ranges [a-z]
&lt;/h3&gt;

&lt;p&gt;If we want to match &lt;strong&gt;all&lt;/strong&gt; of the letters of an alphabet in a single position, we can use ranges. For example: &lt;strong&gt;[a-j]&lt;/strong&gt; will match all the letters from a to j. We can also use digits like &lt;strong&gt;[0–9]&lt;/strong&gt; or capital letters like &lt;strong&gt;[A-Z]&lt;/strong&gt;:&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;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;[&lt;/span&gt;&lt;span class="sr"&gt;a-z&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;ello/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// returns true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If at least one character exists in the range we test, it’ll return true:&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="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&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="c1"&gt;// true&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&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="c1"&gt;// false (as our range is in lower case)&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;d&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cd&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true (as 'c' is in the range)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ranges can also be combined using &lt;code&gt;-&lt;/code&gt;:&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="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;

&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;[&lt;/span&gt;&lt;span class="sr"&gt;A-Z-0-9&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&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="c1"&gt;// false&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&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="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Multiple range item matches&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can check if a string contains one or only one character in a range. Start the regex with &lt;code&gt;^&lt;/code&gt; and end with &lt;code&gt;$&lt;/code&gt;:&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="o"&gt;/^&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&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="c1"&gt;// true&lt;/span&gt;
&lt;span class="o"&gt;/^&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;AB&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;span class="o"&gt;/^&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ab&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;span class="o"&gt;/^&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="o"&gt;/^&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Z&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;A1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Meta-characters
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Meta-characters are characters with a special meaning. Let’s take a look at some of these here&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;\d&lt;/code&gt;: matches any digit, being &lt;code&gt;[0-9]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\D&lt;/code&gt;: matches any character that is not a digit, effectively &lt;code&gt;[^0-9]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\w&lt;/code&gt;: matches any alphanumeric character (plus underscore), equivalent to &lt;code&gt;[A-Za-z_0-9]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\W&lt;/code&gt;: matches any non-alphanumeric character, so anything except &lt;code&gt;[^A-Za-z_0-9]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\s&lt;/code&gt;: matches any whitespace character: spaces, tabs, newlines and Unicode spaces&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\S&lt;/code&gt;: matches any character that is not a whitespace&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\0&lt;/code&gt;: matches null&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\n&lt;/code&gt;: matches a newline character&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\t&lt;/code&gt;: matches a tab character&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;\uXXXX&lt;/code&gt;: matches a &lt;a href="https://flaviocopes.com/unicode/" rel="noopener noreferrer"&gt;unicode&lt;/a&gt; character with code XXXX (requires the &lt;code&gt;u&lt;/code&gt; flag)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.&lt;/code&gt;: matches any character that is not a newline char (e.g. &lt;code&gt;\n&lt;/code&gt;) (unless you use the &lt;code&gt;s&lt;/code&gt; flag, explained later on)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[^]&lt;/code&gt;: matches any character, including newline characters. It’s very useful on multi-line strings&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quantifiers
&lt;/h3&gt;

&lt;p&gt;Quantifiers are symbols that have unique meaning in regex.&lt;/p&gt;

&lt;p&gt;Let’s see them in action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;+&lt;/code&gt; Matches the preceding expression 1 or more times:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\d&lt;/span&gt;&lt;span class="sr"&gt;+/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1122&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; Matches the preceding expression 0 or more times:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\d&lt;/span&gt;&lt;span class="sr"&gt;+/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1122&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;?&lt;/code&gt; Matches the preceding expression 0 or 1 time, that is preceding pattern is optional:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hii&lt;/span&gt;&lt;span class="se"&gt;?&lt;/span&gt;&lt;span class="sr"&gt;d/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;^&lt;/code&gt; Matches the beginning of the string, the regex that follows should be at the start of the test string:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^h/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hi&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bye&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;$&lt;/code&gt; Matches the end of the string, the regex that precedes it should be at the end of the test string:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/.com$/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test@email.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test@email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;{N}&lt;/code&gt; Matches &lt;em&gt;exactly&lt;/em&gt; N occurrences of the preceding regex:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hi&lt;/span&gt;&lt;span class="se"&gt;{2}&lt;/span&gt;&lt;span class="sr"&gt;d/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;{N,}&lt;/code&gt; Matches &lt;em&gt;at least&lt;/em&gt; N occurrences of the preceding regular expression.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hi&lt;/span&gt;&lt;span class="se"&gt;{2,}&lt;/span&gt;&lt;span class="sr"&gt;d/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiiiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;{N,M}&lt;/code&gt; Matches &lt;em&gt;at least&lt;/em&gt; N occurrences and &lt;em&gt;at most&lt;/em&gt; M occurrences of the preceding regex (when M &amp;gt; N).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/hi&lt;/span&gt;&lt;span class="se"&gt;{1,2}&lt;/span&gt;&lt;span class="sr"&gt;d/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hiiid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;X|Y&lt;/code&gt; Alternation matches &lt;em&gt;either&lt;/em&gt; X or Y:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;red|yellow&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt; bike/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;red bike&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yellow bike&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;brown bike&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: To use any special character as a part of the expression, for example if you want to match literal &lt;code&gt;+&lt;/code&gt; or &lt;code&gt;.&lt;/code&gt;, then you’ll need to escape them with a backslash &lt;code&gt;\&lt;/code&gt;. Like so:&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;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/a+b/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
&lt;span class="c1"&gt;// this doesn't work&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/a&lt;/span&gt;&lt;span class="se"&gt;\+&lt;/span&gt;&lt;span class="sr"&gt;b/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="c1"&gt;// this works!&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&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+b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; 
&lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reviewing Regex
&lt;/h2&gt;

&lt;p&gt;With these concepts fresh in our minds, let’s review what we’ve learned!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match any 10 digit number:&lt;/strong&gt;&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;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;\d{10}&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;4658264822&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So &lt;code&gt;\d&lt;/code&gt; matches any digit character. &lt;code&gt;{10}&lt;/code&gt; matches the previous expression, in this case &lt;code&gt;\d&lt;/code&gt; &lt;strong&gt;exactly&lt;/strong&gt; 10 times. So if the test string contains less than or more than 10 digits, the result will be false.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match a date with the following format:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;DD-MM-YYYY&lt;/code&gt; &lt;strong&gt;or&lt;/strong&gt; &lt;code&gt;DD-MM-YY&lt;/code&gt;&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;let&lt;/span&gt; &lt;span class="nx"&gt;regex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;(\d{1,2}&lt;/span&gt;&lt;span class="sr"&gt;-&lt;/span&gt;&lt;span class="se"&gt;){2}\d{2}(\d{2})?&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;01-01-2000&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;01-01-00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// true&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;01-01-200&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we’ve wrapped the entire expression inside &lt;code&gt;^&lt;/code&gt; and &lt;code&gt;$&lt;/code&gt;, so that the match spans the entire string. &lt;code&gt;(&lt;/code&gt; is the start of first sub-expression. &lt;code&gt;\d{1,2}&lt;/code&gt; matches at &lt;em&gt;least&lt;/em&gt; 1 digit and at &lt;em&gt;most&lt;/em&gt; 2 digits. &lt;code&gt;-&lt;/code&gt; matches the literal hyphen character. &lt;code&gt;)&lt;/code&gt; is the end of first sub-expression.&lt;/p&gt;

&lt;p&gt;Then &lt;code&gt;{2}&lt;/code&gt; matches the first sub-expression exactly 2 times. &lt;code&gt;\d{2}&lt;/code&gt; matches exactly 2 digits. &lt;code&gt;(\d{2})?&lt;/code&gt; matches exactly 2 digits. However it’s optional, so either year contains 2 digits or 4 digits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;And there we go! We’ve examined Regular Expressions from the very basics right through to more advanced implementations. Including both the literal and constructor methods, testing methods, flags and character syntax.&lt;/p&gt;

&lt;p&gt;Regular expressions can indeed be fairly complex! However, taking the time to learn the syntax will greatly help you to identify the regex patterns more easily. Any new confidence you gain will surely have you ready to conquer the next obstacle you encounter on your coding journey!&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; where I post daily about Tech related things!&lt;br&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%2Fijinng8k7bf23v0o6gkj.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%2Fijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What is a REST API?</title>
      <dc:creator>Richard Rembert</dc:creator>
      <pubDate>Tue, 20 Sep 2022 23:50:42 +0000</pubDate>
      <link>https://forem.com/rembertdesigns/what-is-a-rest-api-4257</link>
      <guid>https://forem.com/rembertdesigns/what-is-a-rest-api-4257</guid>
      <description>&lt;p&gt;&lt;strong&gt;RE&lt;/strong&gt;presentational &lt;strong&gt;S&lt;/strong&gt;tate &lt;strong&gt;T&lt;/strong&gt;ransfer (&lt;strong&gt;REST&lt;/strong&gt;) is an architectural style that handles the client-server relationship, with the purpose of aiming for speed and performance by using re-usable components.&lt;/p&gt;

&lt;p&gt;REST as a technology was introduced into the world in a 2000 doctoral &lt;a href="https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm"&gt;dissertation by Roy Fielding&lt;/a&gt;. Nowadays it is generally preferred to SOAP (Simple Object Access Protocol) as REST uses less bandwidth and is simpler and more flexible for internet usage. We can use it to fetch or give some information from a web service, this is done via an HTTP request to the REST API.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a REST API?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;REST API&lt;/strong&gt; is a way of easily accessing web services without having excess processing. Whenever a RESTful API is called, the server will transfer to the client a representation of the state of the requested resource.&lt;/p&gt;

&lt;p&gt;In fact, we use this just about every day! If you’re trying to find videos about biking on YouTube. You’d type “biking” into the YouTube search field, hit enter, and you’ll then see a list of videos about biking. Conceptually, a REST API works just like this! You search for something, and you get a list of results back from the service that you’re requesting from.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;API&lt;/strong&gt; is an application programming interface. It’s a set of rules that allow programs to communicate with each other. The developer creates the API on the server and allows the client to talk to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt; is what determines how the API looks. It is the rules that developers follow when they create an API. One of these rules states that you should be able to get a piece of data (a resource) when you link to a specific URL.&lt;/p&gt;

&lt;p&gt;Each URL is called a &lt;strong&gt;request&lt;/strong&gt; while the data sent back to you is called a &lt;strong&gt;response&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  RESTful Architecture
&lt;/h2&gt;

&lt;p&gt;So what are the basic features of REST?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stateless&lt;/strong&gt;: Meaning the client data is not stored on the server, the session is stored client-side (typically in session storage).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client&amp;lt;-&amp;gt;Server&lt;/strong&gt;: There is a separation of concerns between the front-end (client) and the back-end (server). They operate independently of each other and both are replaceable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache&lt;/strong&gt;: Data from the server can be cached on the client, which can improve performance speed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URL Composition&lt;/strong&gt;: We use a standardized approach to the composition of base URLs. For example, a &lt;code&gt;GET&lt;/code&gt; request to &lt;code&gt;/cities&lt;/code&gt;, should yield all the cities in the database, whereas a &lt;code&gt;GET&lt;/code&gt; request to &lt;code&gt;/cities/portland&lt;/code&gt; would render the city with an ID of Portland. Similarly, REST utilizes standard methods like &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt; and &lt;code&gt;POST&lt;/code&gt; to perform actions, which we’ll take a look at in the next section!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we can define a RESTful API as one that is &lt;strong&gt;stateless&lt;/strong&gt;, it &lt;strong&gt;separates concerns between client-server&lt;/strong&gt;, it &lt;strong&gt;allows caching of data client-side&lt;/strong&gt; and it utilizes &lt;strong&gt;standardized base URLs and methods&lt;/strong&gt; to perform the actions required to manipulate, add or delete data.&lt;/p&gt;

&lt;h2&gt;
  
  
  REST in Action
&lt;/h2&gt;

&lt;p&gt;Let’s now take a closer look at how this is done! Our request is sent from the client to the server via HTTP in the form of a web URL. Using either GET, POST, PUT or DELETE. Then a response is sent back from the server in the form of a resource, which could be anything like HTML, XML, Image, or JSON. JSON is by far the most popular format, so we’ll be using that for our example.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CaFPYAPx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwwpywtizmvv3qf1ck35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CaFPYAPx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwwpywtizmvv3qf1ck35.png" alt="REST API Model" width="800" height="304"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;HTTP&lt;/strong&gt; has five methods that are commonly used in a REST-based architecture: POST, GET, PUT, PATCH, and DELETE. In fact, they correspond to create, read, update, and delete (CRUD) operations respectively. It should also be noted that there are other methods that are less frequently used, such as OPTIONS and HEAD.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt;: This method is used to &lt;strong&gt;read&lt;/strong&gt; (or retrieve) a representation of a resource. If all is well, GET returns a representation in XML or JSON and an HTTP response code of 200 (OK). In an error case, it most often returns a 404 (NOT FOUND) or 400 (BAD REQUEST).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt;: This method is often utilized to &lt;strong&gt;create&lt;/strong&gt; new resources. In particular, it’s used to create subordinate resources. That is, subordinate to some other (e.g. parent) resource. On successful creation, it returns HTTP status 201, returning a location header with a link to the newly-created resource with the 201 HTTP status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt;: It’s used for &lt;strong&gt;updating&lt;/strong&gt; capabilities and also to &lt;strong&gt;create&lt;/strong&gt; a resource (in the case where the resource ID is chosen by the client instead of the server). Essentially PUT is to a URL that contains the value of a non-existent resource ID. A successful update returns 200 (or 204 if not returning any content in the body) from a PUT. If using PUT for create, it returns HTTP status 201 on successful creation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH&lt;/strong&gt;: It’s used for &lt;strong&gt;modify&lt;/strong&gt; capabilities. The PATCH request only needs to contain the changes to the resource, not the complete resource. This is similar to PUT, however the body contains a set of instructions describing how a resource currently residing on the server should be modified to produce a new version. So the PATCH body should not just be a modified part of the resource but in some kind of patch language like JSON Patch or XML Patch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DELETE&lt;/strong&gt;: Fairly self-explanatory, it’s used to &lt;strong&gt;delete&lt;/strong&gt; a resource identified by a URL. Upon successful deletion, it returns HTTP status 200 (OK) along with a response body.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Working with REST Data
&lt;/h2&gt;

&lt;p&gt;Furthermore, it has become common practice for REST APIs to also return data in a standard format. As mentioned the most popular format nowadays is JSON (JavaScript Object Notation). The standardization of the formatting of the data is another step towards uniformity in the way resources are interacted with on the web, allowing for developers to solve problems and not spend their time in configuration of the basic architecture!&lt;/p&gt;

&lt;p&gt;When requesting data from an API you might get back something like this:&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="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi, I am JSON&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nx"&gt;chapter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;150&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;firstParagraph&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am JSON, this is what I look like when I am returned from an API.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Richard Rembert&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This format allows for easy access to the data within JSON, using dot notation such as &lt;code&gt;data.title&lt;/code&gt;, which returns "Hi, I am JSON".&lt;/p&gt;

&lt;p&gt;Where can you find RESTful APIs? Everywhere! Twitter, &lt;a href="https://developers.google.com/drive/api/v2/reference"&gt;Google&lt;/a&gt;, &lt;a href="https://openweathermap.org/api"&gt;Open Weather Map&lt;/a&gt;, &lt;a href="https://developers.google.com/youtube/v3"&gt;YouTube&lt;/a&gt;. Most of the popular services we use daily utilize a RESTful architecture for their API service so go forth &amp;amp; explore the world of adding API functionality to your websites &amp;amp; apps!&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We’ve taken a look at what REST is, as well as the principles which govern its architecture. We’ve looked at how REST works with APIs to send and receive data from client to server &amp;amp; back again. We’ve also taken a look at the JSON format, which we’ll most often be working with when accessing and manipulating our data!&lt;/p&gt;

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

&lt;p&gt;If you liked this blog post, follow me on &lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt; where I post daily about Tech related things!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ir3NYOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijinng8k7bf23v0o6gkj.png" alt="Buy Me A Coffee" width="880" height="247"&gt;&lt;/a&gt; If you enjoyed this article &amp;amp; would like to leave a tip — click &lt;a href="https://www.buymeacoffee.com/rembertdesigns"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌎 Let's Connect
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rembertdesigns.co/"&gt;Portfolio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://twitter.com/RembertDesigns"&gt;Twitter&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/rrembert/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://rembertdesigns.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/rembertdesigns"&gt;Devto&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@rembertdesigns"&gt;Medium&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rembertdesigns"&gt;Github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codepen.io/rembertdesigns"&gt;Codepen&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
