<?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: Nuno Lemos</title>
    <description>The latest articles on DEV Community by Nuno Lemos (@itsnunolemos).</description>
    <link>https://dev.to/itsnunolemos</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%2F264093%2F9c039fb4-3c43-432d-b0c9-a2dea5301a99.jpg</url>
      <title>DEV Community: Nuno Lemos</title>
      <link>https://dev.to/itsnunolemos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsnunolemos"/>
    <language>en</language>
    <item>
      <title>Really understand JavaScript</title>
      <dc:creator>Nuno Lemos</dc:creator>
      <pubDate>Thu, 21 Nov 2019 22:03:40 +0000</pubDate>
      <link>https://dev.to/itsnunolemos/really-understand-javascript-2bg0</link>
      <guid>https://dev.to/itsnunolemos/really-understand-javascript-2bg0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Frameworks, Libraries, Transpilers, Bundlers… What is this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With JavaScript growing, multiple frameworks, libraries, transpilers and bundlers have appeared.&lt;br&gt;
For developers is complicated understand all this "concepts" and most of them just "follow the wave" 🏄 and don't try to understand how this work.&lt;/p&gt;

&lt;p&gt;In this article I will try explain all this. &lt;br&gt;
&lt;strong&gt;Let's start!&lt;/strong&gt; 💪🍿&lt;/p&gt;

&lt;h1&gt;
  
  
  ECMAScript
&lt;/h1&gt;

&lt;p&gt;Firstly what is this? What is difference between ECMAScript and JavaScript?&lt;/p&gt;

&lt;p&gt;Before the fame, the creators of JavaScript joined to the ECMA (European Computer Manufacturers Association) to create a new language with patterns and normative. &lt;br&gt;
As the name JavaScript has been previously patented (by Sun Microsystems) they chose ECMAScript to the name.&lt;/p&gt;

&lt;p&gt;The general-purpose core of ECMAScript has standardization. With this has been possible embedded this language in several web browsers.&lt;/p&gt;

&lt;h1&gt;
  
  
  ECMAScript 2009 (ES5), ECMAScript 2015 (ES6)
&lt;/h1&gt;

&lt;p&gt;ES5 and ES6 are a versions of ECMAScript. &lt;br&gt;
Currently we can use the version 2018 but modern web browsers only read the version 2015 (ES6) and in some cases, like IE, is needed use ES5.&lt;/p&gt;

&lt;p&gt;🖥 Check-out the web browsers support:&lt;br&gt;
&lt;a href="https://caniuse.com/#search=ES5" rel="noopener noreferrer"&gt;ES5&lt;/a&gt;&lt;br&gt;
&lt;a href="https://caniuse.com/#search=ECMAScript%202015" rel="noopener noreferrer"&gt;ES6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ok, but is possible I'm develop my app in current ECMAScript version and this working in several web browsers?&lt;br&gt;
YES! 🎉&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Transpilers ✒️
&lt;/h1&gt;

&lt;p&gt;The most of web browsers (in this time) don't support ES6 and for resolve this limitation is needed use one &lt;strong&gt;transpiler&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The transpiler compiles code to same level of code/abstraction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://babeljs.io/" rel="noopener noreferrer"&gt;Babel&lt;/a&gt; is the best example. He take our code in ES6 (for example) and transform all code in ES5.&lt;br&gt;
With this we have a bigger range of web browsers compatibility.&lt;/p&gt;

&lt;h1&gt;
  
  
  Frameworks and Libraries
&lt;/h1&gt;

&lt;p&gt;Frameworks and Libraries are both code written and shared by someone else to make us more agile.&lt;/p&gt;

&lt;p&gt;The difference in both is: &lt;br&gt;
In &lt;strong&gt;Frameworks&lt;/strong&gt; all the control flow is already there. You need follow their own pattern and structure. &lt;strong&gt;Framework is always the commander!&lt;/strong&gt;&lt;br&gt;
In &lt;strong&gt;Libraries&lt;/strong&gt; you decide the flow. &lt;strong&gt;You are the commander!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;strong&gt;Angular&lt;/strong&gt; is a &lt;strong&gt;Framework&lt;/strong&gt;. &lt;br&gt;
Angular is a MVC (Model-View-Controller), have a structure and you can just start coding. You don't need decide which routing libraries to use for example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React&lt;/strong&gt; is a &lt;strong&gt;Library&lt;/strong&gt;.&lt;br&gt;
React gives freedom. It only provides the "view" in MVC and you need resolve M and C.&lt;/p&gt;

&lt;h1&gt;
  
  
  Bundlers ⚒
&lt;/h1&gt;

&lt;p&gt;The most popular is &lt;a href="https://webpack.js.org/" rel="noopener noreferrer"&gt;webpack&lt;/a&gt;.&lt;br&gt;
Webpack is a tool thats make a combination and minification of JavaScript and CSS files. Also, it can combine and minify all image files.&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%2F5e1a4cmyzp3vmpckj5ll.gif" 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%2F5e1a4cmyzp3vmpckj5ll.gif" alt="From webpack"&gt;&lt;/a&gt;&lt;/p&gt;
From https://webpack.js.org/



&lt;p&gt;Let's take an example. You have this files:&lt;br&gt;
&lt;em&gt;app.js&lt;/em&gt;&lt;br&gt;
&lt;em&gt;utils.js&lt;/em&gt;&lt;br&gt;
&lt;em&gt;loadsh.js&lt;/em&gt;&lt;br&gt;
&lt;em&gt;global.scss&lt;/em&gt;&lt;br&gt;
&lt;em&gt;typography.scss&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That tool will bundle this files in only two files:&lt;br&gt;
&lt;strong&gt;bundle.js&lt;/strong&gt; and &lt;strong&gt;style.css&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Much more I could to say but, the message is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more about JavaScript and make your own choices.&lt;br&gt;
Don't follow the masses and have your own opinion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading. 🙌&lt;/p&gt;

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