<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HARITH O ONIGEMO</title>
    <description>The latest articles on DEV Community by HARITH O ONIGEMO (@harithmetic1).</description>
    <link>https://dev.to/harithmetic1</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%2F435421%2F7a5ff7d0-86c6-428e-a3eb-af3b38d92312.jpg</url>
      <title>DEV Community: HARITH O ONIGEMO</title>
      <link>https://dev.to/harithmetic1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harithmetic1"/>
    <language>en</language>
    <item>
      <title>2022 - Year in Review</title>
      <dc:creator>HARITH O ONIGEMO</dc:creator>
      <pubDate>Sun, 08 Jan 2023 10:37:53 +0000</pubDate>
      <link>https://dev.to/harithmetic1/2022-year-in-review-1f3</link>
      <guid>https://dev.to/harithmetic1/2022-year-in-review-1f3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2F9ocb9iyo4hpa274ogl50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F9ocb9iyo4hpa274ogl50.png" alt="Fireworks Display from the Burj Khalifa" width="800" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fireworks, interesting fact:&lt;/strong&gt; In some cultures, fireworks scare away evil spirits and symbolise good luck in the coming of a new year. I love the excitement it brings and the silent moments of reflection when watching the beautiful fireworks show. The atmosphere is a quick reminder that change will always be a constant for as long as we live.&lt;/p&gt;

&lt;p&gt;I've always started my year by reflecting on my previous year, highlighting my achievements, weaknesses, and things I could have done better in the past year. I've always been big on being better than I was yesterday; this tradition has always helped. &lt;/p&gt;

&lt;p&gt;The challenge in writing Year-in-reviews is finding a great way to start describing yourself and how your year went. I'm going to dump it on here one way or the other. Enough said, "Ladies and Gentlemen, my 2022, in no particular order; enjoy!&lt;/p&gt;

&lt;h2&gt;
  
  
  The grind
&lt;/h2&gt;

&lt;p&gt;At the beginning of 2022, I remember making a video stating all my goals for the year. Although it was constantly cringing, watching that video was insightful, and I had fun shooting. &lt;br&gt;
The grind has been challenging. In 2022, I needed to propel my career, so I listed a couple of goals for myself. Some of them are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn Vue.js since I already knew React.js&lt;/li&gt;
&lt;li&gt;Learn React Native for Mobile Development&lt;/li&gt;
&lt;li&gt;Get a paid job or internship&lt;/li&gt;
&lt;li&gt;Launch a new portfolio&lt;/li&gt;
&lt;li&gt;Learn a backend framework&lt;/li&gt;
&lt;li&gt;Shoot more YouTube Videos &lt;/li&gt;
&lt;li&gt;Qualify for the Student Learning Assistant (SLA) role at school.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fast forward a year, and I worked nine months as a Software Engineer Intern at Acumen Digital, building four major projects using Vue and Nuxt.js. &lt;/p&gt;

&lt;p&gt;I started learning React Native but pivoted to Flutter after my friends showed me the light ;D&lt;/p&gt;

&lt;p&gt;I became the Frontend and Flutter lead at my school's Google Developer Student Club. I gave a seminar on how to get started with Flutter in front of the GDSC Community and some of my lecturers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F1bvnd6i9vwtvfi3eaz3u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1bvnd6i9vwtvfi3eaz3u.jpg" alt="Picture banner for the flutter session I had in school" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I got a contract job as a flutter dev for a startup in Dubai. The startup folded, but I learned a lot, and it was a fantastic opportunity to develop my career.&lt;/p&gt;

&lt;p&gt;I got nominated and awarded the SLA role. SLAs are top students the university pays to assist lecturers in junior classes. Since I switched schools, I've always wanted the position, worked hard for it, and got it. It was my best accomplishment this year. &lt;/p&gt;

