Хорошо. вы веб-разработчик или, может быть, хотите им стать? Если да, то вы, вероятно, знакомы со всеми статьями о Усталость от JavaScript, Усталость от JavaScript, Глубокие корни усталости от JS и Выход из положения усталости от JavaScript »среди других.

Слишком много инструментов, слишком много генераторов, слишком много API, слишком много настроек… и этот список можно продолжать и продолжать. Все это очень усложняет жизнь разработчикам нового JavaScript (и некоторых старожилов).

Может быть, вы веб-разработчик, использующий серверные части, такие как Ruby on Rails, PHP, .NET или JAVA, и вы создаете веб-приложения, отображающие серверную часть HTML, и слушаете классные вещи, которые вы могли бы делать, создавая одностраничные приложения. используя JavaScript. Если вы разработчик WordPress, вы можете подготовиться к использованию WP REST API для рендеринга клиентской части данных. Итак, несмотря на то, что вы разрабатываете приложения, плагины и многое другое, вы еще мало знаете о JavaScript и пытаетесь решить, что вам нужно изучить и какой путь вы должны выбрать в своем путешествии.

Читайте дальше… Я постараюсь синтезировать все это для вас… как-нибудь.

Но сначала позвольте мне рассказать вам свою историю.

Несколько лет назад я работал с Adobe Flex и Adobe AIR. Это была мощная интерфейсная платформа для создания одностраничных веб-приложений, мобильных приложений (через AIR) и настольных приложений - Windows и Mac OS (также через AIR). Однако, когда Стив Джобс решил убить Flash, мы (я и большинство других разработчиков Flex) решили перейти на новые пастбища. В большинстве случаев это относилось к JavaScript. Поскольку ActionScript (язык Flex и Flash) и JavaScript основаны на EcmaScript, переход должен был быть простым. Верно?

Неправильно!

Даже тогда в экосистеме JavaScript было слишком много вариантов. Я начал смотреть на Backbone, Ember и другие фреймворки MV * и не знал, что мне выбрать. Кроме того, я хотел иметь возможность интегрировать законченное решение, поэтому искал и серверные альтернативы. Я потратил некоторое время на изучение Ruby только для того, чтобы обнаружить, что мне нужен Ruby on Rails. Пытавшись изучить слишком много вещей, я решил сосредоточиться на более конкретных библиотеках, таких как D3. В конце концов, одним из моих основных интересов была интерактивная визуализация. Так что я мог построить всю визуализацию с помощью D3.js и получать данные из электронной таблицы Google или чего-то подобного.

Затем я решил забыть о серверной части и попробовать ее как услугу. Итак, я посмотрел на такие вещи, как StackMob и Parse. Оба были действительно многообещающими. StackMob был приобретен PayPal, а затем прекращен, в то время как Parse был куплен Facebook, а затем также сбит.

В 2013 году я нашел многообещающий Meteor.js. Он обрабатывал как внешний интерфейс, так и серверную часть (полный стек), используя только JavaScript, и это было проще, чем все, что я пробовал раньше. В некотором смысле простота объяснялась тем, что она была очень самоуверенной. Он работал только с MongoDB; слой представления обрабатывался Blaze (до того, как у них появился Spark), который имеет очень простую для понимания систему шаблонов. Помимо того, что она была простой в освоении платформой с полным стеком, она также работала в режиме реального времени. Это было волшебно.

Однако, как и все, что связано с технологиями, все быстро развивается. Angular и React развивались и становились все более популярными. Становились доступными другие библиотеки / фреймворки реального времени. Опять повсюду больше вариантов… больше неразберихи. AGG.

Если вы следите за новостями JavaScript (из любого информационного бюллетеня или блога), возможно, вы видели результаты опроса Состояние JavaScript, подготовленные Сашей Грейф. В этом документе он охватывает несколько категорий, поэтому я пойду по тому же пути и резюмирую некоторые из его выводов.

JavaScript аромат

