Опасности использовать ExtJS на большом проекте с RoR?

OverRiding Concept в Java Функции будут переопределяться, зависит от типа объекта, а переменные будут доступны по ссылочному типу.

  1. Функция переопределения: в этом случае предположим, что родительский и дочерний классы имеют одно и то же имя функции с собственным определением. Но какая функция будет выполняться, это зависит от типа объекта не от ссылочного типа во время выполнения.

Например:

Parent parent=new Child();
parent.behaviour();

Здесь parent является ссылкой Родительский класс, но содержит объект Child Class, поэтому в этом случае будет вызываться функция класса Child.

Child child=new Child();
child.behaviour();

Здесь child хранится объект Child Class, поэтому функция класса Child будет .

Parent parent=new Parent();
parent.behaviour();

Здесь parent хранится объект родительского класса, поэтому будет вызываться функция класса родителя.

  1. Переопределить переменную: Java поддерживает перегруженные переменные. Но на самом деле это две разные переменные с одинаковым именем: одна в родительском классе и одна в дочернем классе. И обе переменные могут быть либо одного и того же типа данных, либо разных.

Когда вы пытаетесь получить доступ к переменной, это зависит от объекта ссылочного типа, а не от типа объекта.

Например:

Parent parent=new Child();
System.out.println(parent.state);

Тип ссылки является родительским, поэтому доступна переменная класса родителя, а не переменная класса Child.

Child child=new Child();
System.out.println(child.state);

Здесь ссылочный тип - это Child , поэтому к переменной класса Child обращается не переменная класса родителя.

Parent parent=new Parent();
System.out.println(parent.state);

Здесь ссылочный тип является родительским, поэтому доступна переменная класса родителя.

22
задан Milan Novota 9 October 2008 в 13:48
поделиться

10 ответов

У меня в настоящее время есть чрезвычайно большое, настольное приложение стиля, записанное в ExtJS. Это раньше выполняло сверху Катализатора Perl платформу MVC, но как только весь уровень View был преобразован в основанный на ExtJS рабочий стол, который я начал перемещать в модели Ruby on Rails и контроллеры. Это одинаково быстро, если не быстрее, и легче поддержать и имеет намного меньшую кодовую базу.

  • Удостоверяются, что Вы устанавливаете свою активную рекордную конфигурацию для не включения корневого названия модели в json, так, чтобы JsonStore Расширения не имел никакой проблемы при чтении записей. Существует опция на ActiveRecord BASE, названном include_root_in_json, необходимо установить на ложь.

  • Удостоверяются, что Вы правильно определяете свои Классы приложений в Расширении и максимизируете повторное использование кода, и Вы собираетесь хотеть, чтобы своего рода метод очистил неиспользованные узлы в DOM. Производительность JavaScript может быть реальной болью, если Вы не используете последние версии Safari или Firefox 3.1.

  • Вы, вероятно, захотите, чтобы своего рода метод кэширования для данных по серверу был вручен Вашему приложению в формате JSON в то время, когда страница загружается. Это сократит количество распространений в прямом и обратном направлениях через Ajax.

  • Определенно используют объекты WindowManager и StoreManager Расширения или самокрутку от Ext.util. MixedCollection

  • Разрабатывает Ваш код в отдельных, managable файлах, затем имеет процесс сборки, который комбинирует их в единственный файл, и затем выполняет компрессор YUI, или Dean Edwards Packer на нем для сжатия / запутывают файл. Служите всему JS, и CSS в их собственных единственных файлах, включая Расширение предоставил.

29
ответ дан echristopherson 29 November 2019 в 03:53
поделиться

[обновление 2012 года] ExtJS был приобретен Sencha, которые предлагают лицензию GPLv3 и две коммерческих лицензии.

