Фреймворки JavaScript: как их выбирать. Javascript фреймворки. Что это? Зачем? Почему

22.04.2019

Свежая подборка самых популярных и наиболее востребованных JavaScript фреймворков, библиотек и инструментов на 2017 год.

Кажется, что JS-библиотек и фреймворков больше, чем JS-разработчиков. На май 2017 года быстрый поиск по GitHub выдает более чем 1.1 миллион проектов на JavaScript. На npm.js находится 500 тысяч активно используемых пакетов с почти 10 миллиардами скачиваний каждый месяц.

Эта статья призвана объяснить элементарные различия между самыми популярными JS-фреймворками, инструментами и библиотеками. Являются ли они лучшими для вас - уже другой вопрос. Выберите что-нибудь одно и задержитесь на нем какое-то время. Но избавьте себя от заблуждения, что ваш любимый инструмент не заменится чем-нибудь «получше» независимо от вашего первоначального выбора.

Пожалуйста, примите нижеизложенные соглашения перед прочтением данной статьи:

  • Мир JavaScript меняется изо дня в день. Эта статья будет устаревшей с момента ее публикации!
  • Под «лучшими» имеются в виду «наиболее популярные проекты общего назначения». Все они бесплатны и имеют открытый исходный код, но список может не включать ваши любимые.
  • В список не попали проекты, разработка которых приостановлена, даже если они широко распространены и активно используются.
  • Упомянуты только клиентские приложения. Некоторые из них могут выполнять функции серверной части, однако список не содержит полностью серверно-ориентированных приложений вроде Express.js или Hapi .
  • Информация о каждом проекте краткая и предоставляет свободу для дальнейшего изучения.
  • У каждого проекта есть индикатор популярности, но статистика, как известно, может вводить в заблуждение.
  • Автор подборки предвзят. Вы предвзяты. Все предвзяты!

Хитрая терминология

Для разных людей слова «фреймворк», «библиотека» и «инструмент» могут означать разные вещи в зависимости от контекста. Дадим общие определения, используемые здесь.

Библиотеки

Библиотека - это структурированный набор полезного функционала. Стандартная библиотека должна содержать функции для работы со строками, датами, DOM-элементами, событиями, cookie, анимацией, запросами, и многим другим. Каждая функция возвращает значения вызывающему ее приложению, которое может в дальнейшем использовать их в зависимости от логики разработчика. Это можно сравнить с подбором запчастей для автомобиля: вы свободны в выборе любого варианта, с которым машина будет работать, но логика целиком на вашей совести.

Библиотека обычно сокращает время разработки примерно на 20%, позволяя вам не беспокоиться о мелочах. Отрицательные стороны:

  • баг в реализации библиотеки может вызвать сложности в его нахождении и исправлении
  • нет гарантии, что команда разработчиков оперативно выпустит патч
  • патч может изменить API, что повлечет за собой значительные изменения в вашем коде.

Фреймворки

Фреймворк - это каркас приложения. Он обязывает разработчика выстраивать архитектуру приложения в соответствии с некоторой логикой. Любой фреймворк обычно предоставляет функционал вроде событий, хранилищ и связывания данных. По той же аналогии с машиной, фреймворк предоставляет готовые рамы, корпус и двигатель. Вы можете добавлять, удалять или заменять некоторые детали, при этом предполагая, что автомобиль останется в рабочем состоянии.

Фреймворк находится на более высоком уровне абстракции по сравнению с библиотекой и позволит вам без труда выстроить около 80% вашего приложения. Его минусы:

  • последние 20% могут вызвать немалые трудности из-за ограничений, накладываемых фреймворком
  • обновление фреймворка может быть сопряжено со сложностями, а порой и вовсе невозможно
  • основной код и концепции редко удовлетворяют разработчиков в своем первозданном виде. Они всегда найдут «лучший» способ сделать что-либо.

Инструменты

Инструмент - это вспомогательное средство разработки, но он не является неотъемлемой частью проекта. Инструменты включают в себя системы сборки, компиляторы, транспайлеры, механизмы развертывания и другое.

Инструменты призваны облегчать процесс разработки. Например, многие предпочитают Sass чистому CSS, потому что он предоставляет возможность использовать циклы, функции, локальные переменные и многое другое. Браузеры не понимают Sass/SCSS синтаксис, так что код переводится в CSS.

Не вешайте на меня ярлыки!

Грань между фреймворками, библиотеками и инструментами довольно смутная. Фреймворк может содержать в себе библиотеку. Библиотека может реализовывать фреймворко-подобные методы. Инструменты могут быть неотъемлемой частью обоих.

JavaScript фреймворки и библиотеки

Проекты упорядочены по популярности.

