Взгляд на странный мир современного JavaScript

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

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

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

Однако он также делает JavaScript невероятно мощным, потому что язык развивается и совершенствуется такими быстрыми темпами. На сегодняшний день наиболее широко поддерживаемая спецификация проходит под знаком ECMAScript 5 (сокращенно ES5), который родился и начал развиваться в 2009 году. Также есть ECMAScript 6 и ECMAScript 2016+, из которых меньше поддержки, в то время как браузеры и другие платформы играют в уловку. вверх.

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

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

Итак, как разработчик может использовать новые функции ECMAScript и / или TypeScript (или придерживаясь аналогии, испанский и эсперанто соответственно) и при этом создать решение с поддержкой для нескольких браузеров и платформ? Транспилинг, вот как. Да, верно, это не опечатка, это термин ПЕРЕВОЗКА. Это нечто среднее между переводом и компиляцией, оно берет ваш потенциально неинтерпретируемый код и преобразует его в более широко известный синтаксис, по сути, ECMAScript 5 (Latin).

Один из способов транспиляции - использовать инструмент сборки, такой как Grunt, Gulp или Webpack, обычно в сочетании с Babel (транспилятор). Эти инструменты позволяют разработчикам разбивать свои проекты на управляемые модули, а затем объединять их в одно распространяемое решение. С помощью инструмента сборки код можно сжимать, искажать, транспилировать и выполнять многие другие задачи типа «придуманный глагол».

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

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

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

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

Мирские новички, не заблудитесь в транспиляции. Найдите время, чтобы изучить основы.

Что вы думаете? Оставляйте любые вопросы или отзывы в комментариях. Спасибо!