среда, 30 марта 2016 г.

3 JavaScript библиотеки на которые стоит обратить внимание

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

React.js

React.js, которую часто называют просто React, это библиотека JavaScript предназначенная для создания пользовательского интерфейса, она была создана в процессе сотрудничества Facebook и Instagram. В настоящее время она поддерживается этими компаниями при помощи сторонних разработчиков, и также используется в прочих организациях, таких как Yahoo, Airbnb, Sony и конечно Facebook и Instagram.
React это не фреймворк, он не предоставляет вам все компоненты которые присутствуют в других фреймворках, таких как Ember или AngularJS. Библиотека призывает к созданию UI компонентов, которые могут повторно использоваться и отображатся данные которые могут постоянно изменяться. Многие пользователи ссылаются на React как на V из MVC. Главным отличием библиотеки от фреймворков, таких как AngularJS, где используется двухсторонняя привязка данных – это то что в React привязка односторонная.
Одной из самых важных концепций в проекте является виртуальный DOM. Вы можете думать о нем, как о наборе элементов, которые вы можете изменять вашими данными, и это приведет к изменениям в реальномDOM страницы. Виртуальный дом используется для эффективного рендеринга страницы с использованием diff алгоритма, которые позволит перерисавать только те элементы, которые были изменены. Это делает библиотеку чрезвычайно быстрой.
Другая выдающая особенность библиотеки – отрисовка на сервере с помощью Node.js. Благодаря этому вы можете использовать те же знания для отрисовки и на серверной и на клиентской части. Это дает огромную производитльность и преимущества в SEO. Многие разработчики используют React.js для рендеринга первичной, статической версии страницы на сервере, которая быстрее клиентской и удобна для SEO. После этого пользовательские действия обрабатываются клиентской частью и обновляют UI на клиенте.
Это только поверхностное знакомство с библиотекой, я действительно призываю вас изучить ее на сайте React.js. Там содержится большое количество публикаций и справочных материалов, которые позволят изучить библиотеку более детально.

Meteor

Meteor это фреймворк JavaScript с открытым исходным коодом, написаный поверх node.js, который фокусируется на онлайн приложениях реального времени. Он не очень новый, и поэтому уже достиг стабильной версии 1.0, но только сейчас разработчики стали все больше и больше обсуждать этот фреймворк и использовать его в своих проектах.
К основным достоинствам Meteor можно отнести известную идиому из миру Java “Пиши один раз  и используй повсеместно”, которую фреймворк адаптирует в мире JavaScript.Благодаря Meteor, вы можете писать код,  способный выполнятся и на клиенте и на сервере, и кроме того вы можете портировать ваше приложение на мобильные платформы, с использованием Cordova. Такой вид приложений относится к изоморфичным приложениям – это значит, что оно может выполнятся и на сервере и на клиенте, причем будет использоваться один и тот же код. Если вам нравится возможность конвертации вашего кода в мобильное приложение, возможно вам будет интересно почитать публикацию Руководство по мобильной разработке на  Meteor Дэвида Турнбула.
После установки фейрмворка у вас есть все что нужно для разработки клиентской и серверной части вашего приложения, таким образом настроить все и приступить к работе очень просто. Meteor поставляется со своей собственной CLI, позволяющей увеличить скорость разработки. Также он позволяет создать демо приложение на вашей локальной машине с помощью команды приведенной ниже:
meteor create --example todos
Одной из моих любимых особенностей фреймворка является его реактивность, или другими словами возможность автоматичсеского изменения отображения при изменении данных безо всяких каллбэков. Как я упоминал ранее, Meteor расчитан на приложения реального времени. Таким образом все изменения сделанные вами или другими пользователями тут же отображаются на UI. Если это описание заинтересовало вас, рекомендую посетить официальный сайт или почитать несколько полезных публикаций “7 причин использовать Meteor для разработки новых веб приложений” и “Что вы должны знать о Meteor 1.0”.

Rendr

За последние месяцы я прочитал много о изоморфных приложениях, и Rendr – еще один фреймворк, которые использует эту концепцию. Это маленькая библиотека разработанная Airbnb, которая позволяет выполнять приложения Backbone.js на клиенте и на сервере. К преимуществам можно отнести те же пункты что указывал для React.js: быстрое создание статических страниц адаптированных для SEO.
Одной из целей проекта является условие быть легковестным. Как я упоминал в другой публикации: “В лучших традициях Backbone, Rendr пытается быть библиотекой а не фреймворком.”
Также Rendr пытается быть агностиком по отношению к окружению путем минимизации кода, вида: if (server) {…} else {…} который вы наверняка встретите в фреймворках подбных Meteor.
К сожалению, я не применял данный продукт в реальных приложениях, поэтому мне сложно судить о зрелости проекта.

Выводы

В данной статье, я описал три очень перспективных проекта, которые используют популярную парадигму изоморфных приложений, и на которые обязательно нужно обращать внимание.
Последнее время я занимался изучением React.js и могу заявить что полюбил его. Я все еше изучаю эту библиотеку, поэтому у меня нету еще уверенных знаний в его использовании. Но если он используется в Instagram уверен, он может вполне достойно использоваться и в проектах попроще. И для меня выглядит забавно что Google не использует собственный AngularJS для приложений Gmail, Facebook использует React  в своих приложениях.
А вы использовали эти библиотеки и фреймворки? Если да, то что вы думаете о них? А если не использовали, то решитесь ли попробовать поработать с ними?