
Regularly, some JS-library appears, which is beginning to be noisyly discussed in various forums. At first, enthusiasm gradually increases, and then the community is quickly divided into opposing camps, which relate differently to the new product. It would be an incredible feat to consider all the common JS frameworks and libraries, so we want to offer you a list of the most popular and most influential tools for front-end development. And at the same time we will give some recommendations on their use.
But before we get to the point, we want to clarify:
')
- No need to break copies, if any of your favorite frameworks or libraries are missing from this list.
- Stay tuned for the tools you use. Recently, cross-browser and cross-device support has been actively introduced. For example, you can use a scanner that tells you if older versions are compatible with most devices.
AngularJS
This is a popular enterprise-level
framework used by many developers to create and maintain complex web applications. Perhaps it would be more correct to describe it as VERY popular. Angular is used by companies like Domino's Pizza, Ryanair, iTunes Connect, PayPal Checkout and Google. This is an open source framework supported by Google. Angular is positioned as an “HTML extension” for creating complex web applications. If you are familiar with
TypeScript , then you may be interested to know
that Angular 2 is written on it .
Angular - MVC-framework. It implements bilateral data-binding between models and views (view). This approach allows you to automatically update on both sides whenever data changes. In Angular, you can create reusable view components (View Component). And thanks to its service framework (service framework), it is easy to build the interaction between the backend and the frontend. And finally, Angular is pure JavaScript.
Recommendations for use : if you are creating a complex frontend application and you need a single modular framework that allows you to solve any problems.
GitHub :
https://github.com/angular/angular.angularOffsite :
angularjs.orgReactJS
One of the most popular
JS projects last year. Not talking about him, probably, only very lazy. At almost every conference, one could listen to a presentation on React and other libraries of this family (
Flux ,
Redux ).
React - JS-library for creating user interfaces. This is an open source project, mostly developed on Facebook, with the participation of a number of large companies. From the point of view of the MVC model, React belongs to V, practically ignoring all other aspects of the application architecture. It implements the component layer, which facilitates the creation and combination of UI elements. Interface rendering is optimized by abstracting DOM, which also allows drawing React from Node.js. In addition, React implements a one-way reactive data flow, which makes the tool much easier to understand and master compared to other frameworks.
Sometimes React replaces V in Ember and Angular.
Recommendations for use : if you need a powerful framework for the view layer (view layer), and the rest of the application levels as much as. Or, you can use React as an addition to Angular, Backbone, or Ember. Finally, React will be useful when creating an isomorphic web framework.
GitHub :
https://github.com/facebook/reactOffsite :
Facebook.imtqy.com/react/Backbone
This
framework is known for its simplicity and fits in one JS-file. The author of Backbone is
Jeremy Ashkenas , who also created
CoffeScript and
Underscore.js . The framework especially likes to use development teams creating simple web-based web applications that don’t need monsters like Angular and Ember.
Backbone is a full-featured routing MVC framework. With the help of models, key-value binding and events for processing data changes are implemented. Models and collections can interact with the RESTful API. Views use declarative event handling, and the router manages state using a URL. It is enough to create a one-page application without redundant functionality and complexity.
Recommendations for use : this is a great GOTO framework for creating simple web applications.
GitHub :
https://github.com/jashkenas/backbone/Offsite :
backbonejs.orgEmber
In this rather popular
framework, the emphasis is on improving the programmer's productivity. One of the key Ember developers is Yehuda Katz, who was actively involved in creating Ruby on Rails and jQuery. Ember is positioned as a “framework for creating ambitious web applications”, which will not waste your time. He behaves very arbitrarily and decides many things on his own, putting the developer before the fact.
Ember also refers to MVC frameworks. It uses template and built-in view engine, which automatically updates data in the same way as Angular, Backbone and React. Ember supports
web component technology that allows HTML to be extended with its own tags (like Angular). Also, the framework has a built-in routing engine and models that can work with your RESTful API.
Recommendations for use : if you need a framework that just works. Ember will also be useful for those who do not need flexibility due to limited budget or tight deadlines.
GitHub :
https://github.com/emberjs/ember.jsOffsite :
emberjs.comjQuery
The jQuery library needs no introduction. Only thanks to her cross-browser sites have become a reality, and the web has found a modern look. jQuery was one of the reasons why most major browsers began to support
web standards . The jQuery Foundation's mission is to “improve the open web so that it is accessible to everyone through the development and support of open source software, as well as collaboration with the developer community.”
jQuery is the most used JS library in the world, simplifying DOM work, event handling, animation, and AJAX usage.
Recommendations for use : this library can always be used. Except when you prefer a more compact version like
Zepto .
GitHub :
https://github.com/jquery/jqueryOffsite :
jquery.comUnderscore and lodash
Sometimes the standard features of JavaScript do not allow us to work with full dedication. There is always a lack of some auxiliary function, or a function that would simplify the code. Underscore and lodash are JS libraries offering over 100 support functions and other goodies without having to do monkey patching for embedded JS objects. In particular, you will see things like
map, filter, invoke, reduce, template, throttle, bind, extend, pick, clone
and more.
Recommendations for using Underscore : if you need one single JS file that will immediately make your life as a programmer easier.
GitHub :
https://github.com/jashkenas/underscoreOffsite :
underscorejs.orgRecommendations for using lodash : if you need a modular and slightly faster version of Underscore, with improved support for AMD and community-created plugins.
GitHub :
https://github.com/lodash/lodashOffsite :
lodash.comD3.js
One of the standard requirements for web applications is data visualization and graphing. And in this area, the de facto standard is D3.js. This is one of the most popular projects on Github, it is used in many companies. D3 forms the basis of a pile of libraries for building diagrams, graphs and other types of visualization.
D3 allows you to take data from any sources and convert to DOM / SVG / CSS. The project supports modern web standards, so do not worry about the possibility of facing some proprietary formats like Flash or Silverlight.
Recommendations for use : for visualization of any kind.
GitHub :
https://github.com/mbostock/d3Offsite :
d3js.orgBabylon.js
Want to make a cross-browser game that fully complies with modern web standards? Then take a look at Babylon.js, a WebGL-based 3D engine and JavaScript. It allows you to create incredible high-quality games with realistic physics, sound, particle system and other beauty.
Recommendations for use : when creating any games and complex 3D scenes.
GitHub :
https://github.com/BabylonJS/Babylon.jsOffsite :
babylonjs.comThree.js
This is a fairly compact 3D library that allows rendering three-dimensional scenes on HTML5 canvas (canvas), SVG and WebGL without using full-fledged game engines. Three.js is quite easy to use, at the office you can see all sorts of
ways to use it .
Recommendations for use : if you need a simple 3D-visualization, which can be displayed on the canvas.
GitHub :
https://github.com/mrdoob/three.js/Offsite :
threejs.orgMocha and Chai
For a long time, testing JavaScript code has been incredibly annoying. Although the same can be said about testing code in any other language. But every developer should be testing from time to time, although many of us dislike this activity and avoid it. However, two libraries with the poetic names Mocha and Chai can help you in overcoming the dislike of the testing process.
Mocha is a JS framework that makes it easy to test asynchronous code in a node module or browser application. Mocha tests have improved exception tracing quality and can be run in batches.
Chai is a TDD / BDD assertion library that can be used with Mocha and allows you to express tests in a simple, readable form.
Recommendations for use : always! Test your code and make the world a little better.
Mocha GitHub :
https://github.com/mochajs/mochaOffsite Mocha :
mochajs.orgGitHub Chai :
https://github.com/chaijs/chaiOffsite Chai :
chaijs.comKarma
Since Mocha and Chai appeared in the list, it is necessary to include here and the test runner, which allows for continuous integration testing. Karma helps you automate Mocha and Chai tests in different browsers.
Since not all browsers can work on any platforms, then pay attention to a couple of free tools that will facilitate your testing process:
Recommendations for use : for comprehensive testing of your applications, as well as if you want to make sure that the tests will be passed on all browsers.
GitHub :
https://github.com/karma-runner/karmaOffsite :
karma-runner.imtqy.comPhantomJS
It would not be too economical to launch browsers entirely during the test run, this leads to an excessive consumption of memory and processor resources. PhantomJS allows you to run a headless version of WebKit, the engine used in Safari, and earlier also in Chrome (today it uses Blink). So directly from the JavaScript API, you can get rid of tests, make screenshots, monitor the network, and automate browsing.
Recommendations for use : if you need to get rid of an extensive number of tests, page operations and network requests.
GitHub :
https://github.com/ariya/phantmjsOffsite :
phantomjs.orgGrunt and Gulp
During the preparation of rolling out sites for production, we usually have to perform such tasks as improving performance using JavaScript and CSS minification, compiling CoffeeScript / TypeScript, unit testing, etc. Surely you already have at hand a package of tools that prepare the site for deployment to production. But if not, then we can recommend Grunt or Gulp as an executor of tasks (task runner). For both written a myriad of plug-ins that allow you to do anything with the site in preparation for deployment.
Recommendations for using Grunt : if you prefer to write configuration files and you do not care that the task executor can generate intermediate files.
GitHub Grunt :
https://github.com/gruntjs/gruntOffsite Grunt :
gruntjs.comRecommendations for using Gulp : if you prefer to write code instead of configuring, and would not mind using Node.js streams to increase performance.
GitHub Gulp :
github.com/gulpjs/gulpOffsite Gulp :
gulpjs.comBabel
JavaScript as a language develops rapidly. For example,
ECMAScript 2015 was released last summer, and many of its main features are already implemented in a number of browsers. If you are interested in the issue of compatibility with ECMAScript 2015, you can study the
table from
kangax . Please note that the latest versions of Edge, Chrome and Firefox are almost completely compatible.
But we do not live in a perfect world. Developers have to support older versions of browsers that do not support the most modern and best JavaScript features. And we would like to improve the web and our code bases. This can be done with the help of Babel, the JS compiler, which transforms the latest features of the SS standard into ES5. This will help you run even on very old browsers like IE 9. For Babel, several plug-ins are written to facilitate development with React, as well as using features not described by the specification (for example, ES7).
Recommendations for use : if you want to use the most advanced features of JavaScript, but at the same time you need to maintain support for older browsers.
GitHub :
https://github.com/babel/babelOffsite :
babeljs.ioText writer: Rami Sayar
Top JavaScript Frameworks