Самая популярная js-библиотека всех времен. Она произвела революцию в программировании клиентской части веб-приложений, введя селекторы CSS для доступа к узлам DOM-дерева, обработчики событий, анимации и ajax-запросы.

В последнее время jQuery утрачивает былую популярность, но по-прежнему остается жизнеспособным вариантом для проектов, требующих небольшого js-функционала.

Плюсы:

  • Малый размер дистрибутива
  • низкий порог вхождения, исчерпывающая документация в интернете
  • лаконичный синтаксис
  • легко расширяемый

Минусы :

  • замедляет работу приложения
  • может повлечь проблемы совместимости с браузером
  • сообщество разработчиков протестует против его повсеместного использования

React

Самая горячо обсуждаемая библиотека прошедшего года. React претендует на роль библиотеки для создания пользовательских интерфейсов. Он фокусируется на «View»-части MVC-разработки и позволяет создавать компоненты интерфейса, сохраняющие свое состояние. Это была одна из первых библиотек, реализующих виртуальное DOM-дерево.

Статистика использования React может показаться довольно низкой из-за того, что он используется в основном в приложениях, а не на сайтах.

Плюсы:

  • Компактность, эффективность, производительность и гибкость
  • простая модель компонентов
  • хорошая документация и обилие онлайн-ресурсов
  • возможность рендеринга на стороне сервера
  • растущая популярность

Минусы:

  • новые концепции и синтаксис, которые придется изучить
  • необходимы системы сборки
  • может требовать сторонних инструментов и библиотек
  • может быть несовместим с кодом и другими библиотеками, модифицирующими DOM-дерево

Lodash и Uinderscore

Эти две библиотеки объединены по причине того, что обе они предоставляют сотни инструментов для расширения функциональности нативных строк, чисел, массивов и методов работы с другими примитивами. Они довольно сильно пересекаются, поэтому их не рекомендуется использовать вместе в одном проекте.

Плюсы:

  • компактные и простые
  • хорошая документация, низкий порог вхождения
  • совместимость с большинством других библиотек и фреймворков
  • могут использоваться как ни клиенте, так и на сервере

Минусы:

Первый фреймворк (или MVC фреймворк) в нашем списке. Наиболее популярной является версия 1.х, расширяющая HTML двусторонней привязкой данных одновременно с разделением манипуляций с DOM и логики приложения.

Angular 1.x до сих пор находится в разработке, несмотря на версию 2 (которая теперь версия 4!). Запутались? Читайте дальше…

Плюсы:

  • популярный фреймворк, поддерживаемый несколькими крупными компаниями
  • часть «стандартного» стека MEAN (MongoDB, Express.JS, AngularJS, NodeJS), доступны множество статей и туториалов

Минусы:

  • сложнее в освоении в сравнении с некоторыми альтернативами
  • обширная база кода
  • несовместимость с Angular 2.x
  • несмотря на то, что является проектом Google, самим Google не используется

Angular 2

Angular 2.0 был представлен миру в сентябре 2016. Он был полностью переписан и представляет модульную модель компонентов, создаваемую на TypeScript. В марте 2017 состоялся релиз версии 4.0 (третья была пропущена во избежание нестыковок в семантическом версионировании).

Плюсы:

  • универсальное решение для создания современных веб-приложений
  • все еще часть стека MEAN
  • TypeScript предоставляет некоторые преимущества для людей, знакомых с объектно-ориентированными языками вроде C# и Java

Минусы:

  • см. минусы Angular 1.x

Vue.js

Легкий современный фреймворк для создания пользовательских интерфейсов. Предлагает React-подобный виртуальный слой ст поддержкой DOM, который может быть интегрирован с другими библиотеками.

Vue.js использует синтаксис шаблона HTML для связки DOM и данных. Модели являются простыми js-объектами, которые перестраивают интерфейс и/или контент при изменении данных.

Плюсы:

  • зрительские симпатии и растущая популярность
  • прост в освоении с нуля
  • мало зависимостей и хорошая производительность

Минусы:

  • молодой проект - высокие риски
  • меньше ресурсов, чем у альтернатив

Backbone.js был одним из первых клиентских фреймворков, реализующих модель MVC. Единственная зависимость - Underscore.js, созданный тем же разработчиком.

Скорее его можно отнести к библиотекам, потому что он может быть интегрирован в другие проекты. Хотя большинство разработчиков все же склонно называть Backbone.js фреймворком.

Плюсы:

  • компактный, легкий и простой в изучении
  • не добавляет дополнительной логики в HTML
  • прекрасная документация
  • использован в разработке многих приложений включая Trello, WordPress, LinkedIn и Groupon

Минусы:

  • низкий уровень абстракции по сравнению с альтернативами (например, AngularJS)
  • требует дополнительных компонентов для реализации фич вроде связывания данных
  • более современные фреймворки отказались от модели MVC

