Library = a toolbox
Framework = workshop
A framework used for building complex UI applications
Built and used in typescript
Angular 2 and 4 basically the same
Written in Typescript (easy for Java and c# developers to understand)
Angular 2 & 4 are more ‘compenant” based while AngularJS was controller driven
Has mobile app form factor in mind (AngularJS didn’t)
Weather.com, upwork.com, freelancer.com, netflix.com = All built using AngularJS
From Facebook & Focuses mainly on “V” (view) part of MVC
Used in conjunction with angular sometimes
ReactJS.NET Used with ASP.NET MVC 4 or 5 or even core mvc
React JS can be a good choice when you are going to develop a dynamic consumer-facing, UI-centric application that rerenders frequently
Key Features:
Simple yet powerful library to build interactive web interfaces
Works in tandem with ASP.NET MVC and allows to keep web app untouched while at same time adding flaires of Vue into your views
Easy to migrate from AngularJS to vue
Allows you to bind data models with your presentation layer
Combines server-side rendering of DOM (react) and two way data binding (Angular JS)
Lot of features out of the box (shouldn’t consider if you want flexibilitity)
Objects can bind properties to each other ( so changing propert of one object will update the other object)
Nested views (like react)
Groupon, vine, and apple music desktop applicatoin
Easy to learn and lightweight
Best for single page applications
MVP pattern
Controllers Optional
If most of UI remaining same, but only certain UI elements change with user interactions…use backbone.js
In conjuction with ASP.NET Web API... HTTP features:
Pinterest, foursquare, Walmart use Backbone.js
SPAS (single page applications)
Node.js: This is a server-side JavaScript framework that you can use in conjunction with other client-side (read UI-specific) frameworks. This is a key component of MEAN stack that is gaining a lot of popularity when building entire apps on JavaScript-based stack.
D3.js: fully focused on chart related visualizations. This library comes with quite a lot of components that help you create cool charts.
Babylon.js: If you want to build some cool 3D games on browser, then you should use Babylon.JS.
MEAN Stack
As Frontend developers, we usually face only two significant challenges — to display data and to store data. The later being far harder to maintain over time, as it is so convenient to ignore it — that is until your project becomes virtually unmaintainable several months later.
React state management
Angular, Ember, and VueJS serve their own build-in state management solutions — based on the idea of Observables. While not necessary, there are also additional libraries⁵ like ngRx, Akita and Vuex.
For any other framework or Vanilla JavaScript, you can use Redux, Mobx, or your own state management solution. The main goal is to ensure that whole application has the same source of truth — this can be a service, a library, or a simple state Observable.
Web Component Links
Each JS framework has its own API for reusable components. A react-video-player won’t work in Ember, and a ember-preload won’t work in Vue. For example, Matrix.org’s JavaScript SDK is tied to React. Other JS SDK’s use an iframe (Facebook Like Button and other ad-tech SDK’s usually go this route) or abstain from providing any UI functionality at all (like WebTorrent).
Web Components, since they act exactly like built-in HTML elements, should work within any framework. If your framework can render arbitrary HTML elements, then it can render a custom HTML element. If you’re just building an app, it doesn’t matter; just render the HTML that you want in your template language.
the browser global window object has a property called customElements — we call the define method on the property to create our custom HTML element. It takes three arguments, the last one is optional.
WebComponentButton class has lifecycles out of the box. If you come from the React, Vue, Angular, etc., this might be familiar to you already. Lifecycle methods let us control what happens when certain actions happen. For example, when the browser renders the button, we want to attach styles to it.
customElements.define(name, constructor, options);
Webpack Links
Webpack is a tool that lets you compile JavaScript modules. It’s also known as a module bundler. Given a large number of files, it generates a single file (or a few files) that run your app.
Webpack is not limited to being used on the front-end, but is useful in backend Node.js development as well.
There are many predecessors of Webpack and lots of similarities in what those tools and Webpack do. The main difference is that those tools are known as task runners, while Webpack was born as a module bundler.
Webpack is a more focused tool. You just need to specify an entry point to your app (it could even be an HTML file with script tags) and webpack analyzes the files and bundles them in a single JavaScript output file that includes everything you need to run the app.
Webpack possible operations:
One nice feature of the watch mode is that the bundle is only changed if the build has no errors. If there are errors, watch will keep listening for changes, and try to rebuild the bundle, but the current, working bundle is not affected by those problematic builds.