2014-12-22 3 views
1

Я полагаю, что в конце дня я ищу эквивалент старого ExtJS «создайте свой собственный». Я знаю, что sencha «нахмурился», которые решили, что это не способ создать приложение, но мои требования не соответствуют этому.Пользовательская сборка ExtJS 5 с использованием юй-компрессора или другого?

В принципе, у меня очень большое корпоративное приложение. Js, который будет загружен в каждый отдельный клиент, будет варьироваться в зависимости от их профиля пользователя, доступа к безопасности и т. Д. Это приложение J2EE, а пользовательская конфигурация хранится в базе данных.

Кроме того, чтобы предотвратить загрузку огромного количества неиспользуемого javascript, необходимый скрипт для каждой отдельной конфигурации загружается «на лету», поскольку пользователь запрашивает «страницу». Это хорошо работает для нас по ряду причин, не в последнюю очередь, что пользователи с более низкими правами безопасности не загружают сценарий в свой браузер, который они не смогут использовать - серверная сторона может управлять тем, какие пользователи могут загружать отдельный скрипт, это предотвращает ненадежные пользователи просматривают скрипт, ищущий уязвимости.

У нас также есть несколько пользователей в удаленных местах с низкой пропускной способностью и/или мобильными соединениями, и поэтому размер начальной загрузки ext-all.js становится проблемой.

Sencha cmd не работает для нас. Это не соответствует нашей модели, поскольку она не может сканировать весь код для зависимостей, и мне нужно, чтобы код ExtJS был отделен от кода приложения.

Итак, в конечном счете, я ищу способ разумно сократить размер ext-all.js, удалив части, которые мы не используем. Я также хотел бы создать пользовательские версии, которые код на стороне сервера может выбирать «на лету» в зависимости от профиля пользователя и требования (то есть версии с голыми костями для мобильных устройств и полной версии для администраторов системы). Я рад, что должен поддерживать какой-то список/сценарий зависимостей, который затем я могу запустить через Sencha Cmd или yui-compressor для создания файла сборки, но действительно задаюсь вопросом, как это сделать. Там должен быть скрипт сборки где-то, что дает ext-all.js - это то, что я могу изменить и сократить, чтобы удовлетворить мои потребности?

В качестве альтернативы есть способ настройки Sencha Cmd для создания отдельного файла ext.js для фиктивного «приложения», в котором я помещал скелетный код для функций extjs, которые мне нужны, и он создаст чистый файл ext.js без включается фиктивный код приложения? Таким образом, если я использую новую функцию extjs в своем производственном коде, я могу добавить ссылку на это в фиктивное приложение и восстановить новую версию ext.js.

ответ

1

Я думаю, что, возможно, неправильно понял ваш вопрос, но разве это не означает, что команда Sencha Command должна работать? Добавив в класс конфигурацию requires, вы заявляете, что это зависит от работы другого класса. Sencha Command понимает это и создаст вам файл, содержащий только этих зависимостей. Однако, если у вас есть частичные сборки (как вы, кажется, указываете, что делаете в качестве меры безопасности), тогда это становится более сложным.

Cmd делает позволяют делать пользовательские сборки, и вы можете увидеть часть того, как сделать это здесь:

http://docs.sencha.com/cmd/5.x/advanced_cmd/cmd_compiler_reference.html

ИМО это все тупо сложным и является чем-то, что будет нужно несколько человек, но, по крайней мере, Это здесь. В вашем случае, внизу внизу этой страницы вы можете увидеть упоминание «Директивы if», и это звучит так, как будто оно может соответствовать вашим требованиям, по крайней мере частично. Могли бы вы обернуть определенные биты кода в директиве if, которая диктует какой-то «уровень доступа»?

Однако, как вы говорите, вы могли бы поддерживать все свои зависимости вручную - это было бы больно, но я думаю, что это можно было бы сделать. Поскольку Ext JS связывает весь исходный код в отдельных файлах, вы, вероятно, могли бы генерировать пользовательскую сборку таким образом. Вы можете быть в состоянии использовать способность CMD, чтобы генерировать различные типы метаданных, чтобы помочь с этим:

http://docs.sencha.com/cmd/5.x/advanced_cmd/cmd_metadata.html

Отъезда в раздел «Экспортные Имена файлов», который позволит вам получить список файлов, которые содержат классы ваших приложение зависит от. Вы также можете обрабатывать эти файлы с помощью Cmd или другой сборки.

1

Есть три основных подхода, которые Вы можете использовать здесь:

  • Если это так, что разные пользователи в основном имеют свои собственные версии приложения, вы можете использовать пометку, согласно the Sencha CMD docs (как отмечено в ответ Колина Рамсей). Это позволит вам создавать несколько версий вашего приложения, каждый из которых будет уменьшен и дополнен соответствующими подмножествами. Затем вы можете направлять пользователя в соответствующую версию при входе в систему.

  • Если существует значительная функциональность, которая используется только изредка, и вы не хотите ее загружать каждый раз, вы можете использовать Sencha CMD Packages для создания связанных файлов &. Затем их можно загрузить на лету, используя Ext.Loader. Обратите внимание, что в этом случае вам нужно обратить внимание на то, что требует пакет, поскольку он не включен по умолчанию.

    • Или ... Вы можете пропустить режим весь «упаковано приложение», и использовать простой ext.js файл, который не имеет никаких зависимостей, и полагаться на Ext.requires функциональности, чтобы загрузить свой собственный код динамически. Это может быть дополнено созданием небольшого приложения, которое требует большинство общих виджетах пользовательского интерфейса &, которые являются общими для большого количества модулей.