Если вы разрабатываете веб-приложения на JavaScript, значит вы уже пользуетесь фреймворками для этого. При использовании фреймворков не нужно запоминать большие куски кода, а можно использовать библиотеки, подключать нужные компоненты и использовать паттерны. Многие представляют себе под JavaScript-фреймворком jQuery. Но, jQuery – это не полноценный фреймворк, это библиотека, хоть и самая старая и популярная. Сегодня речь пойдет не о jQuery.

В сегодняшней статье мы рассмотрим список из 10 наиболее популярных JS-фреймворков, которые используются при разработке веб-приложений.

AngularJS

AngularJS – это платформа для разработки веб-приложений с открытым исходным кодом, которая была представлена компанией Google в 2009 году.

AngularJS предназначен для динамических веб-приложений, с использованием HTML для статических веб-страниц. Он в основном расширяет HMTL и реализует такие функции, как глубокая привязка, отладка, автоматическое манипулирование DOM и проверка форм на стороне клиента, не используя дополнительный JavaScript код.

С помощью этой платформы вы можете создавать новые HTML-элементы, использовать «компоненты» для создания и сохранять фрагменты кода для последующего использования. А также он обладает массой инструментов для всевозможных тестов.

Хотя для новичка может быть трудно освоить эту платформу из-за всевозможных директив, компонентов, инъекций и т.п.

ReactJS – отличный JavaScript фреймворк, выпущенный в 2013 году Instagram и Facebook. Он позволяет легко и просто создавать сложные и крупномасштабные динамические приложения. Здесь речь идет о первоклассном рендеринге высокопроизводительных (и сложных) пользовательских интерфейсов. Помните, как JavaScript быстро стал серверным языком с node.js? А с React можно разрабатывать приложения как для клиентской, так и серверной стороны.

Популярность React растет быстро, хотя он и появился относительно недавно.

Ember.js

Это один из наиболее популярных MVC JavaScript фреймворков. Появился он в 2011 году под открытым исходным кодом. С его помощью можно довольно легко создавать масштабируемые одностраничные веб-приложения.

В области двусторонней привязки данных показатели Ember подобен Angular. Он также выполняет первоклассную работу на стороне DOM-рендеринга на стороне сервера. Хотя, в целом, он более прост в использовании по сравнению с Angular.

BackboneJS

BackboneJS используется Walmart, Pinterest, Twitter, Hulu и т.д.

Это очень легкий фреймворк. Снимите лишний функционал с популярных JS-фреймворков и вы получите Backbone. Это один из лучших фреймворков для одностраничных веб-приложений. Хотя для расширения функционала вам придется добавлять в зависимости другие библиотеки.

Backbone во многом напоминает jQuery с его огромным количеством плагинов и расширений. Он отлично подходит начинающим для простых приложений.

KnockoutJS

KnockoutJS – еще одна отличная платформа JavaScript с открытым исходным кодом, которая работает с моделью MVVM (Model-View-ViewModel). Он разработан на простом JavaScript без каких-либо внешних зависимостей.

Он особенно хорошо разбирается в привязке данных. Он прост в использовании и с ним легко начинать проект даже новичкам.

Этот фреймворк хорошо подходит для одностраничных приложений, особенно в виде библиотеки. Хотя у него и не такое обширное сообщество, как у любой из вышеупомянутых платформ.

Если вы цените простоту и не хотите использовать серверные скрипты с вашей стороны, выбирайте Knockout.

Meteor.js

MeteorJS располагает всеми функциями, необходимыми любому разработчику для рендеринга фронт-енда, разработки бекенда и управления базами данных.

Он дает гибкость и инструменты для создания полнофункциональных приложений.

Пакеты на стороне сервера работают в node.js, поэтому для открытия базы данных вам нужны только пакеты MeteorJS. Изменения в базе данных имитируются обратно в пользовательском интерфейсе без путаницы между различными языками.

Aurelia.js

AureliaJS – это JS-фреймворк следующего поколения для мобильных и веб-приложений.

Самое лучшее в Aurelia заключается в том, что он сильно модулированный и содержит в себе немало независимых небольших библиотек. Вы, как разработчик, можете выбрать нужные из этих библиотек, чтобы создать собственный фреймворк.

Polymer.js

PolymerJS был выпущен в 2013 году компанией Google.

Он использует концепцию веб-компонентов с целью расширения возможностей HTML. Если это напоминает вам Angular, значит так и есть. PolymerJS дает суперсилу и структуру для пользовательских HTML элементов.

Skel – это чистый JavaScript фреймворк.

Он идеально подходит для создания веб-приложений и быстродействующих веб-сайтов. Он поставляется с сеткой CSS, точками останова, обладает функциями API и нормализации стилей браузера.

Vue.js является довольно новым фреймворком. Хотя и стремительно набирает популярность среди веб-разработчиков.

