<?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: Islam Sayed</title>
    <description>The latest articles on DEV Community by Islam Sayed (@islam).</description>
    <link>https://dev.to/islam</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%2F56190%2Fa9ebd56e-0500-4b01-bc64-ecbf4589ebe2.jpg</url>
      <title>DEV Community: Islam Sayed</title>
      <link>https://dev.to/islam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/islam"/>
    <language>en</language>
    <item>
      <title>EXPRESS JS MIDDLEWARE</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sat, 19 Jun 2021 20:58:00 +0000</pubDate>
      <link>https://dev.to/islam/express-js-middlewares-mge</link>
      <guid>https://dev.to/islam/express-js-middlewares-mge</guid>
      <description>&lt;h2&gt;
  
  
  What is a Middleware?:
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Middleware"&gt;wikiperdia&lt;/a&gt;, &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In our case, express js middleware is a &lt;strong&gt;functionality that runs between a request to the server and the response from the server&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Types of Express Middleware:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Built-in Middleware:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://expressjs.com/en/4x/api.html#express.static"&gt;express.static&lt;/a&gt;: serves static assets such as HTML files, images, and so on.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://expressjs.com/en/4x/api.html#express.json"&gt;express.json&lt;/a&gt;: parses incoming requests with JSON payloads.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://expressjs.com/en/4x/api.html#express.urlencoded"&gt;express.urlencoded&lt;/a&gt;: parses incoming requests with URL-encoded payloads.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Third Party Middleware:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Middleware installed via npm&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom Middleware:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Created by you - the developer - for a project.&lt;/p&gt;




&lt;h2&gt;
  
  
  How To Apply Middleware?:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Application or Route Level:
&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;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Start express app.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;expree&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//Apply a single middleware&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Apply multiple middleware&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;middleware1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middleware2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Or via an array &lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;middlewareArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;middleware1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middleware2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;middlewareArr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Endpoint Level:
&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="c1"&gt;//Apply a single middleware&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&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="c1"&gt;//Apply multiple middleware&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middleware1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middleware2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&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="c1"&gt;//Or via an array &lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;middlewareArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;middleware1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middleware2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;middlewareArr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Get Object's Keys and Values The Easy Way</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Tue, 11 Feb 2020 20:20:18 +0000</pubDate>
      <link>https://dev.to/islam/get-object-s-keys-and-values-the-easy-way-d8b</link>
      <guid>https://dev.to/islam/get-object-s-keys-and-values-the-easy-way-d8b</guid>
      <description>&lt;p&gt;By using Object methods keys(), values(), and entries(), you can get an array containing object's keys, values, and key values arrays respectively.&lt;/p&gt;

&lt;p&gt;Mithilfe der Objektmethoden keys (), values ​​() und entries () können Sie ein Array abrufen, das die Schlüssel, Werte und Schlüsselwert-Arrays des Objekts enthält.&lt;/p&gt;

&lt;p&gt;Here is the syntax👇&lt;br&gt;
&lt;/p&gt;

&lt;div class="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;obj&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;codehood&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;channel&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;//Get array of object keys&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keys&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="c1"&gt;// ['name', 'type']&lt;/span&gt;

&lt;span class="c1"&gt;//Get array of onject values &lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&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="c1"&gt;// ['codehood', 'channel']&lt;/span&gt;

&lt;span class="c1"&gt;//Get array of key/value arrays&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;entries&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="c1"&gt;// [['name', 'codehood'], ['type', 'channel']]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;👉Follow me on Twitter: &lt;a href="https://twitter.com/islam_sayed8"&gt;https://twitter.com/islam_sayed8&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Turn a String into an Array of Characters: 3 Ways to do so.</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Tue, 04 Feb 2020 17:19:35 +0000</pubDate>
      <link>https://dev.to/islam/how-to-turn-a-string-into-an-array-of-characters-3-ways-to-do-so-16a9</link>
      <guid>https://dev.to/islam/how-to-turn-a-string-into-an-array-of-characters-3-ways-to-do-so-16a9</guid>
      <description>&lt;p&gt;Here are 3 different ways to convert a string into an array of its characters in 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="kd"&gt;const&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&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;//1. Using split() method&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr1&lt;/span&gt; &lt;span class="o"&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;split&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="c1"&gt;//2. Using spread operator&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr2&lt;/span&gt; &lt;span class="o"&gt;=&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="c1"&gt;//3. Using Array.from() method&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr3&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="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow me on:&lt;br&gt;