Во-первых, хотя большинство из них использовали простой JavaScript, многие работали с ES6, и большинство, кто не интересовался этим. Итак, похоже, ES6 - это то, чему вы должны научиться, если хотите идти в ногу со временем. Если вы только начинаете, я рекомендовал изучить простой JavaScript и ES6 и, вероятно, пропустить CoffeScript и другие варианты. Я не заметил упоминания о jQuery в опросе, но полагаю, что он становится все менее популярным.

Фреймворки переднего плана

Что касается интерфейсных фреймворков, React - безусловно, лидер. Angular 1 также популярен, но большая часть людей, которые использовали его раньше, не будут использовать его снова. Может быть, потому, что сейчас Angular 2 уже существует, я не знаю. Angular 2 все еще очень новый, но 43% людей, принявших участие в опросе, не заинтересованы в его изучении. Ember и Backbone отстают, хотя они и более зрелые. Интересно, что Vue вызывает большой интерес.

Фреймворки полного стека

Согласно опросу, Meteor знают 90% всех опрошенных. Однако стек MEAN (Mongo + Express + AngularJS + Node.js) используется гораздо большим количеством разработчиков, чем Meteor, и уровень удовлетворенности выше: 66% для MEAN по сравнению с 59% для Meteor. MERN (Mongo + Express + React-Redux + Node.js) все еще известен, и большинство никогда не слышали о нем (81%), но те, кто его использовал, кажутся очень довольными (86%). Теперь, когда 43% разработчиков не заинтересованы в Angular 2, я полагаю, что стек MEAN станет менее популярным. Посмотрим.

Другие полнофункциональные фреймворки, такие как FeatherJS и DoneJS, не пользуются большой популярностью.

Если вас интересует Meteor, вам, вероятно, следует изучить React и / или Angular 2. Слой представления также можно обрабатывать с помощью Blaze, но в последнее время он становится менее интересным, поскольку и React, и Angular официально поддерживаются. Также есть пакеты для интеграции Vue с Meteor. Однако эти пакеты поддерживаются сообществом (не ЦРТ). Одним из преимуществ Meteor перед другими стеками является то, что настройка проекта упрощена, поскольку вам не нужно знать, как использовать средства запуска задач. Я думаю, что некоторые разработчики отошли от Meteor, потому что скорость изменений была слишком большой или потому, что они беспокоились о масштабируемости или о том, как интегрироваться с другими базами данных. Это мои предположения, поскольку они не были заданы и отражены в опросе, и основаны на том, что я читал на форумах.

Если вы думаете о работе со стеком MEAN. Возможно, вам придется изучить (если вы еще не знаете) Angular 1 и / или Angular 2, Typescript и средства запуска задач, такие как Bower, Gulp и Grunt.

Наконец, если вам интересно работать со стеком MERN, вам следует изучить React, Redux (управление состоянием) и Webpack.

Государственное управление

Если вы хотите стать веб-разработчиком, я слышу, как вы говоритеЧТО…?

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

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

Уровень API

Еще что-нибудь? Правда? Сложно заниматься веб-разработкой с использованием JavaScript, не так ли?

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

Согласно опросу, REST API являются наиболее распространенными и хорошо известными из них.

В опросе Firebase указана как уровень API, но я думаю, что это скорее серверная часть как услуга. Вроде того, чем был Parse. Кажется, он набирает обороты. У него есть бесплатный план для начала экспериментов, и он позволяет иметь дело с базой данных в реальном времени, аутентификацией, обменом сообщениями, хранилищем, хостингом и многим другим. Это продукт Google, поэтому он получает за это шоколадные баллы.

Кроме того, разработчики могут работать не только с JavaScript, но и со Swift, Objective-C, Java и C ++.

Следующим на очереди идет GraphQL, разрабатываемый Facebook. Согласно http://graphql.org/, GraphQL - это язык запросов для API и среда выполнения для выполнения этих запросов с вашими существующими данными. GraphQL предоставляет полное и понятное описание данных в вашем API, дает клиентам возможность запрашивать именно то, что им нужно, и не более того, упрощает развитие API с течением времени и предоставляет мощные инструменты разработчика.

Лично я считаю, что философия GrapgQL очень многообещающая. В настоящее время она не очень популярна, но многие разработчики заинтересованы в том, чтобы научиться ее использовать (76%).

