Ext JS — это фреймворк приложений JavaScript для создания интерактивных кроссплатформенных веб-приложений [2] с использованием таких методов, как Ajax , DHTML и DOM -скриптинг. Его можно использовать как простой компонентный фреймворк (например, для создания динамических сеток на статических страницах), а также как полноценный фреймворк для создания одностраничных приложений (SPA).
Первоначально созданный как дополнение к библиотеке расширения [3] YUI Джеком Слокумом 15 апреля 2007 г., [4] Ext JS не имеет зависимостей от внешних библиотек, начиная с версии 1.1. [5] В настоящее время Ext JS можно использовать как в качестве отдельного скрипта (со всеми классами и компонентами в одном файле), так и путем сборки приложения с помощью Sencha Cmd.
Ext JS включает в себя набор элементов управления формами на основе графического интерфейса (или « виджетов ») для использования в веб-приложениях:
Sencha также предоставляет несколько тем для стилизации компонентов. Изменение темы требует простого изменения CSS и скрипта темы. При использовании Sencha CMD может потребоваться пересборка приложения. [6]
Все компоненты должны работать с каждой темой, но их внешний вид и ощущения изменятся. Например, тема Classic имеет довольно мелкие элементы, не подходящие для сенсорных устройств. Тема Neptune Touch имеет более крупные элементы, которые лучше подходят для планшетов и телефонов.
Ext JS поставляется в двух вариантах, называемых современным и классическим набором инструментов. Они отличаются не только доступными темами, но и некоторыми различиями в API. Поэтому перейти с одного набора инструментов на другой не так просто, как для тем. Планируется сгладить некоторые различия между наборами инструментов в Ext JS 7.1, который запланирован на 2019 год. [ требуется обновление ] [7]
Ext JS — это композиция классов, которая имеет много возможностей. Некоторые примеры:
Ext.isArray
, который можно использовать в качестве замены Array.isArray
)Ext.Ajax.request
т.д.)Ext JS имеет собственную систему классов. [8] [9] Классы определяются с помощью Ext.define
, а затем экземпляр может быть создан с помощью Ext.create
. Некоторые классы (например, компоненты и хранилища) могут иметь псевдонимы и могут быть созданы с помощью псевдонима. Экземпляры компонентов создаются автоматически при создании родительского компонента.
Класс может расширять как пользовательские, так и встроенные классы. Обычно пользовательские компоненты расширяют встроенные компоненты (например, MyApp.views.ProductsTable
расширяют встроенные Ext.grid.Panel
). [10]
Существует встроенный динамический загрузчик, поэтому классы могут иметь динамические зависимости (загружаемые по требованию). В ExtJS есть два типа зависимостей. Зависимости, объявленные с помощью requires
свойства, загружаются до создания экземпляра класса. Зависимости, определенные в uses
свойстве, могут быть загружены после создания экземпляра класса.
Также возможно переопределять классы. Даже встроенные классы. Переопределение встроенных классов может быть полезным, например, для обеспечения интернационализации [11] или создания патчей. Переопределенный класс объединяется с новым объявлением. Каждый класс может быть переопределен столько раз, сколько требуется (например, предоставляя i18n, а затем l10n).
Ext JS версии 2.0 был выпущен 4 декабря 2007 года. Эта версия была представлена как предоставляющая интерфейс и функции, более похожие на те, которые традиционно ассоциируются с настольными приложениями. Также были представлены новая пользовательская документация, документация API и примеры. [12]
Ext JS 2.0 не обеспечивал обратной совместимости с версией 1.1. Для решения этой проблемы было разработано руководство по миграции. [13]
Ext JS версии 3.0 был выпущен 6 июля 2009 года. Эта версия добавила поддержку связи для REST и новую серверную платформу Ext.Direct. Новые элементы flash charting и ListView были добавлены к стандартным компонентам отображения. Она была обратно совместима с кодом версии 2.0.
Версия 4.0 фреймворка Ext была выпущена 26 апреля 2011 года. Она включает в себя полностью переработанную структуру классов, [14] переработанный пакет данных, пакет анимации и рисования, который использует SVG и VML , [15] и переработанные диаграммы и темы. Она также включает в себя дополнительную архитектуру, которая обеспечивает стиль организации кода model–view–controller (MVC).
Версия 5.0 фреймворка Ext JS была выпущена 2 июня 2014 года. [16] Она включает в себя возможность создания настольных приложений на устройствах с сенсорным экраном [17] — с использованием единой кодовой базы, архитектуры Model View ViewModel ( MVVM ), двусторонней привязки данных, адаптивных макетов и других обновлений компонентов с поддержкой добавления виджетов внутри ячейки сетки для визуализации данных и аналитики больших данных. [18] Ext JS 5 также включает в себя обновленный пакет диаграмм, оптимизированный для сенсорного экрана, а также дополнительные возможности построения финансовых диаграмм.
Ext JS 5 поддерживает современные и устаревшие браузеры, включая Safari 6+, Firefox, IE8+, Chrome и Opera 12+. На мобильной платформе Ext JS 5 поддерживает Safari на iOS 6 и 7, Chrome на Android 4.1+ и устройства с сенсорным экраном Windows 8 (например, Surface и ноутбуки с сенсорным экраном) с IE10+.
Важно: начиная с версии Ext JS 5 вы не можете купить лицензию менее чем для 5 разработчиков.
Версия 6.0 фреймворка Ext JS была выпущена 1 июля 2015 года. [19] Она объединяет фреймворк Sencha Touch (мобильный) с Ext JS. [20]
Версия 7.0 фреймворка Ext JS была выпущена 29 августа 2019 года. [21] Эта версия представила несколько новых компонентов в Modern Toolkit. Classic Toolkit получил тему Material Design .
15 июня 2010 года было объявлено о слиянии Ext JS с JQTouch и Raphaël [22], в результате чего образовалась новая организация под названием Sencha Inc. Ext JS по-прежнему доступен в качестве основного продукта на новом веб-сайте Sencha [23] вместе с Sencha Touch , Sencha GWT (теперь Sencha GXT), Sencha Architect, Sencha Animator и Ext core.
23 августа 2017 года Sencha была приобретена IDERA (которая, в свою очередь, владеет Embarcadero Technologies ). Embarcadero известна поглощениями программного обеспечения для быстрой разработки приложений, такого как Delphi (который использует Object Pascal в качестве своего основного языка программирования). [24]
Плагин JetBrains от Sencha — это интегрированный инструмент среды разработки, который создает слияние между Sencha Frameworks и программным обеспечением JetBrains. Эта интеграция осуществляется в форме автодополнения кода , проверки и предложения, взаимодействуя с собственным поведением JetBrains.
Ext.NET — это компонентный фреймворк ASP.NET , интегрирующий библиотеку Ext, [25] текущая версия (по состоянию на сентябрь 2017 г.) — 4.4, которая интегрирует ExtJS версии 6.5.1.
YUI-Ext был доступен по лицензии BSD . В апреле 2008 года лицензия с открытым исходным кодом, связанная с Ext, была изменена. В версии 2.0.2 авторы заявили, что Ext доступен по лицензии в стиле LGPL , если вы «планируете использовать Ext в личных, образовательных или некоммерческих целях» или «в проекте с открытым исходным кодом, который исключает использование не-открытого программного обеспечения» или «используете Ext в коммерческом приложении, которое не является библиотекой или набором инструментов для разработки программного обеспечения». Это больше не относится к Ext 2.1. [26] Авторы Ext утверждают, что раздел 7 [27] LGPL в его нынешней формулировке не применяется к «условиям», которые требовала их лицензия до того, как было разрешено распространение по LGPL, в отличие от «дополнительных ограничений», которые раздел 7 позволял дистрибьютору удалять. [28]
20 апреля 2008 года Ext 2.1 был выпущен под новой двойной лицензионной структурой, которая допускала варианты полной лицензии GPL 3.0 или проприетарной лицензии. [29]
Изменение лицензии с течением времени от разрешительной лицензии с открытым исходным кодом к ограничительной двойной лицензии вызвало споры в сообществе пользователей Ext. [30] [31] [32] [33]
Sencha опубликовала подробную информацию об условиях своей коммерческой и GPL лицензии на своем веб-сайте. [34]
В ноябре 2018 года Sencha анонсировала Community Edition, которая бесплатна, но ограничена годовым доходом человека или компании, использующей ExtJS. [35] [36]
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )