В этой публикации сделаем обзор пяти наиболее интересных и перспективных JavaScript фреймворков первой половины 2016 года. В обзоре собраны вместе различные типы библиотек, которые предоставляют различный функционал — от создания UI компонентов к изоморфному JavaScript. Это не будет глубокий и детальный технический анализ, скорее это краткое введение в ключевые особенности.

Ниже список наших фреймворков:

Теперь, пришло время взглянуть на них поближе.

Polymer




Давайте начнем с Polymer. Он был создан в Google и причиной его возникновения было желание использовать свои собственные веб-компоненты. Если вы не знакомы с этим термином, посетите этот сайт. Он откроет вам мир веб-компонентов и поможет понять, почему толпы веб-разработчиков считают их будущим интернета.

Говоря о будущем, Polymer использует технологии, которые еще не присутствуют в современных браузерах, таких как Shadow DOM, Custom Elements и многие другие. Для того, чтобы все работало, Polymer предлагает polyfills. Можно сказать, что Polymer это коллекция polyfills и синтаксического сахара.

Теперь поговорим о доступных UI элементах. Вот так выглядит каталог элементов Polymer:


Второй элемент этой таблицы — это бумажный элемент, который представляет собой набор визуальных элементов Google Material Design (например: элементы управления, макеты, переходы и скроллинг эффекты). Пройдите на эту демо страницу, чтобы увидеть, как это выглядит.

Пошаговое руководство для новичка, поможет вам изучить основы Polymer и создать свое первое приложение.

Aurelia




Aurelia была создана бывшим разработчиком AngularJS и, по его словам, «Aurelia имеет первую в своем роде “адаптивную» привязку данных, которая позволяет проводить двустороннюю привязку данных между JavaScript и DOM (в том числе веб-компонентов)." Звучит интересно.

Вот список основных функций:
  • Написана на ES 2016. Нет внешних зависимостей, кроме polyfills;
  • Вместо того, чтобы брать монолитного каркасного подхода, Aurelia состоит из более мелких модулей;
  • Использование веб-компонентов;
  • Двусторонний databinding;
  • Тестируемая;
  • Поддержка большого количества языков. Aurelia использует ES5, ES 2015, ES 2016 и TypeScript.


Документация достаточно подробная и содержит примеры кода, которые могут помочь вам понять всю концепцию. Также вы можете посмотреть видео туториал, который можно найти на главной странице.

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

Meteor




Фреймворк Meteor — это так называемый изоморфными JavaScript. В общем, этот термин означает «JavaScript-приложения, которые работают как на стороне клиента, так и на стороне сервера». Таким образом, вы можете написать свой код один раз и использовать его как на сервере для статического рендеринга страницы, так и на клиенте.

Meteor — это JavaScript фреймворк с открытым исходным кодом, написанный на Node.js. В наши дни трудно найти пользователя, который не поморщиться всякий раз, когда видит веб-страницу, которая перегружается каждый раз после изменения настроек. Хорошая новость заключается в том, что Meteor был первоначально разработан для создания real-time приложений. Действия пользователя или изменения в базе данных вызывают немедленные изменения, и такое поведение не требует какого-либо дополнительного кода. Вот только как работает Meteor.

Этот фреймворк упрощает процесс разработки путем устранения необходимости знать кучу разных языков программирования. Front-end, back-end и базы данных управляются только с помощью JavaScript.

Meteor легко изучается и в него достаточно легко погрузиться. Выполните несколько команд в терминале, и вы получите рабочее приложение. Если вы не верите мне, ознакомьтесь с этим руководством по началу работы. Кроме того, есть возможность развертывания проекта на сервере, используя одну простую команду.

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

Webix




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

Разработчики Webix уделили особое внимание пользователям мобильных устройств, предоставляя возможность создать приложение, которое будет выглядеть и работать нормально, независимо от того, какое устройство вы используете. Приложения прекрасно работают на Android, IOS, Windows 8 и на Firefox ОС. Они также добавили возможность использовать Material Design.