👉Instagram: &lt;a href="https://www.instagram.com/islamcodehood"&gt;https://www.instagram.com/islamcodehood&lt;/a&gt;&lt;br&gt;
👉Twitter: &lt;a href="https://twitter.com/islam_sayed8"&gt;https://twitter.com/islam_sayed8&lt;/a&gt;&lt;br&gt;
👉Facebook page: &lt;a href="https://www.facebook.com/Codehood-111"&gt;https://www.facebook.com/Codehood-111&lt;/a&gt;...&lt;br&gt;
👉Dev: &lt;a href="https://dev.to/islam"&gt;https://dev.to/islam&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>array</category>
      <category>string</category>
    </item>
    <item>
      <title>How To Copy Properties from an Object To Another?</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Mon, 03 Feb 2020 21:14:21 +0000</pubDate>
      <link>https://dev.to/islam/how-to-copy-properties-from-an-object-to-another-nh1</link>
      <guid>https://dev.to/islam/how-to-copy-properties-from-an-object-to-another-nh1</guid>
      <description>&lt;p&gt;Rest operator is awesome. Here is how to copy properties from one object to another using Spread operator.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//copy properties from an object to another one&lt;/span&gt;
&lt;span class="c1"&gt;//using SPREAD OPERATOR.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;a&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="na"&gt;b&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj2&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;obj1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;//{a: 2, b: 5, c: 6}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>object</category>
    </item>
    <item>
      <title>[SOLVED] How To Merge Arrays Using Spread Operator?</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sun, 02 Feb 2020 13:38:54 +0000</pubDate>
      <link>https://dev.to/islam/solved-how-to-merge-arrays-using-spread-operator-22n4</link>
      <guid>https://dev.to/islam/solved-how-to-merge-arrays-using-spread-operator-22n4</guid>
      <description>&lt;p&gt;Spread Operator is of a great use in case of dealing with arrays and objects. Here how to merge two arrays using it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="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;arr1&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr2&lt;/span&gt; &lt;span class="o"&gt;=&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;arr3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;arr1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3, 4]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Swap Variables' values Using Array Destructuring</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Tue, 28 Jan 2020 15:18:59 +0000</pubDate>
      <link>https://dev.to/islam/how-to-swap-variables-values-using-array-destructuring-207p</link>
      <guid>https://dev.to/islam/how-to-swap-variables-values-using-array-destructuring-207p</guid>
      <description>&lt;p&gt;You can use array destructuring for easy swapping the values of 2 variables together. Here is how 👇&lt;/p&gt;

&lt;p&gt;Sie können die Array-Destrukturierung verwenden, um die Werte von 2 Variablen einfach zu vertauschen.  Hier ist, wie 👇&lt;br&gt;
&lt;/p&gt;

&lt;div class="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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&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;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&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="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;x&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;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//5&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;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>array</category>
      <category>destructuring</category>
    </item>
    <item>
      <title>How to Format Date in Javascript</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sun, 26 Jan 2020 18:00:23 +0000</pubDate>
      <link>https://dev.to/islam/how-to-format-date-in-javascript-4ehl</link>
      <guid>https://dev.to/islam/how-to-format-date-in-javascript-4ehl</guid>
      <description>&lt;p&gt;Format date according to language, place and specify its style of writing in javascript.👇&lt;/p&gt;

&lt;p&gt;Formatieren Sie das Datum nach Sprache, Ort und Schreibweise in Javascript.👇&lt;br&gt;
&lt;/p&gt;