&lt;p&gt;Although I achieved a lot, there were some goals I still needed to complete. I couldn't launch my new portfolio, I needed to learn a new backend framework, and my YouTube channel stayed strong with only five videos. I did not complete these goals because I was lazy and mismanaged my time. This year, I plan on being more intentional with the grind by managing my time more efficiently and breaking down goals into smaller pieces, which I enjoy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fitness
&lt;/h2&gt;

&lt;p&gt;My fitness journey started in 2021. One day, I went to the beach, and my beach body was not beach-bodying. I was not too fond of that feeling and promised not to feel that way again. &lt;/p&gt;

&lt;p&gt;Going to the gym has impacted my life positively; there's a level of mindset and discipline it takes to be consistent at the gym. There's also a boost in self-confidence and self-love. I developed self-discipline, which I applied to other aspects of my life. Aside from the psychological advantages of going to the gym, the physical elements are also worthwhile. Whenever I look in a mirror, there's this sense of approval, and no feeling is better, trust me. If you've been looking for a sign to start hitting the gym, here's one:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fqisbhzmntjys78hb8y6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqisbhzmntjys78hb8y6x.png" alt="Mirror image of a Gym picture" width="800" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, after countless months, &lt;em&gt;the abs are finally abingg&lt;/em&gt;. I'm proud of the hard work I put into myself these past couple of years. I plan to continue the momentum and keep breaking barriers in my body. &lt;/p&gt;

&lt;h2&gt;
  
  
  Relationships
&lt;/h2&gt;

&lt;p&gt;I had the chance to meet many amazing people in 2022, talented individuals from work, hardworking people from school, and warm and beautiful souls in my community. &lt;/p&gt;

&lt;p&gt;Friends bring colour to your life; I'm fortunate to be surrounded by friends who care for and respect me. Friends who talk sense into me when I start derailing, people to share the good and bad times, enjoying life and learning lessons. What a blessing, Al-hamdu lillah. &lt;/p&gt;

&lt;p&gt;Here are a couple of lessons I learned about relationships in 2022: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your inner circle affects your personality vastly, be choosy when picking them.&lt;/li&gt;
&lt;li&gt;In every relationship, prioritise your heart. There's no such thing as a perfect relationship because there are no perfect people.&lt;/li&gt;
&lt;li&gt;It's important to acknowledge that there's a difference between love and compatibility. You can love each other but are not compatible. You deserve to be with someone who harmonises with your personality. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Faith
&lt;/h2&gt;

&lt;p&gt;Al-hamdu lillah, Al-hamdu lillah, Al-hamdu lillahi Rabil'alamin. &lt;/p&gt;

&lt;p&gt;I could not have been able to write this article if not for the grace of Almighty Allah. Everything that happened this past year is because he has destined it. Ma Sha Allah&lt;/p&gt;

&lt;p&gt;I got closer to Allah this year, I derailed, but he brought me closer, Al-hamdu lillahi. The constant battle between deen and Dunya weighs heavy on my head, but I have faith Allah will make it easy for me. I'm not perfect, but In Sha Allah, I will continue to get closer to him.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goals for 2023
&lt;/h2&gt;

&lt;p&gt;I'd only end this article if I specified my goals for the new year; that's the whole point of writing this article. 🙃&lt;/p&gt;