Центр разработки Webix содержит несколько полезных инструментов. Например, есть Skin Bulider и Form Builder, который позволяет создавать формы, определив нужные поля, расположение и автоматически генерировать код для вашей формы. Есть даже визуальный конструктор, который позволяет создавать drag-and-drop приложения, а затем получать сгенерированный код. Вот как это выглядит:


Страница с документацией полна информации для разработчиков разных уровней. Там вы найдете инструкции для быстрого старта, обучающие программы и т.д. Если вы хотите как можно быстрее начать программировать, вы можете попробовать эту игровую площадку.

React




Еще один фреймворк, который был построен интернет-гигантом Facebook.

Одной из наиболее важных особенностей является высокая производительность, которая достигается за счет использования виртуальной DOM. Виртуальный DOM отображает только данные. Что позволяет проще определить изменения.

Еще одной особенностью является использование языка JSX. Это XML-подобный язык, который не является обязательным и не требует использования React. Перейдите на веб-сайт проекта, чтобы увидеть разницу между написанием компонентов в JSX и JavaScript. На первых парах это может выглядеть непонятно, но на это стоит обратить внимание.

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

React будет хорошим выбором, если вы планируете создавать многократно используемые UI компоненты. Легко достать части ранее использованного кода и переделать его. Пройдите на страницу с документацией, чтобы узнать, как все работает.

Заключение


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

Надеюсь, что эта статья была полезной и поможет вам принять решение.

Автор: Иван Петренко
Поделиться с друзьями
-->

