Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Перенос классовой системы Ext на Node.js (https://javascript.ru/forum/extjs/59561-perenos-klassovojj-sistemy-ext-na-node-js.html)

khusamov 16.11.2015 16:41

Перенос классовой системы Ext на Node.js
 
Можно ли выделить файлы, отвечающие за классовую систему ExtJS?

Чтобы в дальнейшем перенести ее в Node.js.

Или там сильно все привязано к браузеру?

novikov 17.11.2015 11:23

всё от Ext.Base

nohuhu 21.11.2015 04:44

Основные файлы в ext/packages/core/src/class/*. Загрузчик придётся свой сделать, наверное - проще будет, чем Boot.js ковырять. Родной Boot.js заточен под браузеры.

khusamov 21.11.2015 11:48

А что делает загрузчик? или это вы про Ext.Loader?

nohuhu 24.11.2015 01:28

Загрузчик в Ext JS разбит даже не на две, а на три части: Microloader, Ext.Boot и Ext.Loader.
  • Microloader используется в боевом режиме для высокоуровневого определения платформы (телефон/таблетка/PC) и загрузки соответствующего приложения, или набора приложений.
  • Boot отвечает за абстракцию метода загрузки скриптов и CSS файлов, отслеживание зависимостей при наличии декларации (Ext.manifest, генерируется Cmd), и общую бухгалтерию на уровне скриптов.
  • Ext.Loader оперирует уже на уровне классовой системы, реализует динамическую загрузку классов, ведёт списки соответствия имени класса к файлу, пинает Boot на загрузку скриптов и следит за тем, чтобы все классы загрузились. Ну и ещё по мелочи.

Ext.Loader в боевом режиме выключен по умолчанию, поскольку динамическая загрузка не нужна. По сути используется только для разработки и является наследием эпохи до Cmd.

Если быть совсем педантичным, то Ext.Loader в 5+ был растащен на более мелкие куски и теперь часть живёт в Ext.Inventory, часть в Ext.ClassManager (экземпляр Ext.Inventory), и часть в Ext.Loader.

Я всю прошлую неделю провёл в потрохах этой дребедени, поэтому воспоминания ещё трепещут. Спрашивайте, если что интересно. :)

khusamov 24.11.2015 12:47

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

khusamov 28.11.2015 16:04

Вроде кто-то уже сделал перенос: https://github.com/agebrock/extjs-node

nohuhu 30.11.2015 21:07

Не уверен, что это что-то работоспособное. Ext 4.0.0 пятилетней давности я бы даже палкой не стал трогать.

khusamov 30.11.2015 22:44

Там Колбаскин на пятую перенес, использует в своем проекте янус. Так что рабочее. У него там все перенесено кроме визуальных компонент.

nohuhu 30.11.2015 23:04

Вам виднее, я имел в виду GitHub репозиторий по ссылке. Там зачем-то имеется копия Ext JS 4.0.0, не уверен правда что она вообще используется - смотрел краем глаза.


Часовой пояс GMT +3, время: 17:48.