Этот фреймворк работает с парадигмой проектирования MVVM и предназначен для создания пользовательских интерфейсов в парадигме реактивного программирования с простым и совместимым API.

Краткий вывод

В данной статье мы не номинируем какой-либо JavaScript фреймворк на первенство. Решать это вам, исходя из поставленных задач и того, что вам нужно.

There are plenty of Javascript Frameworks are available right now. It is challenging to know which one to use for which project. What framework do you think best for javascript? Well, it depends based on your project. You can see the list of Best Javascript Frameworks below. We have picked the based on some aspects of community strength, weight etc..

Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web. Vue.js is a library for building interactive web interfaces. It provides data-reactive components with a simple and flexible API.

Aurelia is a JavaScript client framework for web, mobile and desktop that leverages simple conventions to empower your creativity.

Ember.js is a JavaScript framework that greatly reduces the time, effort and resources needed to build any web application. It is focused on making you, the developer, as productive as possible by doing all the common, repetitive, yet essential, tasks involved in most web development projects.

A modest JavaScript framework for the HTML you already have.

NativeScript is an open source framework for building truly native mobile apps with JavaScript. Use web skills, like Angular and Vue.js, FlexBox and CSS, and get native UI and performance on iOS and Android.

Relay

Relay is a JavaScript framework for building data-driven React applications.

A functional and reactive JavaScript framework for cleaner code.

Babylon.js: a complete JavaScript framework for building 3D games with HTML 5 and WebGL.

Flight is a lightweight, component-based JavaScript framework that maps behavior to DOM nodes. Twitter uses it for their web applications.

Javascript MVC framework for web development.

A lightweight front-end framework for creating scalable and performant, responsive sites.

Onsen UI is a library of UI components to help you create beautiful hybrid and mobile web apps for both Android and iOS using Javascript.

Cylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things. It makes it incredibly easy to command robots and devices.

Jest

Jest is a JavaScript unit testing framework, used by Facebook to test services and React applications.

A minimalist, real-time JavaScript framework built for NodeJS, React-Native and the browser.

R

AVA

Bootbox.js is a small JavaScript library which allows you to create programmatic dialog boxes using Bootstrap modals, without having to worry about creating, managing or removing any of the required DOM elements or JS event handlers.

Rich set of javascript widgets with no dependency to a server side framework.

A minimalist aspect-oriented JavaScript mixin framework.

A JavaScript framework for making mobile web apps.

Highcharts JS is a JavaScript charting framework.

scripty2 is an open source JavaScript framework for advanced HTML-based user interfaces.

Crafty is a flexible framework for Javascript games.

Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.

A minimal component-based JavaScript framework.

A port of the Processing visualization language to JavaScript.

Raphaël is a small JavaScript library that should simplify your work with vector graphics on the web.

RequireJS is a JavaScript file and module loader.

Snack

Snack is a small and simple JavaScript library. Though ideal for small projects, it’s got enough in it to build complex, cross-browser web apps.

Zepto

Zepto is a minimalist JavaScript library for modern browsers with a largely jQuery-compatible API.

Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.

QUnit

QUnit is a powerful, easy-to-use JavaScript unit testing framework.

Mocha

Mocha is a feature-rich JavaScript test framework running on Node.js and the browser, making asynchronous testing simple and fun.

soma.js is a scalable javascript framework created to help developers to write loosely-coupled applications to increase scalability and maintainability.

Cross-Platform JavaScript Creative Coding Framework.

Jaggery is a framework to write webapps and HTTP-focused web services for all aspects of the application: front-end, communication, Server-side logic and persistence in pure Javascript.

A Javascript Framework for Building Brilliant Applications.

HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application.

A JavaScript application framework emphasizing modularity and encapsulation.

jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.

Kango

cross-browser extensions framework named Kango. Purpose of Kango is make browser extensions development easier, cheaper and more enjoyable. With Kango you can create extension for all major browser in minutes using JavaScript only.

Cappuccino is a framework which makes it easy to create advanced web apps. With just a few lines of code you can have an app built with full undo and redo, truly amazing table views, drag and drop and every modern UI appearance and behaviour you might expect on the desktop.

ZK

ZK is the best open source Java framework for building enterprise web and mobile apps.

qooxdoo is a universal JavaScript framework with a coherent set of individual components and a powerful toolchain.

Durandal is a cross-device, cross-platform client framework written in JavaScript and designed to make Single Page Applications (SPAs) easy to create and maintain.

SproutCore is an open-source framework for building blazingly fast, innovative user experiences on the web.

Wakanda is an open-source web application framework for developing web and mobile applications in JavaScript.

Webix

Webix is a cross-browser JavaScript ui widgets library. Build fast mobile and desktop web applications that run on all touch devices with HTML5 framework.