[2008 - комментарий в октябре] ExtJS является большим на технических достоинствах, но фиаско с лицензированием несколько месяцев назад привело меня смотреть на другие платформы - я не доверяю создателям ExtJS вообще теперь. Мне не нравится, как они сформулировали свою лицензию, и как они симулировали быть защитниками с открытым исходным кодом при очевидной попытке получить прибыль незаконно от тех, кто верил им.

я только против использования ExtJS на моральных основаниях.

14
ответ дан Dan Dascalescu 29 November 2019 в 03:53
поделиться

Это принадлежит ответа на комментарий Милана к моему предыдущему ответу, но как вновь прибывший здесь у меня нет достаточного количества точек репутации для ответа там:

была проблема с "SP, не определено", который был результатом кэширования направляющих файлов JavaScript в один большой файл (будет несколько сотен файлов иначе). Кэширование начало некоторые странные ошибки с новых строк, которые отбросили все это. Это имело меня вытаскивающий мои волосы некоторое время, но решение состояло в том, чтобы обновить Ruby от 1.8.6 (уровень установки патча 72) к последним 1.8.7. Это решило проблему, поэтому проверьте его снова, если Вы захотите взглянуть (то необходимо будет сделать полное обновление для избиения кэширования актива).

я рад, что Вы столкнулись с Расширением материал MVC прежде. В настоящее время я могу полностью полагать, что должно быть довольно трудно понять, главным образом из-за отсутствия примеров, учебных руководств и демонстраций. Сам код обоснованно хорошо документируется однако (по крайней мере, более новый код так или иначе, существует много который убирающие потребности).