&lt;div class="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;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&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;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;weekday&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;long&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;year&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;numeric&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;month&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;long&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;day&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;numeric&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;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en-US&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;//Sunday, January 26, 2020&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;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ar-EG&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&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;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ar-SA&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&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;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;de-DE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;//Sonntag, 26. Januar 2020&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>date</category>
    </item>
    <item>
      <title>Remove Duplicates The Shortest Way</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sat, 25 Jan 2020 12:38:54 +0000</pubDate>
      <link>https://dev.to/islam/remove-the-duplicates-the-shortest-way-5gm9</link>
      <guid>https://dev.to/islam/remove-the-duplicates-the-shortest-way-5gm9</guid>
      <description>&lt;div class="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;removeDuplicate&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="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Set&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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Remove duplicates from an array in javascript the shortest way.👍Using Set object where it only contains unique values (remove repeated ones). Then with spread operator spreads the values into an array again. 😎&lt;/p&gt;

&lt;p&gt;Entfernen Sie Duplikate auf kürzestem Weg aus einem Array in #Javascript.  Dann spreizt der Operator mit spread die Werte wieder in ein Array.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>array</category>
    </item>
    <item>
      <title>Why do I write?</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sun, 24 Nov 2019 09:22:20 +0000</pubDate>
      <link>https://dev.to/islam/why-do-i-write-3h86</link>
      <guid>https://dev.to/islam/why-do-i-write-3h86</guid>
      <description>&lt;p&gt;A lot of times, I had an idea to write about and then I start thinking should I write about it now? Is it an important thing to write about? Will it get a good reaction from readers, or will any body be interested to read it at all? Is it the good time to post an article, or should I wait to rush hour to get more likes, and comments? &lt;br&gt;
Most of times after this storm of questions the idea is dead before it has been born.&lt;/p&gt;

&lt;p&gt;This morning I was wondering "Why I write?". I have also intended to start a Youtube channel soon, and have prepared for it and waiting for some equipment to start filming the first video. But again, "Why do I do so?". Then I remembered how I was thinking before that it would be a great thing if one could leave something that could change somebody's life to the better. And what can do so more than a useful knowledge even if it is a small tiny piece of knowledge. A way to make this world a better place.&lt;/p&gt;

&lt;p&gt;I decided to write every piece of information that I learn, talk about it, teach it to others without thinking in any reaction, self-fulfillment through it. I decided to make the benefit of others the main goal and any other thing comes after it.&lt;/p&gt;

</description>
      <category>writing</category>
    </item>
    <item>
      <title>With Firefox69 Privacy Is the Default</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sun, 08 Sep 2019 10:23:41 +0000</pubDate>
      <link>https://dev.to/blueturtle/with-firefox69-privacy-is-the-default-4iga</link>
      <guid>https://dev.to/blueturtle/with-firefox69-privacy-is-the-default-4iga</guid>
      <description>&lt;p&gt;&lt;strong&gt;Privacy&lt;/strong&gt; is not an option in &lt;a href="https://www.mozilla.org/en-US/firefox/new/" rel="noopener noreferrer"&gt;Firefox69&lt;/a&gt; browser version. It is &lt;em&gt;default by default&lt;/em&gt;. With the new release of the browser, these are the new features it prsents for its users:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