Я думаю, что в краткосрочной перспективе Firebase будет расти больше, чем GraphQL, Apollo, Falcor и Horizon, потому что Firebase имеет более четкое ценностное предложение, как выразился сам Саша: серверная часть как услуга - она ​​заботится о серверной части, чтобы вы не обязательно.

Затем идет Falcor.js, который, согласно его сайту,

Falcor - это платформа данных, на которой работают пользовательские интерфейсы Netflix. Falcor позволяет моделировать все ваши серверные данные как единый объект Virtual JSON на вашем сервере Node. На клиенте вы работаете с удаленным объектом JSON, используя знакомые операции JavaScript, такие как получение, установка и вызов. Если вы знаете свои данные, вы знаете свой API. Falcor - это промежуточное ПО. Это не замена вашего сервера приложений, базы данных или инфраструктуры MVC. Вместо этого можно использовать Falcor для оптимизации взаимодействия между уровнями нового или существующего приложения.

Похоже, это похоже на GraphQL, не так ли? Судя по этому сообщению, есть несколько важных отличий. Оба занимаются запросами данных и управлением при разработке JavaScript, но имеют разные подходы к реализации. Вероятно, самая большая проблема заключается в том, что Falcor не является языком запросов.

Следующим по популярности является Аполлон. Во-первых, что такое Аполлон? По материалам Apollo Stack.

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

Итак, это реализация GraphQL, разработанная Meteor Development Group (MDG). Итак, вы можете подумать ... что это за штука ... именно? верно!

Далее идет Горизонт. Это серверная часть с открытым исходным кодом для приложений JavaScript в реальном времени. Horizon распространяется как автономный сервер для браузерных приложений JavaScript. Когда вы будете готовы написать собственный внутренний код, вы можете загрузить модули Horizon прямо в Node.js. RethinkDB входит в состав Horizon, поэтому вы можете делать прямые запросы к базе данных на сервере, используя мощный язык запросов ReQL, для гибких объединений, агрегирования, поддержки двоичных файлов и расширенных запросов.

Теперь я слышу, как вы говорите:
О боже, мне нужно научиться работать с другой базой данных (RethinkDB)?

Конечно, если вы увидите результаты опроса, вы увидите, что разработчики упомянули многие другие уровни API.

Я думаю, что в краткосрочной перспективе Firebase будет расти больше, чем GraphQL, Apollo, Falcor и Horizon, потому что Firebase имеет более четкое ценностное предложение, как выразился сам Саша: серверная часть как услуга - она ​​заботится о серверной части, чтобы вы не обязательно.

Но если вы хотите управлять своим собственным сервером, кажется, что рано или поздно вам захочется поиграться с GraphQL и Apollo. Хотя Falcor более известен, чем Apollo, я думаю, что Apollo скоро станет более популярным. Я считаю Horizon скорее полнофункциональным фреймворком, чем слоем API.

CSS

Ага. Если вы хотите разрабатывать или учиться разрабатывать веб-приложения (а также мобильные приложения и настольные приложения с использованием JavaScript), вам необходимо научиться писать и обрабатывать свой CSS.

И да, CSS - тоже сложный беспорядок. Есть много вариантов, включая препроцессоры, которые расширяют возможности CSS, такие как SASS, LESS, модули CSS, Stylus, PostCSS и другие.

У всех из них тоже есть приличная кривая обучения.

Вдобавок к этому вы можете рассмотреть возможность использования CSS-фреймворка, такого как Bootstrap, Material UI, Foundation и т. Д.

Если вы используете React, вы можете стилизовать свои приложения с помощью CSS в JavaScript. Итак, снова варианты и другие варианты. Глоток!

Инструменты сборки

Webpack вызывает наибольший интерес. Grunt, Gulp и Browserify по-прежнему популярны, но теряют позиции.

Есть ли еще что-то, что нужно учитывать?

Если вы прочитаете результаты опроса, вы увидите, что есть и другие категории, такие как тестирование, мобильные фреймворки и многое другое. Однако предположим, что вы читаете это, чтобы попытаться понять, чему учиться и какой путь выбрать. Итак, пока вы можете пропустить другие разделы. Это не значит, что вам не следует беспокоиться о тестировании и прочем. Но, по крайней мере, вы можете отложить это на потом и постараться не волноваться :)