React

A JavaScript library for building user interfaces.

Sammy

Sammy is a tiny javascript framework built on top of jQuery, It’s RESTful Evented Javascript.

Developers these days are spoiled with choice when it comes to selecting an MV* framework for structuring and organizing their JavaScript web apps.

Knockout is a JavaScript MVVM (a modern variant of MVC) library that makes it easier to create rich, desktop-like user interfaces with JavaScript and HTML. It uses observers to make your UI automatically stay in sync with an underlying data model, along with a powerful and extensible set of declarative bindings to enable productive development.

CorMVC is a jQuery-powered Model-View-Controller (MVC) framework that can aide in the development of single-page jQuery applications. It evolved out of my recent presentation, Building Single-Page Applications Using jQuery And ColdFusion, and will continue to evolve as I think more deeply about this type of application architecture.

Polymer lets you build encapsulated, re-usable elements that work just like HTML elements, to use in building web applications.

Matreshka is small and powerful client-side JavaScript framework that allows you to build single page applications as simply as possible.

Realtime application framework (Node.JS server).

Meteor is a complete open source platform for building web and mobile apps in pure JavaScript.

Sencha Ext JS is the most comprehensive MVC/MVVM JavaScript framework for building feature-rich cross-platform web applications. Ext JS leverages HTML5 features on modern browsers while maintaining compatibility and functionality for legacy browsers.

The Famous Framework is a new JavaScript framework for creating reusable, composable, and interchangeable UI widgets and applications. It balances declarative with imperative and functional with stateful, and it’s built on top of the Famous Engine.

The open source Opa Framework for JavaScript makes web development rapid and secure.

Vanilla JS is a fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications.

MEAN

MEAN is a framework for an easy starting point with MongoDB, Node.js, Express, and AngularJS based applications. It is designed to give you a quick and organized way to start developing MEAN based web apps with useful modules like Mongoose and Passport pre-bundled and configured.

GWT is used by many products at Google, including Google AdWords and Google Wallet. It’s open source, completely free, and used by thousands of enthusiastic developers around the world.

Ample SDK is a standard-based cross-browser JavaScript GUI Framework for building client-side Rich Internet Applications. It employs XML technologies (such as XUL, SVG or HTML5) for UI layout, CSS for UI style and JavaScript with DOM3 or jQuery-like APIs for application logic.

Flatiron is an adaptable framework for building modern web applications. It was built from the ground up for use with JavaScript and Node.js.

P

P is a small framework used to create browser-to-browser networks (as opposed to just a connection).

scaleApp is a tiny JavaScript framework for scalable and maintainable One-Page-Applications / Single-Page-Applications. The framework allows you to easily create complex web applications.

MooTools is a collection of JavaScript utilities designed for the intermediate to advanced JavaScript developer. It allows you to write powerful and flexible code with its elegant, well documented, and coherent APIs.

Minified.js is a client-side JavaScript library that’s both powerful and small. It offers jQuery-like features (DOM manipulation, animation, events, HTTP requests) and utility functions (collections, date&number formatting, date arithmetic, templates) with a single, consistent API.

Javelin is a frontend Javascript library developed at Facebook. It stresses strictness and scalability to try to solve, prevent, or mitigate some of the challenges we encountered as Facebook grew. Javelin is currently used by Facebook Mobile and Phabricator.

RightJS is a compact JavaScript framework for developing cross-browser web-applications.

A tiny foundation for creating reactive components with interpolation, data-binding, and plugins. It’s simple, flexible and easy to extend.

Sails is the most popular MVC framework for Node.js.

midori is an ultra-lightweight JavaScript framework that gets the job done without getting in your way.

The Javascript MVC microframework that does just enough.

A cross-browser JavaScript library for building rich Web and Mobile apps.

A JavaScript toolkit that saves you time and scales with your development process. Provides everything you need to build a Web app. Language utilities, UI components, and more, all in one place, designed to work together perfectly.

MochiKit is a highly documented and well tested, suite of JavaScript libraries that will help you get shit done, fast. We took all the good ideas we could find from our Python, Objective-C, etc. experience and adapted it to the crazy world of JavaScript.

Echo

Echo is a platform for building web-based applications that approach the capabilities of rich clients. The applications are developed using a component-oriented and event-driven API, eliminating the need to deal with the “page-based” nature of browsers. To the developer, Echo works just like a user interface toolkit.

Everything for building web and mobile apps with HTML5 and JavaScript.

Traditional Flux architecture built with ImmutableJS data structures.

JWt is a Java library for developing web applications.

PureMVC is a lightweight framework for creating applications based upon the classic Model, View and Controller concept.

D3.js

D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. D3 emphasizes web standards and combines powerful visualization components with a data-driven approach to DOM manipulation, giving you the full capabilities of modern browsers without tying yourself to a proprietary framework.

