Недавно я встретил Phonegap. Попросите кого-нибудь из вас попробовать. Это невероятный инструмент, в котором утверждается, что разработчики могут использовать платформу на основе HTML 5, такую как Sencha touch и Jquery, в то же время имея доступ к родным функциям на телефоне. Кроме того, код переносится с Android на Iphone с некоторыми усилиями. Прежде чем окунуться в него, я хочу знать, что такое форум с помощью Phonegap. Какие точки боли и действительно ли они масштабируемы для разработки приложений на уровне предприятия.
Использование Phonegap для разработки собственных приложений
Ответ 1
Я создал пару приложений, используя PhoneGap, и для того, что он предоставляет, это здорово. Есть несколько быстрых заметок, которые я хотел бы указать, что могло бы помочь вам.
Disable device-based features you're not using
По умолчанию функции акселерометра, геолокации включены. Если вы их не используете, я бы отключил их, так как ваше приложение будет загружаться быстрее (инициализировать) и работать более плавно.
onDeviceReady
. Это метод, который вызывается после того, как телефонная заправка загружена и готова. $(document).ready или независимо от того, к чему вы привыкли, на самом деле не применяется здесь, если только вы не используете только интерфейс/жестко закодированный материал HTML. Если вы взаимодействуете с функциями iPhone, такими как GeoLocation, вам нужно будет сделать все после onDeviceReady.
Pick a UI/library
Существует тонна опций для интерфейса/библиотек, jquery-mobile, sencha touch, jqtouch и т.д. Каждый из них предлагает уникальный подход и набор функций. Сделайте некоторые исследования и используйте их, но избегайте комбинирования. Вы можете прочитать о дополнительных опциях, здесь: http://www.phonegap.com/tool (ссылка обновлена)
Also, more on just mobile development in general, with PhoneGap
Если вы хотите создавать приложения, которые распространяются через рынок Android и iPhone App Store, я прочитал бы их исчерпывающие списки для руководства по разработке вашего приложения. Например, в ссылке инструментов выше есть "инструмент/плагин", называемый Easy APNS - в то время как это полезно для Android - и технически выполнимо на iPhone, он нарушает соглашение о разработке, поскольку он утверждает, что вы должны использовать сеть уведомлений Apple и т.д. Это просто пример, но чтение на этом материале сэкономит вам много головных болей, если это ваша конечная цель.
В целом, это отлично подходит для легких приложений, особенно если вы работаете на фоне веб-разработки. LocalStorage, GeoLocation и т.д. Работает очень хорошо. Надеюсь, это немного помогает... и я задаю вопросы.
Дополнительное редактирование:
Я действительно думаю, что это сводится к тому, что вы хотите делать, и тому, что вы знаете, как это сделать. Мэтт отметил, что разработка родных приложений, для iOS лучше и т.д. Да, если у вас есть время и знания, чтобы узнать, что, естественно, родной будет лучше. Но PhoneGap создан для веб-разработчиков, которые могут использовать свой набор навыков и создавать приложения. Кроме того, PhoneGap позволяет быстро создавать приложения для iOS, Android, Symbian, Palm, Blackberry. С небольшими изменениями в вашей кодовой базе для каждого.
Ответ 2
Вот все лучшие руководства по эффективности, которые я прочитал для PhoneGap... есть много оснований опасаться, чтобы у вас была прочная стабильная производительность... но вы можете забрать ее всего за один вечер чтения.
Вот лучшие самородки:
Советы по настройке PhoneGap/Mobile Web
- Как Diary.com увеличил производительность своего приложения PhoneGap с помощью Sencha: http://www.phonegap.com/2011/06/21/building-the-diary-com-ios-app-using-pg-sencha-touch/
- http://floatlearning.com/2011/03/developing-better-phonegap-apps/
- http://jslint.com/ - для отладки вашего javascript
- http://zeptojs.com/ и http://xuijs.com/ - минимальный альтернативные рамки для jquery и jqtouch
- Отключите акселерометр и местоположение http://blogs.nitobi.com/jesse/2009/10/28/running-jqtouch-in-phonegap/
- установите для параметра "EnableAcceleration" значение false в PhoneGap.plist
- установите значение "AutoRotate" в false в PhoneGap.plist
- http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/
- http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone
- Демо: http://cubiq.org/dropbox/clickdelay.html
- FastClick v TouchStart: http://groups.google.com/group/phonegap/browse_thread/thread/f5f5c78e26513821?pli=1
-
http://forum.jquery.com/topic/ontouch-instead-of-onclick-event
-
http://wiki.phonegap.com/w/page/16494809/Performance-tips-for-device/
- http://www.developer.nokia.com/Community/Wiki/JavaScript_Performance_Best_Practices
- http://evolvingwe.com/building-an-iphone-app-part-3-7-dev-tips/
- http://evolvingwe.com/upgrading-to-phonegap1-0/
-
Рекомендации по производительности VIDEO для Sencha Touch: http://vimeo.com/17882927
- Он охватывает функции производительности в Sencha, которые являются прекрасными принципами, которые мы можем применить повторно. Мы можем даже иметь возможность вырезать код из определенных частей Сенча, чтобы повторно подать заявку на Скея.
- В нем говорится, что мы ДОЛЖНЫ уничтожить все, что не видно на DOM. И что DOM должен храниться как можно меньше в любое время, с как можно меньшим количеством слушателей. (I. присоединяем один прослушиватель к родительскому элементу списка, а не к каждому элементу списка.)
- Он также имеет практические советы CSS3 для меня, чтобы применить... В принципе, не используйте многие новые переходы и тени/раунды, потому что в настоящее время используется процессор, а еще не графический процессор.
-
Делегирование событий в Sencha Touch: как создавать списки с одним слушателем, а не по одной на каждой строке. http://www.sencha.com/blog/event-delegation-in-sencha-touch/
- Оптимизация использования памяти DOM в приложении Sencha Touch: переход от панели "Список к детали" и уничтожение списка, а затем переход из "Детали в список" и уничтожение панели сведений. Минимизация элементов на вашем экране, DOM. http://www.sencha.com/blog/sencha-touch-optimizing-memory-usage/
- УБЕДИТЕСЬ, ЧТО НЕ ВИДИМО НА ВАШ ДОМ!
- Использовать анимацию CSS вместо jQuery
- http://nyroo.com/l/B7UN5c
- http://www.ferretarmy.com/css-animation-examples/
- Будьте осторожны... это сложно, когда они не используют GPU и не боятся процессора.
Включение новых функций
- Включить отображение Retina: http://evolvingwe.com/create-retina-display-images-in-mobile-web-themes-and-phonegap-apps/
- Проведите по удалению: http://www.codesta.com/blog/2011/5/23/sencha-touchphonegap-tips-and-tricks.html
- Отключить акселерометр и местоположение: http://iamcam.wordpress.com/2009/10/29/phonegap-up-to-speed/
- Вырезать jQuery и Hand-code: http://cubiq.org/do-you-really-need-jquery-for-mobile-dev
- Показать список контактов в Mobile Safari: http://cubiq.org/contact-list-on-webkit-for-iphone
- iScroll4: Создайте заголовок, прокрутите в пределах фиксированного размера div, зажмите и увеличьте, потяните вверх/вниз обновление. http://cubiq.org/iscroll-4 (Включает советы по эффекту резиновой ленты).
- PhoneGap GitHub repo: включает в себя интересные примеры, такие как DatePicker, SMSComposer, ApplicationPreferences, Splashscreen, NetworkActivityIndicator... https://github.com/phonegap/phonegap-plugins
Архитектура
Архитектура вашего приложения в Ext JS 4: http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2
Ответ 3
Прежде чем выразить свое мнение о Phonegap, мне нужно выпустить небольшое выражение об отказе от ответственности, в котором говорится, что я, ни в коем случае, не веб-разработчик. Для меня написание JavaScript и CSS - это как вытаскивание зубов. Тем не менее, мне не нравится Phonegap.
Есть несколько очень привлекательных аспектов структуры, в основном призыв "Write-Once-Run-Anywere" и "I-Don't-Have-To-Learn-Objective-C?". обжалованию. Структура может даже дать вам доступ к некоторым аппаратным функциям, таким как акселерометр. Все они действительны, в определенной степени.
Тем не менее, ни одно из великих приложений iOS не построено с использованием каких-либо кроссплатформенных фреймворков. Есть так много тонких и элегантных взаимодействий пользовательского интерфейса, которые обрабатываются для вас с помощью встроенных элементов управления UIKit, которые многие пользователи и разработчики считают само собой разумеющимся, пока они не пропали без вести, например, множество невероятно подробных кривых анимации просмотра и прокрутки отскоков, которых нет в пользовательском интерфейсе на основе веб-представления. Вы могли бы хорошо их воспроизвести, но для этого времени инвестиции, почему бы не просто поехать на родной язык?
Вторым моментом является то, что сообщество поддержки для приложений iOS, созданных с помощью Phonegap, значительно меньше, чем разрабатываемые приложения. Если вы полагаетесь на сообщество во время проектов, это также должно привести к паузе.
В конце концов, это сводится к качеству опыта, который вы хотите доставить. Верхняя граница ниже с помощью Phonegap. Если вы готовы принять менее превосходный пользовательский интерфейс в обмен на сокращение времени разработки и повышенную мобильность, то это очень жизнеспособная структура.
В качестве подтекста для всех, кого интересует, Марко Армент и Дан Бенджамин недавно обсудили эту тему. Вы можете прослушать его здесь.
Ответ 4
Процедура установки включает в себя несколько пакетов (Java, Apache Ant, Ruby, iOS SDK, Android SDK и PhoneGap), которые все должны быть правильно установлены и настроены. Это может быть серьезное усилие. Справедливости ради, у них есть что-то, что называется PhoneGap Build в бета-версии, что должно сделать это намного проще.
Мы используем его с NS Basic/App Studio для создания приложений, подходящих для магазинов приложений.
Ответ 5
если вы не создаете игру или виджет, просто одно красивое приложение, тогда выбор телефона - это ваш выбор.
Но вы должны позаботиться о своем JS, не делайте ничего в JS например, если вы хотите сделать какую-либо анимацию, не устанавливайте таймер с небольшими интервалами (например, 100 мс), избегайте jquery и похожих анимаций. Например, вместо того, чтобы анимировать затухание, установив кратковременный таймер, уменьшающий непрозрачность в каждой точке шаг за шагом (это как работает jquery fade), вы должны использовать css3 переходы от непрозрачности 1 до непрозрачности 0.
Мой совет - пойти с чем-то вроде zeptojs.com, ведь телефонная игра не будет работать ie6: -)
Посмотрите несколько руководств о том, как сделать ваш JS более легким.
Ответ 6
Если вам не нужны какие-либо аппаратные функции или производительность, помимо того, что предоставляет HTML5 и Phonegap, инкапсулированное веб-приложение (плюс ограниченный доступ к другим функциям) - отличное решение.
Многие предприятия развертывают широкомасштабные веб-приложения. Phonegap (или просто простой просмотр веб-страниц со встроенным контентом) позволит вам запускать эти веб-приложения в автономном режиме (за исключением, конечно, для любых онлайн-данных).
Ответ 7
Одна "боль" не упоминается при развертывании между несколькими различными устройствами: чем больше устройств, тем больше кривая обучения. Для развертывания на устройствах iOS с помощью PhoneGap вам необходимо изучить основы Xcode на Mac. Для развертывания на Android вам нужно будет установить и изучить Eclipse, Android SDK и т.д. На других платформах необходимо использовать собственные SDK. Изучение некоторых рудиментарных Xcode, Javascript и Java помогает мне понять ошибки и общий синтаксис.
"Создайте один раз, повесьте повсюду", оставляйте много шагов!