&lt;p&gt;Possibly, by the grace of God, I hope to achieve the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launch my new portfolio (It's almost ready, I promise 😭)&lt;/li&gt;
&lt;li&gt;Learn a backend framework &lt;/li&gt;
&lt;li&gt;Shoot more videos on my YouTube channel&lt;/li&gt;
&lt;li&gt;Get a well-paying job &lt;/li&gt;
&lt;li&gt;Publish an app to the Play/App store&lt;/li&gt;
&lt;li&gt;Get my driver's license&lt;/li&gt;
&lt;li&gt;Build most of the projects I've had planned with my best friend for a while. (Shout out to Sydney :) &lt;/li&gt;
&lt;li&gt;Continue to hit the gym.&lt;/li&gt;
&lt;li&gt;Properly manage that online business&lt;/li&gt;
&lt;li&gt;Explore my Athletic side, possibly try sprinting again.&lt;/li&gt;
&lt;li&gt;Continue to excel at school. (In Sha Allah)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a couple more I didn't list. Anyways, this way, I have an idea of how I want my 2023 to look, and I'm satisfied.&lt;/p&gt;

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

&lt;p&gt;2022 taught me a lot. I achieved almost all my goals, met some fantastic people, and better understood myself. It's been a crazy year full of wins and losses, but we thank God, and we move. After writing this article, I think 2023 will be a better year.&lt;/p&gt;

&lt;p&gt;If you've reached this far, you like me enough, or my year-in-review engaged you. Either way, thank you. You made publishing this article worthwhile. &lt;/p&gt;

&lt;p&gt;Crazy how I did not know how to start this article. I feel so relieved. 😂&lt;/p&gt;

&lt;p&gt;That's all, folks! See you all next time I have content for the interweb. 🤓&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building a SPA using Vue-Router</title>
      <dc:creator>HARITH O ONIGEMO</dc:creator>
      <pubDate>Thu, 19 May 2022 17:06:20 +0000</pubDate>
      <link>https://dev.to/harithmetic1/building-a-spa-using-vue-router-1abc</link>
      <guid>https://dev.to/harithmetic1/building-a-spa-using-vue-router-1abc</guid>
      <description>&lt;p&gt;Nowadays, more developers adopt the Single Page Application (SPA) architecture for their web applications or static site. This article will talk about the various merits and demerits of SPAs and build one using the Vue JS Library.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a SPA?
&lt;/h2&gt;

&lt;p&gt;According to the MDN Web Docs, single Page Applications (SPA) allow users to use websites without loading new pages during navigation. SPAs utilise Client-Side Routing instead of Server Side Routing, which websites traditionally use.&lt;/p&gt;

&lt;p&gt;In Server-Side routing, when a user visits a new page, the browser sends a request to the server, asking for the required files to load the page. The server grants the request, and the browser downloads the views and scripts for that page. This process repeats every time the user wants to navigate to other pages within the website.&lt;/p&gt;

&lt;p&gt;In Client-Side Routing, when the user visits the website for the first time, the server provides the browser with an index.html file which comes with a bundled script of the entire website. All the necessary HTML, CSS and JavaScript codes are retrieved with a single page load. All the required resources are dynamically retrieved and added to the page. In Vue, when navigation happens, Vue uses Vue-router to check for the differences in the DOM and renders them on the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros &amp;amp; Cons
&lt;/h2&gt;

&lt;p&gt;Let’s have a look on the pros and cons of the SPA approach&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;It is highly reactive&lt;/li&gt;
&lt;li&gt;Less load on the server&lt;/li&gt;
&lt;li&gt;Better User Experience&lt;/li&gt;
&lt;li&gt;Better client-server interaction, the dividing of front-end’s and back-end’s concerns&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;SEO is challenging&lt;/li&gt;
&lt;li&gt;JavaScript is strictly required&lt;/li&gt;
&lt;li&gt;Performance on client side&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Alright, enough chit-chat on SPA. Let’s get to the exciting stuff, building SPAs using Vue and Vue-router.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools
&lt;/h2&gt;

&lt;p&gt;There are different ways of adding vue-router to a vue project. In this article, we will be using a tool called vue-cli.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue-cli
&lt;/h3&gt;

&lt;p&gt;For a new project, vue-CLI would work perfectly. With Vue-cli, we can start our project with one of Vue's many open-source templates, and we can also choose to create our template.&lt;/p&gt;

&lt;p&gt;First, we’ll need to install it using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; vue-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s create a new application called spa-app using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;spa&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you will be asked to select a preset, use the arrow keys to navigate to Manually select features and press enter&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8qmyoajt1uxkt5p7wk74.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8qmyoajt1uxkt5p7wk74.jpg" alt="Manually select features" width="271" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Afterwards, you will be asked to select features needed for your project, use the arrow keys to navigate to Router, press space to select and press enter to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F0401dsinan0pr1xh3fn3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F0401dsinan0pr1xh3fn3.jpg" alt="navigate to Router" width="372" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will then be asked to choose a version of Vue.js to start the project. We will be using Vue 3, so press enter to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F9nzbr2y455o55tfqbac6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F9nzbr2y455o55tfqbac6.jpg" alt=" " width="624" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We won’t use history mode in this article, but just press enter to proceed with it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Flsu6f5whmz59bxwsye0r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flsu6f5whmz59bxwsye0r.jpg" alt=" " width="731" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will go with the default options for the linter, so press enter to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fg5zzyao2d6qejd14zj21.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fg5zzyao2d6qejd14zj21.jpg" alt=" " width="708" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press enter to select lint on save and proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fimz0ws7bd6crdtgkc049.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fimz0ws7bd6crdtgkc049.jpg" alt=" " width="800" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will choose the default here also. Press enter to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fpu5619z0p8b5b7c7ra1a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fpu5619z0p8b5b7c7ra1a.jpg" alt=" " width="726" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you choose to save these settings as a preset for future purposes, you can by pressing enter and following the steps, but I will not be doing that, so I will type n and press enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2cqxhlkk7kcgp4xbe0ln.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2cqxhlkk7kcgp4xbe0ln.jpg" alt=" " width="721" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vue-Cli will then help us create our project using the required features selected, Initialize a local git repository and install a CLI plugin. &lt;/p&gt;

&lt;p&gt;Once Vue-Cli is done creating the application, change the directory to the developed app and run the app by typing&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;spa-app
npm run serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see a page like this on your &lt;a href="http://localhost" rel="noopener noreferrer"&gt;localhost&lt;/a&gt; server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ffznca47bh0nlhflja9rg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffznca47bh0nlhflja9rg.jpg" alt=" " width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you click on the about link, it will take you to the about page without a browser reload.&lt;/p&gt;

&lt;p&gt;How does this work? Let us find out. On your code editor, navigate to the src &amp;gt; main.js file. This file is the webpack entry point. The App.vue component, the parent component for all other components, is imported there. &lt;/p&gt;

&lt;p&gt;In the src &amp;gt; App.vue file, you will notice a couple of components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fikcn8vvhcnpz9l9f2ruu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fikcn8vvhcnpz9l9f2ruu.jpg" alt=" " width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The router-link component serves as an anchor tag to help navigate the user.&lt;/p&gt;

&lt;p&gt;The router-view component is a functional component that renders the matched component for the given path.&lt;/p&gt;

&lt;p&gt;We know how vue displays links on the page, but configuring Vue-router to our settings is still challenging.  Let’s dive deeper into the code.&lt;/p&gt;

&lt;p&gt;If you navigate to src &amp;gt; router directory, we will find an index.js file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F7ry5t1g92w78l23150r3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7ry5t1g92w78l23150r3.jpg" alt=" " width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The file contains all the logic for telling vue what component to render to the screen with a particular path. If you look closely, we are importing the createRouter and createWebHistory hooks from vue.&lt;/p&gt;

&lt;p&gt;The createRouter hook creates a Router instance that the Vue app can use. You pass in all the routes for the website in an array.&lt;/p&gt;

&lt;p&gt;The createWebHistory hook is also imported because we chose to use histories with the router during installation. This hook creates an HTML5 history. &lt;/p&gt;

&lt;p&gt;If you want to add a new page, you can create a new view in the src &amp;gt; views directory, import it into the src &amp;gt; router &amp;gt; index.js file, add the route as an object in the array, and state the component in the component key-value pair.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Frmdreq85uqqkivbxvnwe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Frmdreq85uqqkivbxvnwe.jpg" alt=" " width="757" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Afterwards, you can use the router-link component in any other component to link to that component. Since we are adding a contact view component, you can add a link to your contact page in your App.vue file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fepnn9vyx9fe6g4j9kiv7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fepnn9vyx9fe6g4j9kiv7.jpg" alt=" " width="513" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations, you have created a Single Page Application using Vue-Cli and Vue-router. &lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;In this article, we learnt about SPAs, the difference between Server-Side and Client-Side routing, and the Pros and Cons of SPAs. We also learned how to build a SPA with Vue CLI and Vue-router and configure routing with the vue-router. Thanks for reading through if you made it this far, I hope you learned something valuable today. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>singlepageapplications</category>
      <category>webdev</category>
      <category>vue</category>
    </item>
    <item>
      <title>Setting up your First React Native Application</title>
      <dc:creator>HARITH O ONIGEMO</dc:creator>
      <pubDate>Sat, 26 Feb 2022 17:23:22 +0000</pubDate>
      <link>https://dev.to/harithmetic1/setting-up-your-first-react-native-application-54bj</link>
      <guid>https://dev.to/harithmetic1/setting-up-your-first-react-native-application-54bj</guid>
      <description>&lt;p&gt;React Native is a Javascript framework which uses the full power of react and Javascript to make amazing Native applications.  React Native compiles Javascript code to Native code, so components like Text, Button, View e.t.c which are used in React Native will be compiled to the Native code of each platform (Android or IOS) . &lt;/p&gt;

&lt;p&gt;There are two ways of building React Native applications, The easy way using Expo or the React Native CLI way. This article will concentrate on building React Native applications using Expo. &lt;/p&gt;

&lt;p&gt;Expo is a framework or platform which assists us to build, deploy and view our application on android, IOS or Web from the same Javascript/Typescript codebase. it works for universal React applications.&lt;/p&gt;

&lt;p&gt;Alright, enough chit-chat, let's get started with setting our React Native Application. You'll need the following Prerequisites to start. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ]  Node.Js Installed (install it via &lt;a href="http://nodejs.org" rel="noopener noreferrer"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[ ]  Code Editor (Preferably VS code)&lt;/li&gt;
&lt;li&gt;[ ]  Internet connection&lt;/li&gt;
&lt;li&gt;[ ]  A can-do attitude&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After checking each of these off, let's get started.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1
&lt;/h2&gt;

&lt;p&gt;Open your project directory on VS Code and install the Expo CLI by typing in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--global&lt;/span&gt; expo-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2
&lt;/h2&gt;

&lt;p&gt;Create a new expo project, let's call it first-rn&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;expo init first-rn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3
&lt;/h2&gt;

&lt;p&gt;install Expo on your phone via the play store/ app store. &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4
&lt;/h2&gt;

&lt;p&gt;Once the expo project has been created type in the following to launch the application&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// Change directory
&lt;span class="nb"&gt;cd &lt;/span&gt;first-rn

// Start the application 
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5
&lt;/h2&gt;

&lt;p&gt;After installing the expo app on your phone and after the expo app has launched, you'll see a barcode, scan the barcode with your phone camera. &lt;/p&gt;

&lt;p&gt;Note: On IOS you'll have to use the barcode scanner that comes with the expo app. &lt;/p&gt;

&lt;p&gt;You should see something like this on your phone if you’ve followed each step successfully.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fwklxj4iqwm49a78wthyb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fwklxj4iqwm49a78wthyb.jpg" alt="Expo Hello world Screenshot" width="800" height="1715"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations!! You are done, you’ve successfully set up your React Native application. Now, go on ahead and make the next big thing, I can’t wait to see what you build. 😊&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>reactnative</category>
      <category>expo</category>
    </item>
  </channel>
</rss>
