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

в 15:47, , рубрики: javascript, web-разработка, Программирование

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

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

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

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

К примеру, решаете вы использовать ES6 синтаксис, но Typescript говорит, что он не может использовать ваш Map как массив, пока вы не выставите target = es6 (точнее, это вам говорит гугл). Выставляете, но теперь Typescript ругается на дублироване объявлений в es6-shim.d.ts. Убираете эти объявления, но теперь uglify ругается, что он не может понять, что такое let (точнее, это вам говорит гугл, т.к. в ошибке что-то невнятное и не относящееся к 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, сложно же было префиксовать свои лоадеры).

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

Автор: zim32

Источник


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js