Итак, что мне следует узнать ... вы можете спросить

Ну, как и все, зависит от того, где вы находитесь в пути и каковы ваши цели.

Предприниматель / новичок в разработке веб-приложений

Если вы предприниматель или кто-то, кто мало знает JavaScript, HTML и CSS и ваша цель - разработать рабочий прототип или MVP (минимально жизнеспособный продукт), вероятно, лучший путь:

Изучите простой JavaScript. Несмотря ни на что, вам нужно понимать хотя бы базовые концепции JavaScript. Не беспокойтесь о jQuery.
Изучите ключевые особенности ES6, такие как объявления переменных, функции стрелок и деструктурирование.
Изучите HTML5.
Изучите основы CSS.
Затем выберите фреймворк JavaScript. Забудьте Backbone или Ember и сосредоточьтесь на React или Angular 2. Я рекомендую использовать React.

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

В моем конкретном случае я перешел от Flex к Meteor, и когда люди начали говорить об использовании React (или Angular) вместо Blaze, я очень не решался изучить какой-либо из них. Я хотел сосредоточиться на результатах, а не на изучении большего количества библиотек / фреймворков. Однако, поскольку было ясно, что будущее за Blaze, я решил изучить React. Angular находился в процессе перехода от Angular 1 к Angular 2, поэтому React был более четким выбором.

Я получил React очень быстро. С философской точки зрения он очень похож на Flex, и его легче поддерживать, чем Blaze.

Далее вы можете выбрать стопку. Чтобы упростить запуск, я рекомендую использовать Firebase, если вы не хотите иметь дело с серверной частью, или Meteor, если вы хотите все это контролировать.

Хорошая вещь с Meteor заключается в том, что вам не нужно заботиться о средствах выполнения задач / процессе сборки. Таким образом, вам будет меньше о чем учиться и о чем беспокоиться. И если вы решите использовать React или Angular для создания и рендеринга компонентов, все эти знания можно будет перенести в другие стеки.

В Meteor большая часть работы выполняется во внешнем интерфейсе. Итак, в зависимости от вашего приложения, на серверную часть будет затрачено всего 5% усилий.

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

Разработчик переходит на JavaScript

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

Итак, вы должны хорошо освоить ES6 и начать изучать ES7. Кроме того, вы должны выбрать React и / или Angular 2 и соответствующий стек, MERN или MEAN соответственно. Если вы еще не знакомы ни с одним из них, выберите маршрут Meteor. Это позволит быстрее набрать обороты.

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

Узнайте, как создавать веб-приложения с помощью Meteor & React

Узнайте, как создавать приложения реального времени, используя только JavaScript, путем создания полного приложения для опроса.

Вывод

Стек технологий постоянно меняется, и есть слишком много вариантов. Это особенно верно в экосистеме JavaScript. Несколько лет назад большинство фреймворков было основано на шаблонах Model View Controller (MVC или MV *), адаптированных из внутренней разработки. В настоящее время это, как правило, архитектура, в большей степени основанная на компонентах.
Чтобы быть в курсе, разработчики должны понимать тенденции и следовать тем, которые могут иметь для них больше смысла в соответствии с их целями: создавать рабочие прототипы максимально быстро и адаптироваться после определения рынка - продукт, подходящий для предпринимателей; или развить нужные навыки, чтобы быть востребованными разработчиками, а не предлагать ценность на рынке.

Пожалуйста, ответьте на этот опрос

Как вы думаете?
Помогает ли вам это письмо как-то или усугубляет путаницу?
Пожалуйста, дайте мне знать в комментариях ниже.

Первоначально опубликовано на MeteorLife.com

Считали этот пост полезным? Пожалуйста, нажмите кнопку ❤ ниже! :)

Об авторе
Гилберт Мизрахи - технолог, предприниматель и хакер, ведущий блог о Meteor и инструктор по Udemy. Вы можете связаться с ним в Twitter, Facebook и LinkedIn.