Эй, JavaScript не так уж и плох

Я довольно активный подписчик r/ProgrammerHumor, и я видел несколько мемов и шуток, которыми мы, бэкенд-разработчики, делимся за спиной у фронтенд-разработчиков об их любимом языке. И, честно говоря, шутки определенно были навеяны реальностью. Ванильный Javascript имеет тенденцию быть чрезвычайно (возможно, излишне многословным), проекты, как правило, имеют 15 670 библиотек или более, 15 667 из которых в конечном итоге не важны для реального проекта, а 2 из 3 критически важных не работают, а обработка ошибок javascript действительноужасна.

Что ж, я только что взялся за масштабный проект VueJS, а также создал игру на Javascript, чтобы понять, как Javascript функционирует как язык, и глубже вникнуть в язык. Вот Хорошее, Плохое и Уродливое (из моего опыта).

Добро

Я буду честен с вами, мне очень понравилось программировать на javascript (вы подумаете, что я мазохист, когда прочитаете плохое/уродливое). По какой-то причине это сделало разочарование приятным, и я не совсем понимаю, почему.

В настоящее время я работаю над проектом VueJS, который является совершенно секретным (не говорите никому, иначе я выдам вам ошибку времени выполнения) и, честно говоря, VueJS делает программирование на JavaScript намного проще и эффективнее. непринужденный, чем VanillaJS. Он абстрагируется от всех утомительных манипуляций с DOM и объединяет задачи нескольких других библиотек, представляя их в удобочитаемом, надежном и чистом виде. (За это нужно платить, о чем я расскажу в разделе «плохое/уродливое»).

Самое приятное в Vue то, что полный новичок в javascript (или даже программист, который никогда раньше не программировал на JS) может почти сразу освоить этот язык! Существуют удобные реализации условного и итеративного рендеринга (v-if и v-for соответственно), которые покажутся знакомыми любому, у кого есть опыт программирования.

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

Плохой (или раздражающий)

Обратите внимание, что я не упомянул VanillaJS.

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

Помните, как я говорил, что VueJS во многом абстрагируется от Vanilla JS и сколько стоит абстракция? Что ж, VueJS страдает от вещей, о которых я слышал во всех сообществах программистов: он по-прежнему будет компилироваться, а затем заваливать вас ошибками в самую последнюю секунду. Он делает это постоянно, и отследить ошибки до их источника чрезвычайно сложно, потому что код в браузере полностью отличается от кода, который вы пишете в Visual Studio Code.

Это проблема всех фреймворков javascript, будь то React, Vue, Meteor, Ember или Angular. Я предполагаю, что это связано с тем, что javascript использует компилятор JIT (Just in Time), но я не слишком углублялся в эту проблему.

Уродливый

Я очень люблю Vue, его гораздо интереснее использовать, чем React и Angular, и мне очень нравится программировать с его помощью, поэтому мне нечего сказать о нем.

Да, я скажу это здесь и сейчас: я действительно оченьпрезираю VanillaJS для программирования веб-приложений. Это тяжело, разочаровывающе, запутанно и очень утомительно, и я благодарю лордов и леди круглого стола Frontend за то, что они поделились с нами своей мудростью в виде фреймворков Javascript.

Хорошо, это может быть немного преувеличено, но меня раздражает программирование на javascript.

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

Другая проблема заключается в том, что синтаксис может сильно различаться в зависимости от того, кого/что вы читаете. Например, когда я впервые изучал javascript, я просматривал репозиторий друга на github, где он участвовал в соревнованиях по программированию. Я едва мог понять, что он делал в каждой строке, хотя то, что он сделал, было тем, что я мог бы сделать. себя (тоже он не понимает, что такое комментарий). Судя по всему, он был написан на ES6/typescript. Иди разберись.

Последняя проблема, с которой я столкнулся (которую я не хотел бы описывать здесь — их больше, но мне просто нужно научиться их формулировать), — это просто неудобная кодировка. Манипуляции со строками раздражают, синтаксис может включать в себя множество $, ``, |, ? И список продолжается. Вводить код кажется громоздким, и иногда я ловлю себя на том, что ищу ключи, о существовании которых забыл.

Вывод

Javascript — это весело, но разочаровывает. Другими словами, я думаю, мы отлично поладим.