Комментарии (43)


  1. affka
    01.08.2016 10:39
    +10

    А Meteor точно перспективный? Мне кажется уже давно угасает его популярность… Есть вообще какая-то статистика использования представленных фреймворков?


    1. movl
      01.08.2016 16:04

      Мне кажется, тут смотря что с чем сравнивать. В данном посте нет сравнения, конечно, но в одну кучу запихано как сладкое так и зеленое, и создается впечатление, что все эти фреймворки/библиотеки про одно и тоже. Если конкретно про Meteor, то все вышеперечисленное можно использовать вместе с ним. И, мне кажется, искать корреляцию между популярностью Meteor и, например, React, будет не верно. Есть даже и подобные решения, а можно и что-то свое сделать, но в любом случае Meteor занял свою нишу, и чувствует себя там комфортно.


      Слежу за Meteor постоянно и мне нравится как развивается проект в последнее время, становится более взрослым что ли. Также интересно будет посмотреть на Apollo. И какого-то прекращения разработки Meteor, отказа от поддержки или вообще умирания тоже не вижу в ближайшем будущем.


      1. gigimon
        01.08.2016 16:48

        Не видите умирания? А релизы 1.3 и недавний 1.4? Не принесли ничего, хотя версию сменили. Хорошие изменения у них только в документации, там действительно, очень продвинулись, но в плане функциональности как-то на месте стоят.


        1. n0ne
          01.08.2016 18:14

          Т.е. новые node.js и MongoDB как минимум — это фигня?!


          1. gigimon
            01.08.2016 18:24

            Конечно фигня, т.к. к самому фреймворку они отношения имеют маленькое. А mongodb у меня вообще внешняя используется


            1. n0ne
              02.08.2016 09:10

              Уверен, что имеет большое значение для фреймворка. Для конечных пользователей — да, изменений не много. Да и раньше 1.5 они ничего и не обещали.


        1. movl
          01.08.2016 18:26

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


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


          1. gigimon
            01.08.2016 18:31

            Я небольшой проект с 0.7 держу и динамика развития до 1.1 была очень высокой, но потом притихли и каждый релиз не несет значительных изменений. Побочные проекты это хорошо, но как бы не затмили они основной проект.

            Возможно вы и правы, что сейчас они сосредоточились на стабильности и стремятся к enterprise ready. Я сам жду какой-нибудь 2.0. Если до него и в нем будут такие же мелкие изменения, то придется уходить


    1. gigimon
      01.08.2016 16:47

      Я бы сказал даже не популярность, а сама разработка.


  1. nazarpc
    01.08.2016 10:46
    +9

    Polymer как-бы не фреймворк и даже не близко.


    Polymer is a lightweight library built on top of the web standards-based Web Components API's, and makes it easier to build your very own custom HTML elements

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


    То же самое о React — он только view слой, и ничего больше, он сам по себе вообще достаточно скуден без экосистемы и точно не является фреймворком.


    A declarative, efficient, and flexible JavaScript library for building user interfaces


  1. claygod
    01.08.2016 10:48
    +11

    Странно, что Angular отсутствует в этом списке


    1. MikielD
      01.08.2016 11:17
      +7

      Странно что VueJs в этом списке тоже нету, ведь спрос на этот Фреймворк растёт.


      1. Bellicus
        01.08.2016 11:22
        +15

        Давайте откровенно. Список в целом странный, без каких-либо внятных аргументация и доводов. В таком русле можно, в принципе, перечислить любые 5 фреймворков и сказать, что они самые перспективные))


      1. acupofspirt
        01.08.2016 13:12

        А что, этот VueJs и в самом деле так хорош как про него рассказывают?


        1. SamDark
          01.08.2016 13:51
          +1

          Он нормальный. Остальное — реклама. Как и везде.


        1. Darkside73
          01.08.2016 16:47

          По фичам не хуже, чем остальные и проще для освоения (в случае с ангуляром — намного проще). Активно развивается: на подходе мажорный релиз (версия 2.0). Еще к нему vuex есть — архитектурный каркас для построения приложений


  1. Akuma
    01.08.2016 11:40
    +5

    Polymer — не фреймворк
    Aurelia — вроде когда-то мелькало, но видно не взлетело
    Meteor — взлетело, но уже падает
    Webix — аналогично Aurelia
    React — не фреймворк

    Хотя бы опрос добавьте с болеее широким выбором, посмотрим кто чем пользуется на хабре. Только не называйте фреймворком все и вся.


    1. sombik
      01.08.2016 18:33

      Webix — более «легкая» альтернатива ExtJS от Sencha. И по стилю похожа, и по компонентам. Только почему-то ни в одном обзоре про ExtJS нет ни слова, хотя по количеству функционала и компонентами — даст фору любому другому фреймворку. Есть конечно много минусов в ней, но не об этом вопрос.


    1. Funbit
      08.08.2016 04:35

      Релиз Aurelia был в конце июля 2016. Взлетит или нет еще предстоит увидеть.


  1. PQR
    01.08.2016 12:07
    +2

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

    • Angular 1
    • Angular 2
    • Polymer
    • React
    • Ember
    • Aurelia

    Choosing a JavaScript Framework — Rob Eisenberg


    1. Veikedo
      01.08.2016 12:18
      +2

      На мой взгляд, аргументации и примеров мало в этом видео.


  1. negasus
    01.08.2016 12:29
    +1

    Да, жалко, что про Vuejs с 23к звезд на GitHub вечно забывают


  1. Diaskhan
    01.08.2016 12:48
    -3

    Однозначно в закладки...


  1. wispoz
    01.08.2016 12:48

    Чем WebIx отличается от Sencha Extjs? Мне кажется с настройками стилей и там и там будет ад.
    А компонентов для ExtJS побольше, да и мобильная версия есть (Sencha Touch).
    Да и в 6-й версии ExtJS есть двухсторонний биндинг, (ViewModel, ViewController ) и так далее.


  1. xGromMx
    01.08.2016 12:57

    Как человек, который поработал с Aurelia на проекте, проклинаю ее всем чем можно. Нормальной валидации, форм и всего такого нет, что нужно бизнесу. После этой медузы, перешел на Angular2 и доволен как слон был. Angular2 — это мощная, уже готовая к продакшену полная платформа. Хотите Redux? Есть круче NgRx, все на реактивных состояниях, сайд эффекты красиво отделяются от чистых данных за счест Effects (поведение похоже как у sagas только лучше и более декомпозируемое) Также я за выбирать под продакшен React и его экосистему.

    Хотите что-то задекларировать?
    Да! С Aurelia больше никогда не работать!


  1. Moxa
    01.08.2016 13:05
    +1

    а riot кто-нибудь пробовал?


    1. gentee
      01.08.2016 21:01

      Я пробовал, мне понравилось. После Angular v1 все было понятно, компактно и работало как нужно. К сожалению, так и не решил, что на нем стоящее сделать и по работе стал плотно загружен.


      1. Moxa
        01.08.2016 21:04

        я все пытаюсь продавить его использование на работе, но проект уже начат на реакте, переписывать никто не даст =(


        1. gentee
          01.08.2016 21:17

          А чем React не нравится? Riot — это скорее вещь для души, так как сейчас как правило выбирают между Angular и React и малоизвестный Riot совсем не котируется.


          1. Moxa
            01.08.2016 21:21

            что-то он слишком большой и тяжелый, наше приложение инициализируется 2 секунды на моем мобильнике, да jsx довольно страшный после riot'a


  1. mr_tron
    01.08.2016 14:18
    -2

    WebAssembly (и построенные на нём фремворки) — перспективная штука. А всё эти тормозные поделия, которые и без того не быстрый js превращают в черепаху, я надеюсь, умрут в мучениях.


    1. Veikedo
      01.08.2016 14:56
      +2

      Ну да. Вот сейчас придёт WebAssembly и мир станет прекрасным.

      Дело-то не в производительности движка/фреймворка, а в производительности программиста при работе с ними.


    1. movl
      01.08.2016 14:57
      +1

      Но проблема останется в медленной работе с DOM и прочими интерфейсами, предоставляемыми браузером, которые никуда не денутся с приходом WebAssembly, или я чего-то не понимаю? Если, например, нужно отобразить 10 000 строк таблицы, данные для которых были получены по сети, а потом их изменять, перерисовывать и все такое, как тут поможет WebAssembly? В данный момент я вижу области применения этой технологии, там где нужны вычисления, например: обработка изображений, видео, звука, игровая физика и т. д. На счет не быстрого js, у меня тоже есть сомнения как ни странно.


      1. nazarpc
        01.08.2016 16:24
        -2

        Не пишите чушь. DOM невероятно, фантастически быстр!


        А то, что вместо изменение одной маленькой ноды где-то глубоко народ вызывает element.innerHTML += 'xyz'; это никакой WebAssembly не исправит.
        Те же Polymer и React ускоряют работу страницы именно аккуратным обращением к DOM (хотя и используют разные подходы).


        Но в целом — да, WebAssembly может и сделает меньше нагрузку на CPU в рантайме, но больше чем на пару процентов прироста я бы не рассчитывал в общем случае. Вот для 3D графики, где много CPU времени использует именно JS код — там будет прирост.


        1. movl
          01.08.2016 17:23

          Возможно я не совсем ясно выразился про DOM, поэтому пример конкретный привел, где мало что будет зависеть от производительности непосредственно js, по моему мнению.


          И вы сами же написали:


          Те же Polymer и React ускоряют работу страницы именно аккуратным обращением к DOM

          Я собственно про обращения к API движка и говорил, и про то, что производительность зачастую упирается именно в это, по крайней мере в этих библиотеках.


      1. mr_tron
        01.08.2016 20:02
        -1

        А зачем вам нужен будет DOM? Можно будет делать нормальные нативные приложения.


        1. movl
          01.08.2016 20:17

          Вот сейчас сложно было. Если WebAssembly разрабатывается как язык, который выполняется в браузере, о какой нативности идет речь? И что в данном контексте нормальность?


          1. mr_tron
            01.08.2016 22:07
            -2

            Про флэш слышали? И сайты на флэше. Много там дом элементов было? По сути это аналог. Только в этот раз не проприетарщина от левой конторы, а открытый стандарт.


  1. Laney1
    01.08.2016 15:08
    +3

    Одной из наиболее важных особенностей является высокая производительность

    ну это миф. В бенчмарках у всех перечисленных библиотек (или фреймворков?) примерно одинаковые цифры


  1. AlexLeonov
    01.08.2016 16:56
    +2

    Неделя дурных переводов на Хабре открыта…


  1. potan
    01.08.2016 18:29

    А языки, которые сами по себе фреймворки, типа ELM, Вы не рассматриваете или считаете не перспективными?


  1. Ramallah
    01.08.2016 18:33
    +1

    google trends в данном вопросе более информативен чем статья.


  1. ModoStudio
    03.08.2016 10:32

    Автору спасибо! было интересно почитать! )