Handlebars.js is an extension to the Mustache templating language created by Chris Wanstrath. Handlebars.js and Mustache are both logicless templating languages that keep the view and the code separated like we all know they should be.

An easy boilerplate for rolling your own JavaScript Library like jQuery, Zepto, Prototype, etc.

Rialto (Rich Internet Application Toolkit) is ajax based cross browser javascript widgets library. Because it is technology agnostic it can be encapsulated in JSP, JSF, .Net, Python or PHP graphic components.

A highly modular, loosely coupled, non-frameworky framework for building advanced JavaScript apps.

Dozer is a system for rapidly developing services to support front-end applications.

AmplifyJS is a set of components designed to solve common web application problems with a simplistic API.

Noder.io provides a lightweight and flexible core to create a scalable API of a lib, a module, an application or a framework. Noder.io is inspired (among others) by Angular and Pimple.

abaaso is a modern, lightweight Enterprise class RESTful JavaScript application framework.

A project base for building modern JavaScript applications.

SharepointPlus ($SP) is a JavaScript API for Sharepoint. This library offers some extended features for SharePoint entirely on client side (requires no server install). $SP will simplify your interactions with the Sharepoint Web Services and will help you to deal with the List Forms.

Marionette is a composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications. It is a collection of common design and implementation patterns found in applications.

Riot

Riot brings custom tags to all browsers, including IE8. Think React + Polymer but with enjoyable syntax and a small learning curve.

pager.js is a JavaScript library based on KnockoutJS and jQuery that provides the possibility of creating single page applications in a declarative fashion.

CanJS

CanJS is a JavaScript library that makes developing complex applications simple and fast. Easy-to-learn, small, and unassuming of your application structure, but with modern features like custom tags and 2-way binding. Creating apps is easy and maintainable.

Lightweight and powerful data binding + templating solution for building modern web applications.

Epoxy is an elegant and extensible data binding library for Backbone.js.

OpenUI5 is an Open Source JavaScript UI library, maintained by SAP and available under the Apache 2.0 license. OpenUI5 lets you build enterprise-ready web applications, responsive to all devices, running on almost any browser of your choice.

script.aculo.us provides you with easy-to-use, cross-browser user interface JavaScript libraries to make your web sites and web applications fly.

YUI is a free, open source JavaScript and CSS library for building richly interactive web applications.

SmartClient combines the industry’s richest set of cross-browser UI components with a Java server framework to provide an end-to-end solution for building business web applications.

Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.

Brick

Brick is a collection of UI components designed for the easy and quick building of web application UIs. Brick components are built using the Web Components standard to allow developers to describe the UI of their app using the HTML syntax they already know.

Spine

Spine is a lightweight MVC library for building JavaScript web applications. Spine gives you structure and then gets out of your way, allowing you to concentrate on the fun stuff: building awesome web applications.

UIZE is pronounced “you eyes”, and is a FREE, powerful, open source, OOP JavaScript framework for browsers, NodeJS, and other JavaScripty places.

JavaScriptMVC is an open-source framework containing the best ideas in jQuery development.

Agility.js is an MVC library for Javascript that lets you write maintainable and reusable browser code without the verbose or infrastructural overhead found in other MVC libraries.

Underscore is a JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects.

Radian is a scalable AngularJS framework, perfect for multi developer projects.

Ractive was originally created at theguardian.com to produce news applications. A typical news app is heavily interactive, combines HTML and SVG, and is developed under extreme deadline pressure.

Geddy

The original MVC Web framework for Node – a simple, structured way to create full stack javascript applications.

Locomotive is a web framework for Node.js. Locomotive supports MVC patterns, RESTful routes, and convention over configuration, while integrating seamlessly with any database and template engine.

MontageJS is an elegant, open source HTML5 framework maintained by Montage Studio that rivals native SDKs, yet is easier to learn.

Chaplin is an architecture for JavaScript applications using the Backbone.js library. Chaplin addresses Backbone’s limitations by providing a lightweight and flexible structure that features well-proven design patterns and best practices.

Serenade.js is a client side framework built on the MVC pattern. It makes it simple to create rich client side applications by freeing you from having to keep the DOM up to date with your data through powerful data bindings.

Prototype takes the complexity out of client-side web programming. Built to solve real-world problems, it adds useful extensions to the browser scripting environment and provides elegant APIs around the clumsy interfaces of Ajax and the Document Object Model.

pyjs

pyjs is a Rich Internet Application (RIA) Development Platform for both Web and Desktop. With pyjs you can write your JavaScript-powered web applications entirely in Python.

jQWidgets provides a comprehensive solution for building professional web sites and mobile apps. It is built entirely on open standards and technologies like HTML5, CSS, JavaScript and jQuery.

