Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   ExtJS и серверный фреймверк - как лучше сделать? (https://javascript.ru/forum/extjs/46699-extjs-i-servernyjj-frejjmverk-kak-luchshe-sdelat.html)

xintrea 19.04.2014 21:31

ExtJS и серверный фреймверк - как лучше сделать?
 
Интересует вопрос о том, как лучше использовать ExtJS с серверными PHP-фреймверками.

То есть, вопрос по архитектуре приложения.

Когда начинаешь работать с ExtJS, получается, что вся логика сосредоточена на клиенте в JavaScript. А на сервере должны существовать только сервисы-ответчики, которые предоставляют данные (по AJAX) клиентским JS-моделям.

Поэтому вопрос 1 - имеет ли смысл использовать ZendFramework или там Yii или там CodeIgniter? Или это будет сплошной оверхед? Достаточно ли просто пользоваться на сервере возможностями PHP плюс какой-нибудь ORM?

Вопрос 2 - где и как хранить код объектов ExtJS? Хранить как статику в в видет простых файлов в директории? Хранить в директории видов PHP-фреймверка и генерировать JS-код PHP-фреймверком? Какие-то смешанные техники?

Вопрос 3 - имеет ли смысл использовать совместно с ExtJS библиотеку JQuery?

В общем, расскажите, как у вас устроены приложения с ExtJS.

Makarov 19.04.2014 22:11

1. Я не пхпшник, поэтому хз. Вообще очевидно зависит от того какая логика ожидается на сервере, и нужны ли навороты предоставляемые фреймворками. Системы "навороченный клиент" + "навороченный сервер" тоже возможны и встречаются, все зависит от задач.
Там где я работаю, сервер написан на .net и логики там много.
На клиенте тоже много)

2. Генерировать приложения на extjs серверным php? Мсье знает толк) По каким причинам Вы собираетесь это делать?)
View мы правда тоже генерим с помощью sencha architect, но самому писать такую штуку убьешься.
архитектура взаимодействия - rest
Код храним просто как статические файлы, mvc позволяет в них не путаться, на продакшне храним минифицированный файл для юзера и все остальное для отладки.

3. Я такое тоже видел, использовать их вместе вполне возможно даже в больших приложениях, они друг друга не переписывают. Вот только зачем? Jquery - это как шило. Им можно успешно делать что-то одно, лаконично и хорошо. Extjs - это как швейцарский армейский нож - в нем есть все необходимое, и еще вагон всего что никогда не пригодится. Шило тоже есть, правда не столь удобное.

xintrea 19.04.2014 23:19

Цитата:

Сообщение от Makarov (Сообщение 308450)
Генерировать приложения на extjs серверным php? Мсье знает толк) По каким причинам Вы собираетесь это делать?)

Ну, например, когда нужно сделать универсальный класс экранной таблицы. Чтобы не в JS коде статически прописывать имена полей, URL-ы для CRUD-обработчиков и прочие свойства. А чтоб весь этот JS-код генерировался на сервере.

Или так не делается, ибо очень сложно?

Makarov 20.04.2014 00:38

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

Применительно к динамической генерации js на сервере - для extjs я такого не видел. Возможно потому что это будет во-первых сложно, во-вторых, огромно и неизящно, в-третьих, самое главное, с трудом поддерживаемо. Возможно в каких-то конкретных случаях это и может оправдано, но как общий подход - врядли

xintrea 20.04.2014 23:37

Понял, спасибо.

novikov 21.04.2014 17:03

Sencha Cmd создаёт свою структуру директорий
 
Компания Sencha бесплатно раздаёт разработчикам приложений на ExtJs свой продукт для автоматизации Sencha Cmd

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

У меня структура директорий выглядит приблизительно так:

Код:

www
    data
          sdk
              ext-4.2.1
    private
          workspace
                build
                      production
                          Superfotoalbum
                                index.html
                ext
                superfotoalbum
                      app
                          controller
                          model
                          store
                          view
                          Application.js
                      index.html
    public
          server
          client
                index.html

В директории ext-4.2.1 я запустил sencha generate workspace, чтобы заполнить директорию workspace.
Затем из директории ext запустил sencha generate app, чтобы заполнить директорию superfotoalbum.
Код приложения помещаю в директорию app, а в браузере открываю index.html, который расположен уровнем выше.
Когда всё готово, запускаю из директории app команду sencha app build, которая собирает приложение и кладёт его в папку production/Superfotoalbum.
Для окончательной проверки открываю index.html из этой папки, а затем переношу всё её содержимое в директорию client, которую и отправляю на боевой сервер.
На сервере лёгкий MVC-фреймворк на PHP(bulletphp) или NodeJs (express). Общение браузера с сервером чистый Ajax, Rest или RPC.

siber-biber 22.04.2014 05:08

Цитата:

Сообщение от xintrea (Сообщение 308462)
Ну, например, когда нужно сделать универсальный класс экранной таблицы. Чтобы не в JS коде статически прописывать имена полей, URL-ы для CRUD-обработчиков и прочие свойства. А чтоб весь этот JS-код генерировался на сервере.

Или так не делается, ибо очень сложно?

Может иметь смысл если у вас много гридов.. но вряд ли правильно на каждый запрос дергать базу данных. Я делал вариацию на эту тему .."полуавтоматика": генерим статические js классы скриптом один раз (ну и можно перегенерировать вручную если структура таблиц поменялась)

bankir 24.06.2014 14:19

У нас небольшие веб приложения. База на Oracle.

Я вообще сделал свой мини Web сервер на Java, который умеет отдавать статичные файлы с настроенной папки с кэшированием (ext, свои приложения) и по определенному урлу передавать json данные в БД Oracle в процедуры (через clob переменные), которые уже делают в БД то что требуется.
Никаких прослоек в виде php и прочих серверных скриптов нет :)
Веб сервер поддерживает сессионность.

Но повторяюсь, у нас небольшие веб приложения - не сложные.

Вот тут есть описание одного такого нашего приложения:
http://absinversion.blogspot.ru/2014/06/blog-post.html

Rastiniak 15.04.2015 20:51

novikov,
Подскажите, пожалуйста, мне нужна подобная структура

--public
----index.html
----build
----src
------app.js
------app

Как заставить bootstrap.js искать файлы не в public, а в src?
Как билдить в build?

bastrakov 16.04.2015 09:33

Цитата:

Сообщение от xintrea (Сообщение 308444)
...
То есть, вопрос по архитектуре приложения.

1 Достаточно ли просто пользоваться на сервере возможностями PHP плюс какой-нибудь ORM?

2 - где и как хранить код объектов ExtJS? Хранить как статику в в видет простых файлов в директории?

3 - имеет ли смысл использовать совместно с ExtJS библиотеку JQuery?

ExtJs берет на себя кучу работы. в этом и + и -.
поэтому архитектура приложения может быть вырождена до примитивизма на более низких уровнях (база, бизнес).

1) достаточно тупых ответов базы, обернутых в json.
2) статика js очень сильно упрощает сопровождение. любой автогенеримый код - головная боль поддержки.
3) нет. ExtJs имеет очень мощные средства подобные jQuery.

быстро-бегом архитектуру текущего проекта упомянул тут
http://bastrakof.livejournal.com/363117.html


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