Block Third-Party Tracking Cookies (by default).&lt;/li&gt;
&lt;li&gt;
Block Cryptominers (by default).&lt;/li&gt;
&lt;li&gt;
Block Fingerprinting (on strict mode - you have to enable it,and I'm going to show you how).&lt;/li&gt;
&lt;li&gt;
Block autoplay video's audio (by default).&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Block Third-Party Tracking Cookies
&lt;/h3&gt;

&lt;p&gt;As mentioned in &lt;a href="https://blog.mozilla.org/blog/2019/09/03/todays-firefox-blocks-third-party-tracking-cookies-and-cryptomining-by-default/" rel="noopener noreferrer"&gt;mozilla blog post&lt;/a&gt;, the new feature works behind-the-scenes to keep a company from forming a profile of you based on their tracking of your browsing behavior across websites — often without your knowledge or consent. Those profiles and the information they contain may then be sold and used for purposes you never knew or intended.&lt;/p&gt;

&lt;p&gt;Here is how to see the blocked list for a website:&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fw4ceomvhcwpkby9glnhf.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fw4ceomvhcwpkby9glnhf.png" alt="Click on info icon beside address bar."&gt;&lt;/a&gt;&lt;/p&gt;
Click on info icon beside address bar.



&lt;p&gt;&lt;br&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkuuixsjtwrpd7st5kysz.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkuuixsjtwrpd7st5kysz.png" alt="Click on Cookies."&gt;&lt;/a&gt;&lt;/p&gt;
Click on Cookies.






&lt;h3&gt;
  
  
  Block Cryptominers
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.techopedia.com/definition/33729/cryptomining" rel="noopener noreferrer"&gt;Cryptominers&lt;/a&gt; access your CPU without your knowledge, make excessive computational operations and this leads to slowing down your machine, and drain your batteries. Allof these for creating cryptocurrency not for you but for them. Firefox blocks them by default. &lt;/p&gt;




&lt;h3&gt;
  
  
  Block Fingerprinting
&lt;/h3&gt;

&lt;p&gt;Fingerprinting scripts have the ability to take a snapshot of your machine's configuration when you visit a website. This snapshot can then be used to track you accross the web. Firefox blocks fingerprinting by enabling &lt;em&gt;strict mode&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To turn on strict mode, you will have to go to &lt;strong&gt;options&lt;/strong&gt;, then chose &lt;strong&gt;Privacy &amp;amp; Security&lt;/strong&gt;, and check &lt;strong&gt;Strict&lt;/strong&gt;.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fydc0r2tvjivq8lcvhz1f.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fydc0r2tvjivq8lcvhz1f.png" alt="How to enable strict mode"&gt;&lt;/a&gt;&lt;/p&gt;
How to enable strict mode






&lt;h3&gt;
  
  
  Block autoplay video's audio
&lt;/h3&gt;

&lt;p&gt;You have three options with videos in Firefox:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Allow audio and video autoplay.&lt;/li&gt;
&lt;li&gt;Block audio only(default).&lt;/li&gt;
&lt;li&gt;Block audio and video until you press the play button.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can alter the setting easily by going to &lt;strong&gt;Privacy &amp;amp; Security&lt;/strong&gt;, then at &lt;strong&gt;Permissions&lt;/strong&gt; locate the &lt;strong&gt;Autoplay&lt;/strong&gt; settings.&lt;/p&gt;




&lt;p&gt;As you see the new Firefox treats user &lt;em&gt;privacy&lt;/em&gt; as a first priority and this is really a win to this browser, and its users.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>browser</category>
      <category>news</category>
    </item>
    <item>
      <title>Images Native Lazy Loading And Its Polyfill</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Sun, 01 Sep 2019 08:34:34 +0000</pubDate>
      <link>https://dev.to/islam/images-native-lazy-loading-and-its-polyfill-29ka</link>
      <guid>https://dev.to/islam/images-native-lazy-loading-and-its-polyfill-29ka</guid>
      <description>&lt;h2&gt;
  
  
  What is Lazy loading
&lt;/h2&gt;

&lt;p&gt;Images, and videos consume a huge amount of data, and affects web performances. If your web page contains many images (or videos), it is true that some -if not many- of them are out of viewport. The normal behaviour of any browser is to load all images during the web page loading which may slow loading time. &lt;/p&gt;

&lt;p&gt;Lazy loading is used to defer images loading until it is about to enter the viewport, and only load the ones that are displayed once the web page loads. Thus decreases the time the web page needs to firstly load.&lt;/p&gt;




&lt;h2&gt;
  
  
  Native Lazy Loading
&lt;/h2&gt;

&lt;p&gt;Developers use javascript plugins to make lazy loading. The good news is that Native lazy loading is now supported in Chrome 75. Using it is very simple. You will only have to add the attribute &lt;code&gt;loading="lazy"&lt;/code&gt; to the &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"image.jpg"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"..."&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  The value of the attribute &lt;code&gt;loading&lt;/code&gt; can be either:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;lazy&lt;/strong&gt;  =&amp;gt; &lt;em&gt;tell the browser to load image just before showing onthe screen.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;eager&lt;/strong&gt; =&amp;gt; &lt;em&gt;make browser load image as soon as possible. This can be added to the images that will appear inside viewport once theweb page loads.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;auto&lt;/strong&gt;  =&amp;gt; &lt;em&gt;make browser determine whether or not to lazily load.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Lazy Loading Plugin
&lt;/h2&gt;

&lt;p&gt;There are many javascript plugins to achieve lazy loading. They depend on replacing &lt;code&gt;src&lt;/code&gt; attribute by &lt;code&gt;data-src&lt;/code&gt; attribute to prevent the browser from loading the image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;data-src=&lt;/span&gt;&lt;span class="s"&gt;"image.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"..."&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then use javascript to detect when image is close to the viewport to copy the value of the &lt;code&gt;data-src&lt;/code&gt; attribute to the &lt;code&gt;src&lt;/code&gt; attribute so the browser can load it.&lt;/p&gt;




&lt;h4&gt;
  
  
  Examples for such libraries:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.andreaverlicchi.eu/lazyload"&gt;vanilla-lazyload.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aFarkas/lazysizes"&gt;lazysizes.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Hybrid Lazy Loading
&lt;/h2&gt;

&lt;p&gt;As explained by &lt;a href="https://twitter.com/verlok"&gt;Andrea Verlicchi&lt;/a&gt; in his &lt;a href="https://www.smashingmagazine.com/2019/05/hybrid-lazy-loading-progressive-migration-native/"&gt;article&lt;/a&gt; on Smashing Magazine: &lt;br&gt;
"&lt;em&gt;Hybrid lazy loading is a technique to use native lazy loading on browsers that support it, otherwise, rely on JavaScript to handle the lazy loading.&lt;/em&gt;"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!--Load this hero image as soon as possible--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"hero.jpg"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"eager"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;".."&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!--Lazy load these images as user scroll down--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;data-src=&lt;/span&gt;&lt;span class="s"&gt;"image1.jpg"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;".."&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"lazyload"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;data-src=&lt;/span&gt;&lt;span class="s"&gt;"image2.jpg"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;".."&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"lazyload"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;data-src=&lt;/span&gt;&lt;span class="s"&gt;"image3.jpg"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;".."&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"lazyload"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Check for browser support.&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loading&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;HTMLImageElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&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;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lazyload&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;//copy the value of the data-src to the src.&lt;/span&gt;
    &lt;span class="nx"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//if no support, async load the lazysizes plugin&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="o"&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;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;script&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;async&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="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;.&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;https://cdnjs.cloudflare.com/ajax/libs/lazysizes/4.1.8/lazysizes.min.js&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;script&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;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bE2jCvZAdqs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
Lazy loading in action.






&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://addyosmani.com/blog/lazy-loading/"&gt;Native image lazy-loading for the web!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/2019/05/hybrid-lazy-loading-progressive-migration-native/"&gt;Hybrid Lazy Loading: A Progressive Migration To Native Lazy Loading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tutorial</category>
      <category>html</category>
      <category>performance</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Now Use Material-UI Icons With Super Ease</title>
      <dc:creator>Islam Sayed</dc:creator>
      <pubDate>Wed, 28 Aug 2019 12:27:56 +0000</pubDate>
      <link>https://dev.to/blueturtle/now-use-material-ui-icons-with-super-ease-3f54</link>
      <guid>https://dev.to/blueturtle/now-use-material-ui-icons-with-super-ease-3f54</guid>
      <description>&lt;p&gt;Instead of searching for icons in &lt;a href="https://material.io/tools/icons/?style=baseline" rel="noopener noreferrer"&gt;Material icons&lt;/a&gt;, and then trying to figure out what the required icon component name would look like, now you can directly search for any icon among 1,000+ official Material icons converted to svg icon components.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1164302839033794561-357" src="https://platform.twitter.com/embed/Tweet.html?id=1164302839033794561"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1164302839033794561-357');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1164302839033794561&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The search feature is super easy. After you select an icon a pop up opens with the import of such icon.&lt;/p&gt;

&lt;p&gt;You can also choose between icon styles (Filled, Outlined, Rounded, Two tone, and Sharp) in the left side bar.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/xN46x0piLZE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;As announced in Material-UI &lt;a href="https://twitter.com/MaterialUI/status/1164303661880754177" rel="noopener noreferrer"&gt;tweet&lt;/a&gt; that their synonyms list is not perfect yet. And they will refine it based on the search usage.&lt;/p&gt;

</description>
      <category>react</category>
      <category>news</category>
    </item>
  </channel>
</rss>