Rico is an open source JavaScript framework used to create rich, highly interactive web applications. Rico is based on the Prototype Javascript Framework and is released under the Apache License.

eyeballs.js is a slim javascript library designed to sit on top of a javascript framework, such as jQuery or Prototype.

Choco

A delicious Javascript web framework made in Belgium!

The open source Junction framework is a conventions-over-configuration, synchronizing web MVC framework for JavaScript.

KineticJS is a fast, robust, HTML5 Canvas Library that is no longer maintained. The last stable version is v5.1.0, and it’s pretty darn solid.

Rendr

Rendr is a small library that allows you to run your Backbone.js apps seamlessly on both the client and the server. Allow your web server to serve fully-formed HTML pages to any deep link of your app, while preserving the snappy feel of a traditional Backbone.js client-side MVC app.

TerrificJS is a neat, clever piece of code that allows you to modularize your frontend code by solely relying on naming conventions.

Atom

Atom is compact JavaScript framework oriented on modern browsers, which allows to support quite broad list of features without keeping a lot of cruft necessary to implement them in old browsers.

The JavaScript community experienced some really big changes last year. ECMAScript 6 was finally standardized and published, and most popular compilers and web browsers are working hard to adapt to all the new changes and regulations. To fully understand such a huge update (the last ES update was in 2009), it’s necessary to immerse yourself within a solid step by step guide that discusses all of the aspects of the new standard, and the best such guide we could find comes from Lars Kappert who shared his ES6 list of changes post at Smashing Mag .

In terms of implemented ES6 features into browsers themselves, Mozilla Firefox and Google Chrome are currently leading the pack for everyone else to follow. But JavaScript is much more than just a standard, some really great apps and platforms have been built and published for the public this year, one of the latest being OS.js — a fully functional cloud platform that integrates Desktop Computer features within the browser.

JavaScript is growing fast, it’s becoming more native, but most importantly — it’s becoming more stable. The number of web development frameworks that have come into the JavaScript sphere in the last years has really boomed, and many of the frameworks have already established huge communities around them, Angular, Meteor and React to name a few. In today’s post we will be taking a closer look at the currently most popular JavaScript frameworks and we strongly believe that these frameworks will be seeing a lot of growth, engagement, and exposure. Please share with us your personal experiences with the frameworks that you have used from our list as we would love to hear more input about the use cases for each individual framework.

Reactive JavaScript Frameworks

The creator of D3 — Mike Bostock — did an interesting Ask Me Anything (AMA) on Reddit last year , and it’s packed with insightful questions and answers that will help you better understand the intention, the vision and the drive behind this project. You need to prepare spending some time digesting all the answers.

Download

Ember

Ember is a modern web development framework for the ambitiously-oriented developers. People know it for its ability to help developers build complex large-client-side application. Ember also stands out with its simplicity and flow of functionality to make web app development a smooth experience. Getting started with Ember is quick and painless, and many developers have gone out of their way to create tutorials and guides on how to get started with this adaptable framework.

Ember has managed to stay away from gleaming terms and modules that make modern frameworks stand out from the crowd. Instead, Ember maintains traditional functionality while bringing forth power that’s necessary for building great applications, like the necessary.

Download

Aurelia

Aurelia is a self-proclaimed next generation web development framework that primarily focuses on making programming (web development) a creative process. Perhaps what makes Aurelia next-generation is the fact that it has been built purely with ES6 (the latest JS standard) and also incorporates some of the available ES7 (the next JS standard) features already, whilst retaining the ability to function on all modern browsers. The developers built the framework upon a module-like framework. This means that it consists of several small and big libraries they can use to either together, or separately. Of course, this depends on the requirements of the kind of application that you are building.

The predominant features of Knockoutjs are declarative bindings, automatic UI refresh, dependency tracking, and templating features. Relate your existing DOM elements with data models using simple syntax. Whenever you update your data models, it reflects the changes within UI in real-time. Create connections between your data models to combine and transform them. Create intricate UI models as part of the functions that you use for your data models. With the support of native JavaScript, Knockout will make it incredibly easy to integrate itself with any existing framework. This includes each and every one on our roundup here.

Download

Keystone

We should probably be mentioning this framework in a separate Node.js framework list (which we will), but Keystone’s capabilities really stand out in modern front-end web development, and it’s not often that we see a full-fledged framework available. The developers built Keystone with the support of Express.js and MongoDB. It can enable features like dynamic routes, database field management, an interactive and dynamic Admin UI. This UI can be available even while you’re building your apps/content systems. It can also enable form processing, email sending, and management. This framework is easy to work with the code base. Keystone has a lot more features to offer that makes the CMS great!

Download

Backbone

