[recovery mode] Соверменная WEB разработка. Как мы пришли к такому?

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

Костыли нас поджидают повсюду: начиная от серверных заголовков призванных обеспечить безопасноть приложений (CSP), заголовков обеспечивающих взаимодействие между приложениями (Cross-origin resource sharing) и заканчивая инструментариями сборки.

Решая одну проблему, мы создаем пару новых и они уже как снежная лавина несутся, снося все на своем пути. Если сомневаетесь, можете посмотреть статистику вопросов на стековерфлоу где джаваскрипт уже бесспорный лидер.

Есть в зале люди которые пытались к примеру написать проект на Anaular 2 и собрать его используя Webpack? Это сущий ад.

К примеру решаете вы использовать ES6 синтаксис, но Typescript говорит что он не может использовать ваш Map как массив, пока вы не выставите target = es6. Выставляете, но теперь Typescript ругается на дублироване объявлений в es6-shim.d.ts. Убираете эти объявления, но теперь uglify ругается что он не может понять что такое let… Прикручиваете babel. Но теперь Ulgify переименовал [ngClass] в [ngclass] и ангулар ругается что не знает такого свойства у элемента…

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

И этот кошмар повторяется снова и снова.

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

Grunt, Gulp, Broccoli…
R.js, Browserify, SystemJS Builder, Webpack…
Flux, Redux, … поставьте свое

И это тоже продолжается до бесконечности. Какие-то проекты даже не успевают выйти из беты, как уже безнадежно устаревают или не взлетают (Polymer к примеру). Какие-то проекты появляются непонятно зачем и дублируют то что уже есть (WebRX).

Webpack, как по мне, это вообще идеал костылестроения. Спасибо ему хоть за то что собрал многие костыли в одном месте. (Правда теперь npm полон модулями с неоднозначными названиями по типу raw-loader, base64-loader, сложно же было префиксовать свои лоадеры).

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

© Geektimes