Sencha ExtJS. Хороший, плохой, злой

В сети Интернет довольно много обзоров молодых проектов Angular 2 и ReactJS. Обзор ExtJS будет уместен, так как эти три фреймворка являются основными игроками в корпоративном мире. Особенно после выхода ExtJS 6.

ExtJS. Хороший

MVVM

Основных претензий к ExtJS было три. Первый - это почти полное отсутствие возможности покрыть код тестами. Очень популярная версия ExtJS 4.2 реализована по типу MVC. Проблема в том, что MVC от Sencha не совсем являлся тем самым привычным MVC. Это становится понятно только после некоторого времени, проведенным за использованием фреймворка. Особенно страдали те разработчики, которые привыкли покрывать код тестами, потому что для того, чтобы протестировать что-либо в контроллере, необходимо было обязательно иметь представление. Можно было протестировать контроллер без представления только если использовать виртуальное представление или иметь возможность отображать виртуальный DOM, как в React JS.

К счастью, в ExtJS 6 создатели представили альтернативную структуру. Sencha обеспечили реализацию MVVM. В представлении предоставляется свой макет, декларативный синтаксис для доступа к состоянию представления из модели представления и для указания обработчиков событий, вы используете блоки прослушивателя, которые сообщают представлению, какие методы вызывать в ассоциированном классе ViewController.

В ViewController ваши методы могут обращаться к модели представления, вызывая getModel () и могут устанавливать состояние представления, вызывая метод Set () в ViewModel. Как только это будет сделано, View может обновиться с использованием нового состояния ViewModel. Для тестирования это означает, что появилась возможность протестировать без View, переопределив метод ViewContoller.getModel (), чтобы вернуть ViewModel.

Всё, что может потребоваться

Одним из самых больших преимуществ при использовании Ext JS является то, что практически все, что может понадобиться, предоставляется в одном продукте. В отличие от Angular или React JS, где один проект предоставляет инфраструктуру, а другой проект (или проекты) предоставляет компоненты, почти все, что потребуется для создания приложения, предоставляется из коробки. Это не означает, что сторонних поставщиков для Ext JS нет, но потребность в них минимальна.

Поддержка большинства браузеров

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

Адаптивный дизайн

Несмотря на то, что Ext JS использует нестандартный способ визуализации элементов управления, Sencha удалось добиться адаптивности и адаптивных дизайнов.

Возможность управления DOM

Наконец, если возникли проблемы с достижением производительности в соответствии с текущим способом внесения изменений в DOM, вы с удовольствием узнаете, что ExtJS предоставляет способ рендеринга в DOM сразу после изменения. Если вы вставляете новые элементы DOM, то они сразу отображаются.

ExtJS. Плохой

Запрет изменения

Если вы решили использовать ExtJS, то вы действительно более скованы, чем если бы вы решили использовать Angular или React. С любым из этих двух можно написать стандартный Javascript и смешивать или сочетать несколько различных существующих структур. Поскольку почти все в ExtJS является проприетарным, то смешивания и сопоставления не рекомендуются.

Не работает с директивой strict

В стандартный Javascript лучшей практикой считается использовать директиву “use strict”, чтобы использовать исправленный от глупых ошибок стандарт. К сожалению, вы не можете сделать это в коде ExtJS.

Строчный язык

Ext JS, вероятно, является самым строчным фреймворком, который когда-либо существовал. Хотя теперь есть плагины для некоторых из наиболее популярных IDE, которые помогают написанию, но с точки зрения стандартного JavaScript, есть намного лучшие способы написания кода, чем это предлагает ExtJS.

Версия x.0.0 всегда сломана

Это уже становится привычным, что каждая версия x.0.0 является ошибкой. Вещи, которые раньше работали в предыдущей версии, больше не работают. Несмотря на утверждение Sencha, у них есть тысячи тестов.

ExtJS. Злой

Уродливый HTML

В ExtJS есть что-то некрасивое, но нет ничего более уродливого, чем создаваемый HTML. Это связано с тем, что для создания представления, которое будет отображаться в любом браузере, они прибегают к использованию таблиц HTML для рендеринга практически каждого стандартного элемента управления. Sencha с каждым релизом исправляет это. В Ext JS 6 меньше HTML, чем было в Ext JS 4, но он все еще относительно уродлив.

И эта проблема может исчезнуть завтра, если они откажутся от попыток контролировать визуализацию представления через JavaScript. Непонятно зачем делать на JavaScript то, что в CSS можно сделать и НАМНОГО лучше.

SAAS - это не SAAS

Вплоть до версии 6, движок Sencha использовал стандартный SASS. В версии 6 они заменили стандартный SASS своей собственной реализацией, которая в основном делает то, что делает SASS, но имеет несколько изменений, которые не являются плохими, синтаксис в основном тот же. Тем не менее это не лучшее решение Sencha.

Нестандартные инструменты сборки и минимизации

ExtJS использует собственные инструменты для сборки конечных приложений. Наряду с использованием их собственной версии SASS, есть собственная реализация сборки и минимизации. Почему бы не использовать Gulp или Grunt и не позволить нам связать наши приложения? Но у Sencha есть своя реализация.

Нестандартный Javascript

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

И поскольку, невозможно использовать «use strict» для текущей реализации фреймворка, это заставляет задуматься о том, какие будущие улучшения языка Javascript станут недоступны, потому что Sencha думает, что у них есть лучшая идея.

Ничего не найдено.