If you’re not paying attention to your code’s structure and coalition, it’s going to get real messy. Building elegant one-page and single-page applications with traditional web development libraries can turn your code base into a spaghetti dinner. Backbone is built with the idea in mind that all server-side functions should flow through an API , minimizing the amount of code that needs to be composed in order to achieve the same complex functionality of more sophisticated web frameworks.

Backbone is amongst some of the most popular web development frameworks for JavaScript developers, and partly for two reasons — it’s easy to understand usability modules, as well as the very straightforward learning curve.

Download

Stapes

Stapes is somewhat of a successor of Backbone. It “boasts” its ability to provide a great framework experience whilst maintaining only a range of 20 active modules. Its primary focus is on class creation, custom events, and data methods. Stapes is the building block to help you find the gap between a traditional application and an awesome application! (In their own words!)

Download

Choosing the Best JavaScript Development Framework

Choosing a framework should never be about the number of features that the particular framework can provide. Terms like ‘next generation’ can sound very appealing, but what matters is the actual functionality of the framework. The usage of functionality within your own new project, app, and software can also be a factor. Some frameworks provide more experience by letting sensational developers with decades of experience build the framework. Whereas, smaller web frameworks will focus on community-oriented features that it can incorporate within different framework modules.

Thank you for visiting Colorlib and reading this article! We highly appreciate it! Now you might want to learn how to using our free .

Disclosure: This page contains external affiliate links that may result in us receiving a commission if you choose to purchase mentioned product. The opinions on this page are our own and we don"t receive additional bonus for positive reviews.

В данном уроке разберём зачем вообще нужны JS фреймворки. Предположим нам нужно создать SPA (Single Page Application), это такое веб приложение которое состоит из одной страницы, а всё остальное делается средствами . Такие приложения характерны тем что они очень динамичны и работают на много быстрее чем статические сайты.

Для написания такого приложения существует несколько подходов:

  1. Писать на нативном JS.
    То есть без использования сторонних библиотек. Данных подход не разберём так как это очень тратит Ваши ресурсы, и в большинстве случаем в пустую.
  2. Используя библиотеки.
    В данном уроке для примера рассмотрим jQuery.
  3. Писать на фреймворке.
    И данный способ тоже рассмотрим.

Создание приложения на jQuery

Плюсы

  • Быстрый старт.
    То есть, чтобы начать писать не нужно никакие настройки делать. Просто нужно подключать библиотеку – это быстро.
  • Не нужно ничего изучать.
    Многие знакомы с данной библиотекой.

Минусы

  • Медленная библиотека.
    jQuery работает в десятки раз медленнее чем любой JavaScript фреймворк, или нативный JS.
  • Нет структуры.
    У данного подхода нет определенной структуры. То есть jQuery это просто библиотека которая основана на селекторах и не несёт в себе какого-то паттерна программирования. В ней мы просто пишем код и всё.
  • Сложная поддержка кода.
    Данный пункт это последствие предыдущего пункта. Если нет структуры сложно разобраться где и что лежит, по этому поддерживать такой код – трудно (и это уже знаю по личному опыту).
  • Плохая расширяемость.
    Когда приложение вырастит до больших объёмах, очень сложно будет добавить новый функционал так как не понятно будет что и где находиться. То есть для маленьких приложений это не очень актуально, однако для серьёзные приложения это будет сольдный минус.

Создание приложения на фреймворке

Плюсы

  • Структурированный код, паттерны.
    Любой фреймворк несёт в себе какой-то паттерн программирования. Из за этого у него очень структурированный код. Например Backbone.js несёт в себе паттерн MVC, или например AngularJS несёт в себе паттерн MVVM. Это сильно упрощает дальнейшую разработку приложения.
  • Много нужных инструментов идёт уже “в коробке”.
    Например какие-то инструменты для роутинга или для шаблонизаций.
  • Высокая производительность.
    Любой фреймворк в десятки раз быстрее чем jQuery. Опять-же на маленьких проектах это может быть не очень актуально, однако для больших это очень заметно. То есть приложения на jQuery могут начать тормозить потому что операций с DOM-ом очень затратны.
  • Лёгкая расширяемость и поддержка кода.
    Из за того что код структурированный и всё находиться в своём модуле (модель, роутинг), очень легко добавить новый функционал.
  • Быстрая разработка.
    В начальном этапе придёться настроить как-то фреймворк. Однако в последствие можно будет просто пользоваться уже тем что всё структурировано и повыситься скорость разработки.

Минусы

  • Изучение фреймворка.
    То есть в некоторых фреймворках есть собственный синтаксис, как например в или Angular.js. У каждого фреймворка есть своя “особенная” идеология (за счёт этого и можно реализовать интересные вещи).

Итог:

Для маленьких приложения не очень целесообразно какой либо большой фреймворк.

Однако для SPA нужно использовать фреймворк.

Похожие статьи