Какую платформу вы бы порекомендовали для создания настольных приложений для Интернета?[закрыто]
-
02-07-2019 - |
Вопрос
Недавно появилось несколько фреймворков для написания настольных веб-приложений.Например. SproutCore и Капучино.Есть ли у вас опыт их использования?Какое у вас впечатление?Я пропустил какую-то другую структуру?
я видел связанный вопросы на StackOverflow, но они генерируют в основном стандартные ответы, такие как «используйте jQuery, MochiKit, MooTools, Dojo или YUI».Хотя некоторые люди дают нестандартный ответы, похоже у них мало опыта с использованием это рамки.
Может ли кто-нибудь поделиться реальным опытом разработки дестоп-подобных приложений для браузера?
Решение
Из-за проблем со скоростью эти высокоуровневые фреймворки вызывают множество более крупных (например:нетривиальные) приложения, мы используем только простой jQuery.В наших тестах все высокоуровневые платформы выходили из строя в ситуациях, когда имеется много перетаскиваемых объектов или много целей перетаскивания, а также в ситуациях, когда на экране отображались длинные списки (с > 1000 записей).
Частично это связано с проблемами IE6 и IE7 (когда производительность внезапно начинает резко ухудшаться после того, как деревья DOM достигают определенной сложности), но частично это связано с накладными расходами, генерируемыми этими платформами.
Поэтому я бы не рекомендовал какие-либо фреймворки высокого уровня.Я бы рекомендовал использовать jQuery и напрямую работать с DOM.
Несколько советов по улучшению производительности:
- Где, возможно, рендеринг HTML на сервере.
- Держите HTML как можно проще.
- Избегайте много элементов в дереве DOM.
- Избегайте рекурсивной структуры стола (то есть внезапно останавливается, показывая их после относительно нескольких уровней гнездования).
- Удалите невидимые элементы с дерева DOM.
- Удалите вещи с дерева DOM, прежде чем менять их, а затем переосмыслить их, а не менять, пока они находятся в дереве.
Другие советы
На мой взгляд, «Капучино» — пример того, чего НЕ следует делать.Они внедрили еще один язык поверх JavaScript, что уже приводит к замедлению работы, в то время как разработчики браузеров уже активно борются с этим, и, что самое худшее, они вообще не полагаются на виджет браузера, нарушая все возможности навигации пользователя.Например, они реализовали собственную полосу прокрутки, главный недостаток которой заключается в том, что использование колеса мыши больше не работает!
Я действительно предпочитаю подход ExtJS, который предоставляет вам богатые виджеты, сохраняя при этом пользовательский интерфейс как можно ближе к браузеру.
Я также, как штуковина, рекомендую EXT JS.Их лицензия изменилась, и она может работать не для всех, но это по-прежнему хороший выбор, если вы хотите делать что-то вроде настольного компьютера.
Вот их пример страницы для среды рабочего стола: http://extjs.com/deploy/dev/examples/desktop/desktop.html
Apple демонстрирует, что sproutcore действительно работает, хотя трудно оценить, насколько хорошо он работает.В настоящее время я создаю веб-приложения с использованием собственного набора библиотек, дублирующего набор функций нашего программного пакета Windows (но адаптированного к веб-интерфейсу).До сих пор я избегал фреймворков, особенно по той причине, что не хотел раздувать их.Проблема с этим подходом в том, что я трачу слишком много времени на дублирование функциональности, которая уже есть во фреймворках, и чувствую, что со временем я приблизимся к чему-то, напоминающему эти фреймворки.
По этой причине я экспериментировал с реализацией веб-приложения в extjs, и это был на удивление приятный опыт.Производительность отличная, а простота разработки довольно высока, поскольку их набор компонентов хорош для создания приложений, а не только для модных демонстраций (частая проблема в наборах веб-инструментов).Я определенно рекомендую его, если вы заинтересованы в создании веб-приложений, подобных настольным компьютерам.
Проблема его масштабирования, очевидно, все еще актуальна, но, честно говоря, я считаю, что лучше использовать набор инструментов в ситуациях, когда масштаб не так важен, и возвращаться к базовому JavaScript только там, где это необходимо (преждевременная оптимизация является корнем всех проблем). зло).Extjs может работать поверх прототипа или jquery, поэтому этот подход определенно работоспособен.Избегание слишком большого количества контента в DOM обычно подразумевает загрузку и выгрузку по требованию.Например, существует стороннее расширение класса сетки extjs, которое позволяет прокручивать набор данных из миллиона строк, умело загружая и выгружая данные.
Вы можете рассмотреть возможность использования GWT-Ext (внизу используется Ext) может быть очень чистым решением, если вы собираетесь использовать Java.
Мне нравится qooxdoo, Хотя он использует ООП-подход JS, а не прототип, он представляет собой надежную структуру и имеет множество функций.
У меня нет опыта работы с SproutCore или Capuccino.Но предпринимались попытки использовать Dojo поверх Django для такого рода работы.Могу только сказать вам, что это медленно и глючно.
extjs может помочь. http://dev.extjs.com/deploy/dev/examples/