я в настоящее время нахожусь в процессе рефакторинга нескольких ключевых классов, прежде чем это будет готово к надлежащему 'выпуску'. Когда это готово (я думаю несколько недель), я генерирую документацию и создам быстрый сайт с некоторыми демонстрациями и примером кода. Когда я сделаю так, я подниму сообщение на своем блоге ( http://edspencer.net ).

Моя цель с этим состоит в том, чтобы попытаться служить основой, которая сделает запись этого типа приложения намного более простой, и установить некоторые соглашения. В настоящее время нет никакого согласия или способа по умолчанию структурировать приложения ExtJS, таким образом, что-либо, что мы можем сделать для перемещения этого вперед, будет шагом в правильном направлении! Комментарии и вклады являются больше, чем приветствие.

5
ответ дан Ed Spencer 29 November 2019 в 03:53
поделиться

Я успешно развернул большое приложение RoR/ExtJS вида, который Вы описываете ("единственная страница" клиентский управляемый Ajax). Ext_scaffold является в значительной степени отвлекающим маневром.

Это является не слишком налоговым для получения RoR и ExtJS, работающего гладко вместе. Фундаментальный выбор состоит в том, расширить ли ExtJS для "разговора направляющих", RoR патча, чтобы "говорить ExtJS" или встретиться в середине. Это собирается зависеть, где навыки Вашей команды.

я принял meet-in-the-middle стратегию, которая включает:

  • Расширяются Ext.data.Store и Ext.data.Record, чтобы знать, что направляющие направляют соглашения
  • Взлом Ext.grid.EditorPanel и Ext.form.BasicForm для игры хорошо с ассоциациями ActiveRecord
  • Запись некоторые модули для расширения ActiveRecord::Base и ApplicationController только к фиксациям от Ext.grid.EditorPanel, и Ext.form.BasicForm

Это - в значительной степени он.

Однако существуют недостатки к ExtJS.

  • Вы оказываетесь перед необходимостью пачкать руки во внутренностях. Не обманывайтесь демонстрациями.
  • документация сообщества плоха и PHP-центральна.
  • Прибытие из мира Github/Lighthouse-centred RoR, с помощью VBulletin похоже на пробуждение в 1998. Я имею в виду, нет никакой общественности bugtracker просто сообщение форума, которое это обновило (WTF?).
  • код немного сверхспроектирован.
  • команды потеряли доверие С открытым исходным кодом, таким образом, они потеряли кислород С открытым исходным кодом.
  • команды, кажется, сфокусированная интеграция с GWT (кто-либо может сказать "enterpri$ey"?).
4
ответ дан Dave Nolan 29 November 2019 в 03:53
поделиться

Расширение определенно достаточно зрело для обработки этой ситуации. Я в настоящее время работаю над проектом направляющих с большим количеством Расширения, и самая твердая часть определенно работала с Направляющими to_json для рендеринга JSON, который может считать Расширение (для массивов, хешей, моделей, которые привели проверку к сбою, и т.д.)

Выезд расширение _ scaffold плагин для направляющих. Я запустил с этого и взломал далеко в ActiveRecord / ActionView расширения, пока это не сделало то, что мне был нужен он, чтобы сделать.

1
ответ дан Ben Crouse 29 November 2019 в 03:53
поделиться

У меня есть некоторый опыт с помощью ExtJS с направляющими также. Используя платформу отличный способ получить некоторые хорошо выглядящие виджеты бесплатно. Соглашение REST должно устроить платформу также при использовании его для разработки единственных приложений страницы. Работы хорошо с RJS также.

Вот мои схватывания с использованием платформы

  1. , Вы не можете действительно использовать флэш-память [: уведомление] начиная с перезагрузки единственного приложения страницы глупо. Это делает передающие уведомления проверки и передает тяжелую работу, так как необходимо использовать методы JavaScript RJS/, чтобы показать им.

  2. Вы не можете использовать erb очень таким образом, необходимо инкапсулировать большую логику в json обратные вызовы.

1
ответ дан JasonOng 29 November 2019 в 03:53
поделиться

Я развернул ExtJS и направляющие для многих приложений, и они, конечно, могут быть заставлены говорить друг с другом. Мы соединили быструю демонстрацию приложения, которое мы в настоящее время разрабатываем в направляющих + Расширение в http://demo.domine.co.uk/admin . Проигнорируйте фронтэнд на данный момент, поскольку это не завершено - администраторский раздел по существу закончен, и можно войти в систему его с:

имя пользователя: пароль edward: rarrar

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

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

1
ответ дан Ed Spencer 29 November 2019 в 03:53
поделиться

В то время как у меня нет опыта ExtJS (помимо чтения о в" Практические Проекты направляющих ", книга) я использовал jQuery Flexigrid с jrails для получения большего количества настольного ощущения.

, Который работал вполне прилично.

0
ответ дан Andy Jeffries 29 November 2019 в 03:53
поделиться

Хорошо. Я использую extjs gxt gwt на многих, проектируют, и он очень легкий для разрабатывает. Но я хочу сказать Вам, что я разработал свой проект с extjs+gwt (gxt), я не делаю уверенный в Ruby. текст ссылки

0
ответ дан 29 November 2019 в 03:53
поделиться

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

Преимущества Netzke:

  • Повторное использование и расширяемость кода. Как только вы создали свой компонент (как на стороне клиента, так и на стороне сервера), вы можете повторно использовать его в любом месте, объединить с другими компонентами или расширить его с помощью наследования.

  • Эффективность. Класс для каждого компонента загружается с сервера (и оценивается) только один раз, что экономит много времени при взаимодействии сервера и клиента.

  • Это открытый исходный код, и он находится в активной разработке. В нем есть живые демонстрации и примеры кода.

  • В нем есть готовые компоненты, которые можно использовать сразу, даже не касаясь Ext JS (просто настройте их в Rails)

  • It ' s использовался (его автором) для реальной разработки сложного логистического приложения.

Недостатки Netzke:

  • Код еще молодой, а сообщество невелико.

Если вам интересно, ознакомьтесь с описанием и деталями дизайна здесь: https://github.com/nomadcoder/netzke-core

Живую демонстрацию / учебные пособия можно найти здесь: http: // netzke-demo. herokuapp.com и здесь: http://yanit.heroku.com

4
ответ дан 29 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: