<?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: Petar Prokopenko</title>
    <description>The latest articles on DEV Community by Petar Prokopenko (@petarprok).</description>
    <link>https://dev.to/petarprok</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%2F27618%2F5d250ff9-405b-477a-86d7-f46ee2563b0b.jpg</url>
      <title>DEV Community: Petar Prokopenko</title>
      <link>https://dev.to/petarprok</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/petarprok"/>
    <language>en</language>
    <item>
      <title>NodeJS express ACL architecture</title>
      <dc:creator>Petar Prokopenko</dc:creator>
      <pubDate>Sun, 19 Jan 2020 19:03:38 +0000</pubDate>
      <link>https://dev.to/petarprok/nodejs-express-acl-architecture-1h80</link>
      <guid>https://dev.to/petarprok/nodejs-express-acl-architecture-1h80</guid>
      <description>&lt;p&gt;Recently I started working on nodejs server which is built using express framework. While I was developing server I came across a lot of challenges. One of those challenges was ALC. &lt;/p&gt;

&lt;p&gt;For those who don’t know what ACL is, ACL stands for access control list. Just like the name says it is access control list, and it is a way to limit user to use specific resources. For example: admin can read, write and delete countries and the only thing users can do is read countries. Pretty Simple right?&lt;/p&gt;

&lt;p&gt;For the architecture design I could have gone online and find the best one and I will be set, but that doesn’t sound like fun.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution must meet these criteria:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Modular&lt;/li&gt;
&lt;li&gt;Easy to change and maintain&lt;/li&gt;
&lt;li&gt;optional: future profed &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So I started thinking and finding the best solution. &lt;/p&gt;

&lt;p&gt;After a couple of hours of thinking I came to this solution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;get&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;user&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;admin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;post&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;admin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;put&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;admin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;delete&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;admin&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;This solution was not good because when you need to change permission for the user by role it will be confusing and hard to read when you have large amounts of them. I liked how HTTP methods are in one object and kinda easy to spot. &lt;/p&gt;

&lt;p&gt;The next intercession of the previous design looked something like this:&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;accessByRole&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;admin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;get&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;post&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;put&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;delete&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;/api/country&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="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;get&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;post&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;/api/another-route&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This version now fixes readability of the resources by user role but as you can see now resource URL has been repeated many times. That is bad because when you change that resource than you need to search all files so that you can also change things there. That is not good, because you will lose too much time trying to find them all and update them which is not very productive. With that in mind and also with two roles which have the same urls there is a case that they can use. For that case this is not good. On to the drawing board we go.&lt;/p&gt;

&lt;p&gt;After a quality sleep and rest I got back to it. Decided to go with good old array to help me solve some issues. The final design looks something like this:&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;moduleAccess&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="na"&gt;roles&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;roles.ADMIN&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;get&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;post&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="na"&gt;put&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="na"&gt;delete&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="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;roles&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;roles.USER&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;get&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;post&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;put&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;/api/country&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="na"&gt;delete&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;/api/country&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;There she shines. This version fixes multiple roles and I kept the methods object. Like we noticed in previous design url where there was repeating which was not good. I found solution where I have separated file for resource URL. That file is in use for routes and acl. That way url were not repeating and you have one place for all the routes in module. I’m considering putting routes in one JSON file for a whole project, but that is for another day. &lt;/p&gt;

&lt;p&gt;This was my first tech blog post. What do you think? Please let me know what you think in the comments below.&lt;/p&gt;

&lt;p&gt;Have a nice day and peace out guys!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>JS frameworks! </title>
      <dc:creator>Petar Prokopenko</dc:creator>
      <pubDate>Sat, 07 Apr 2018 16:36:56 +0000</pubDate>
      <link>https://dev.to/petarprok/js-frameworks--5cj4</link>
      <guid>https://dev.to/petarprok/js-frameworks--5cj4</guid>
      <description>&lt;p&gt;As web developer that works on large application that we are building on top mean stack,&lt;br&gt;
it will be boring to make my project on express and angularJS&lt;br&gt;&lt;br&gt;
For backend stuff we use express and for front end we used angularjs to make magic happen.&lt;/p&gt;

&lt;p&gt;I dont have any expirince with most of this framework, all information is from community, Collected&lt;br&gt;
in one place, to help you find perfect framework for your next project.&lt;/p&gt;

&lt;p&gt;NOTE: I started writing this article in 2017, and if some stuff is not correct,&lt;br&gt;
I'm sorry...&lt;/p&gt;

&lt;p&gt;After reading a lot of articles about various frameworks/libraries list looks like this:&lt;/p&gt;

&lt;h1&gt;
  
  
  Frontend
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Angular(maintained by mighty Google)&lt;/li&gt;
&lt;li&gt;React(maintained by Facebook)&lt;/li&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;li&gt;Ember&lt;/li&gt;
&lt;li&gt;Meteor&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Backend
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;express&lt;/li&gt;
&lt;li&gt;koa&lt;/li&gt;
&lt;li&gt;TotalJS&lt;/li&gt;
&lt;li&gt;Meteor&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Something about all of these frameworks:
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Angular
&lt;/h2&gt;

&lt;p&gt;Angular is completely new front end framework made on TypeScript.&lt;br&gt;
Angular is maintained by Google, and does not have anything in common with his     younger brother AngularJS except name.&lt;/p&gt;

&lt;h4&gt;
  
  
  Good:
&lt;/h4&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1.Classes liker php, c#, c++....
 2.Components and the way its organized
 3.Modules
 4.Typescript
 5.There are a loot of tools that can help you build your apps quickly and easily,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  Bad:
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1.Type script
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  ReactJS
&lt;/h2&gt;

&lt;p&gt;The most popular framework today is made and maintaind by Facebook.&lt;br&gt;
React is javaScript library that helps you build your front end part of the website. With small minifed file size,&lt;br&gt;
your page will load superfast and be responsive is short amounts of time. Good for new javascrpit developers&lt;/p&gt;
&lt;h4&gt;
  
  
  Good:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Easies to understand, and thats the reason for popularity&lt;/li&gt;
&lt;li&gt;custom tags(simular like in angualar)&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  Bad:
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.I realy dont know any bad thing, let me know in comments and I will update it. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Vue
&lt;/h2&gt;

&lt;p&gt;Vue is front end framework similar to React and Angular. Vue is like React and AngularJS(angular 1)&lt;br&gt;
      got married and get child, and that child is vue, which is not so bad consider that one of parent is facebook's product.Performance is similar to react(vue pulls ahead because DOM loading time, but just a little bit)&lt;/p&gt;
&lt;h4&gt;
  
  
  good:
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1. CLI project generator(template, webpack)
 2. official support for routing package 
 3. template(custom tags, elements, attributes and more)
 4. easy to odrzavanje
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  bad:
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1. template(written in js)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;I know this article looks like it was put together fast, some stiff is out of order...&lt;br&gt;
My initial plan with was to make article that was about best js framework in 2017, but stuff and life happen, some time passed away and I forgot about it. I hope this helped and if you are interested in reading some articles about some frameworks from list. I read most of them and they are supper awesome.&lt;/p&gt;

&lt;p&gt;I just want to thanks all amazing creators and writers who wrote these articles:&lt;/p&gt;

&lt;p&gt;Links to commity and review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi"&gt;https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.quora.com/Should-I-learn-Express-js-or-Koa-js-for-node"&gt;https://www.quora.com/Should-I-learn-Express-js-or-Koa-js-for-node&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nodeframework.com/"&gt;http://nodeframework.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/5-best-javascript-frameworks-in-2017-7a63b3870282"&gt;https://hackernoon.com/5-best-javascript-frameworks-in-2017-7a63b3870282&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.telerik.com/topics/web-development/javascript-2017-libraries-frameworks/"&gt;http://developer.telerik.com/topics/web-development/javascript-2017-libraries-frameworks/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.javascripting.com/?p=2"&gt;https://www.javascripting.com/?p=2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aurelia.io/"&gt;http://aurelia.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.discoversdk.com/blog/5-javascript-frameworks-to-learn-in-2017"&gt;http://www.discoversdk.com/blog/5-javascript-frameworks-to-learn-in-2017&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.upwork.com/hiring/development/15-node-js-frameworks-to-know/"&gt;https://www.upwork.com/hiring/development/15-node-js-frameworks-to-know/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.toptal.com/nodejs/nodejs-frameworks-comparison"&gt;https://www.toptal.com/nodejs/nodejs-frameworks-comparison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.mybridge.co/top-10-angular-2-articles-for-the-past-month-v-june-37bb96b667a3"&gt;https://medium.mybridge.co/top-10-angular-2-articles-for-the-past-month-v-june-37bb96b667a3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c"&gt;https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c"&gt;https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.quora.com/What-is-your-review-of-React-JS-Library"&gt;https://www.quora.com/What-is-your-review-of-React-JS-Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.romexsoft.com/blog/js-frameworks-comparison/"&gt;https://www.romexsoft.com/blog/js-frameworks-comparison/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuejs.org/v2/guide/comparison.html"&gt;https://vuejs.org/v2/guide/comparison.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts/table.html"&gt;https://rawgit.com/krausest/js-framework-benchmark/master/webdriver-ts/table.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.agriya.com/blog/2017/05/15/pros-and-cons-of-vue-js-framework/"&gt;https://www.agriya.com/blog/2017/05/15/pros-and-cons-of-vue-js-framework/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.codeship.com/consider-vuejs-next-web-project/"&gt;https://blog.codeship.com/consider-vuejs-next-web-project/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pixeljets.com/blog/why-we-chose-vuejs-over-react/"&gt;http://pixeljets.com/blog/why-we-chose-vuejs-over-react/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://colorlib.com/wp/javascript-frameworks/"&gt;https://colorlib.com/wp/javascript-frameworks/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.valuecoders.com/blog/technology-and-apps/top-javascript-frameworks-list-comparison/"&gt;https://www.valuecoders.com/blog/technology-and-apps/top-javascript-frameworks-list-comparison/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sitepoint.com/top-javascript-frameworks-libraries-tools-use/"&gt;https://www.sitepoint.com/top-javascript-frameworks-libraries-tools-use/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.quora.com/What-are-the-pros-cons-of-node-js-web-frameworks-Express-js-Hapi-js-Koa-js"&gt;https://www.quora.com/What-are-the-pros-cons-of-node-js-web-frameworks-Express-js-Hapi-js-Koa-js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netguru.co/blog/pros-cons-use-node.js-backend"&gt;https://www.netguru.co/blog/pros-cons-use-node.js-backend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jssolutionsdev.com/blog/express-mobile-app-development/"&gt;https://jssolutionsdev.com/blog/express-mobile-app-development/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you all for reading and have nice day :)    &lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>Async done simple</title>
      <dc:creator>Petar Prokopenko</dc:creator>
      <pubDate>Sun, 17 Sep 2017 19:23:59 +0000</pubDate>
      <link>https://dev.to/petarprok/async-done-simple</link>
      <guid>https://dev.to/petarprok/async-done-simple</guid>
      <description>&lt;p&gt;Javascript is single core programing language. That can be good thing if you want to interact with HTML DOM(document object model), or you are doing small project. In other cases if you are working on mean stack(MongoDB, express, angularjs, node.js) or other system you are probably using async functionality.&lt;/p&gt;

&lt;p&gt;How does it works:&lt;/p&gt;

&lt;p&gt;Best way to understand is from example. Let's say that you are in a coffee shop and you want one cup of black coffee. You order you coffee from Maria, she call's you when is ready, and you get your coffee. Your desire for coffee is new async call, When Maria say wait for coffee that is promise. Maria calls you that your order is ready is resolve. if there are any problems Maria will tell you and that is reject.&lt;/p&gt;

&lt;p&gt;If you are using "vanilla" javascript async without any packages it looks something like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function myAsyncFunction(url) {
    return new Promise((resolve, reject) =&amp;gt; {
        Your code goes here
    });
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It looks simple, we sould all do it like that! &lt;/p&gt;

&lt;p&gt;NO!&lt;/p&gt;

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

&lt;p&gt;For me personally, putting all code inside another function is bad for reading the code, it can get messy, clutted and hard to read. If I can, I will never put my code inside of another function(exept for callback functions).&lt;/p&gt;

&lt;p&gt;Its good for small functions, that dont have to many line, and they are simple.&lt;/p&gt;

&lt;p&gt;Then I thought to myself how I can improve it, make it object oriented and simple. After week and a half I came with this solution:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exports.simpleAsync = function () {
    this.resolve;
    this.reject;
    this.promise = new Promise((resolve, reject) =&amp;gt; {
        this.resolve = resolve;
        this.reject = reject;
    });
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It is simple, clean, lightweight and easy to use. It can be used similarly like good old q pacakge for async.&lt;/p&gt;

&lt;p&gt;How should you use it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var Async = require('simplify-async').simpleAsync;

    function test() {
        var promise = new Async();

        setTimeout(() =&amp;gt; {
        promise.resolve("Have nice day");
        }, 5000);

        return promise.promise;
    }

test().then((response) =&amp;gt; {
    console.log(response)   
}).catch((err) =&amp;gt; {
    console.log(err);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Let me expalin what is goind on:&lt;/p&gt;

&lt;p&gt;Test is async function. First thing is that you have to make new instance of Async package that you imported with require function. Next is that you have to return promise, because if you don't js will return error that goes something like this: cannot read property .then of undefined. After you get your data, all you need to do is call promise.resolve funtion and async call will be finished.&lt;/p&gt;

&lt;p&gt;I hope this small, and super simple async package will help you do more!&lt;/p&gt;

&lt;p&gt;If you want to checkout my package it's on github:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/PetarProkopenko/simple-async"&gt;https://github.com/PetarProkopenko/simple-async&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to npm package is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/simplify-async"&gt;https://www.npmjs.com/package/simplify-async&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: I'm not doing this just for promotion, I'm doing it becuse I love programming and I want to contribute to community.&lt;br&gt;
This is my first article and package, if you have any idea let me know, or if I did something wrong...&lt;br&gt;
Thank you for your time and for reading, I hope you have nice day.&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>Hi, I'm Petar Prokopenko</title>
      <dc:creator>Petar Prokopenko</dc:creator>
      <pubDate>Wed, 26 Jul 2017 16:09:54 +0000</pubDate>
      <link>https://dev.to/petarprok/hi-im-petar-prokopenko</link>
      <guid>https://dev.to/petarprok/hi-im-petar-prokopenko</guid>
      <description>&lt;p&gt;I have been coding for ~7 years.&lt;/p&gt;

&lt;p&gt;You can find me on Twitter as &lt;a href="https://twitter.com/peters_byts" rel="noopener noreferrer"&gt;@peters_byts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Currently i live in Novi Sad, Serbia&lt;/p&gt;

&lt;p&gt;I mostly program in these languages: js, php.&lt;/p&gt;

&lt;p&gt;I am currently learning more about javascript.&lt;/p&gt;

&lt;p&gt;Nice to meet you, and expect new article about best JS frameworks(2017) soon. &lt;/p&gt;

&lt;p&gt;Have nice day.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
  </channel>
</rss>
