Pull to refresh

Comments 18

Спасибо за статью! Хотелось бы узнать о плюсах/минусах такого подхода к созданию приложений. Для себя пришел к следующему выводу, бегло просмотрев подобные решения, что это довольно быстрый способ создания приложения, и если нет ресурсов для разработки нативных приложений, а оно очень нужно, то это почти идеально. А как Вы пришли к такому выбору? Насколько мне известно, LinkedIn тоже сделали свое прложение с помощью js/html/css, рассматривали их путь как возможный вариант решения Вашей задачи?
Я делал приложение под phoneGap. Если вкратце то самая большая проблема это медленная работа и отсутствие библиотек предназначенных для этого. С картами еще можно разобраться, но они работают в браузере ожидаемо хуже чем нативные, но сделать хорошую галерею в iOS стиле точно не получится.
Когда я с этим возился даже для того чтобы быстро и без задержки обработать нажатие (изза ограничений WebKit) нужно было ставить в код специальные хаки, иначе оно просто тормозило.

Приложение работает медленнее и выглядит не так в итоге. Как будто это приложение с какого-то китайского клона а не с этой платформы.
После того как я решил перейти на нативные библиотеки все сразу стало проще и веселее.
От себя хочу добавить невозможность отлаживать JavaScript код, запущенный под PhoneGap/Cordova. Нельзя поставить breakpoint, посмотреть стек вызовов, узнать значения переменных. Отлаживать вёрстку, CSS и Network можно с горем пополам используя Weinre. И частенько приходилось использовать console.log(...), чтобы хотя бы в логах ADB под Android-ом получить какую-нибудь информацию.
UFO just landed and posted this here
В общем то вы описали плюсы, а человек ниже — минусы.
Если у вас команда веб разработчиков и без особых усилий нужно сделать приложение для кучи мобильных операционок, то phoneGap вам в руки, но если ваш front-end девелопер не может жить без громоздких библиотек, то скорее всего будет много проблем с производительностью и вы даже плюните на это дело. Мне больше нравится писать чистый код (используя библиотеки для рутинных задач, вроде ajax запросов или распарсивание без eval json объектов), поэтому проблем не возникло. Еще к плюсам можно отнести то, что попутно сможете использовать уже наработанный JS код проекта и написать расширения для браузеров вроде Chrome, Opera и Firefox.
Пришел к phoneGap я на прошлой неделе всего лишь, когда Nokia написала о своей платфоре Asha, мол там можно веб приложения делать, решил попробовать, оказалось что всё довольно уныло в плане возможностей (привет html4), а приложение какое нибудь для телефонов захотелось написать не имею желания и времени изучать Java, Object C и прочие языки для каждой из платформ.
По поводу внешнего вида спорный вопрос, т.к. сейчас на своем Android телефоне вижу дикий зоопарк GUI, так почему бы не сделать еще один вариант.
Нашел apk-ку LinkedIn, не заметил там phoneGap (вероятно свой вариант вебкит обертки или еще какой подобный проект), но версия 2.4 написана именно на html+js с использованием библиотек underscore.js и Backbone.js (не знаком с обоими, поэтому без комментариев).
Яро призывать использовать это всё не буду, так же как и не буду говорить что phoneGap не годится для разработки приложений. Но мне очень понравилось.
Ну вот и итог: phonegap можно посоветовать тем, кто очень не хочет изучать предназначенные для мобильной разработки технологии, но очень хочется сделать здесь и сейчас не самое качественное приложение. Для тех, у кого мобильное приложение это приоритетная вещь, использовать phonegap не нужно — себе дороже выйдет. Я в этом убедился на собственном опыте.
Да, именно так, если надо как можно быстрее выстрелить без затрат и приложение для телефона не главное, то phoneGap очень поможет.
phoneGap это вполне хорошая штука, пока вы не наткнулись на хранение данных :) Работа с браузерным SQL в нем жутко неудобная, и хранить он может очень мало данных. Тот же titanium в этом плане намного удобнее.
Попиарили, попиарили давно mobile-разработку на html/js, так и осталось это уделом ярых фротнэндщиков.
Абсолютно согласен — причем даже ниже попытался обяснить почему. Просто верстка и JS должны быть выше среднего, или… иметь готовый фреймверк
Уважаемый, NermaN
Я не буду доказывать Вам что вы правы или не правы. Просто хотелось бы сделать пару замечаний:

1)
(кстати рекомендую Overthrow и крайне не рекомендую iscroll-4 по причине ужасной скорости работы).
Сравнение абсолютно не корректно: Overthrow — полифил, iscroll-4 — либа. Кроме того о каком nativelook может идти реч если Overthrow, по умолчанию добавляет rabber эффект на iOS и дропает все z-index внутри себя. iScroll — он НАМНОГО более широк в функциональном плане, и у него намного больше возможностей — это не просто полифил скрола. И если у Вас на андроиде проблема с ним — скорее всего вы не правильно наверстали страничку, он просто сильно критичен к корректной верстке

2)
но сделать хорошую галерею в iOS стиле точно не получится.
Можно и делали, причем со свайпом и 3D, сразу и под андроид и под иос. Основные тонкости которые нужно учесть при этом это:
а) 300ms
б) галерея = адаптер вью
в) трансформации должны быть аля -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); причем в покое тоже должна быть трансформаця с нулевыми параметрами что бы избежать первоначатьного дерганья. А на андроиде к свайпу добавил бы -webkit-transform: translateZ(0); и включил hardware acseleration в манифесте

3)
Приложение работает медленнее и выглядит не так в итоге. Как будто это приложение с какого-то китайского клона а не с этой платформы.
Тут даже сказать нечего — просто не согласен и все, релизнули более полутора десятков апликух на фонгапе, замечаний небыло.

Основная проблема при начале работы с фонгап состорит в следующем в непонимании следующих моментов:
1)PhoneGap это не web — это абсолютно другая специфическая платформа
2)PhoneGap — выполняется на различных МОБИЛЬНЫХ устройствах, поэтому он НАМНОГО более требователен к оптимизации и знанию тонкостей работы браузера, и лепить в одно приложение несколько десятков либ(одна скролит, одна работает с DOM, одна биндит данные, одна структурирует код и т. д. ) здесь не очень корректно — представьте вы налепили эскадру из «звездолетов» и хотите чтобы эта эскадра довезла у вас один единственный ящик. А топлива то жрать будет вся эскадра. Это я не про Вас, просто по опыту код ревью разных PhoneGap «шедевров»
3)В PhoneGap НЕТ UI — это платформа для доступа из html/js приложения к нативной функциональности мобильного устройства такой как компас, БД, акселерометр, контакты и т. д. Представте на секунду что у вас нет нативной реализации лист вю(адаптер вю) — скажите долго ли Вы будете его реализовывать? Вот и я о томже — я пока на данный момент не встречал пока КОРРЕКТНО заточеный, КРОССПЛАТФОРМЕНЫЙ UI JS фреймверк для мобильных устройств? Sencha JQMobile и т. д. — лучше не обсуждать — просто ОЧЕНЬ ДОЛГО = у каждого свои недостатки, а изучили мы их более 3 десятков

Поэтому на фонгапе можно писать: это всегда будет дольше чем нативное приложение под одну конкретную платформу. Но это всегда будет меньше чем под две платформы, даже с учетом оптимизации UI под каждую платформу. И конечно же как и на любой другой платформе — ВАМ НУЖНО ЗНАТЬ ТОНКОСТИ ПЛАТФОРМЫ(немного само рекламы — костно язычный доклад о тонкостях фонгапа, слайды)
Вам бы на хабре туториалы пописать о phoneGap, зная все тонкости. Я то эту штуку мучаю по вечерам (и то если не с ребенком сижу) в течении одной недели, тонкостям пока не научен.
Не могли бы вы, пожалуйста, поделиться ссылками или ресурсами, где вы изучали, как говорите «шедевры», то есть любые исходники приложений, как хороших, так и плохих, сложно найти что-то из этой серии, без разницы на каком языке, можно на английском. Сильно заинтересовал PhoneGap, когда из последних кейсов у них на сайте увидел приложение ex.fm, поставил на телефон и удивился насколько эта технология выросла и, в принципе, приложение выглядело вполне нативно. Спасибо.
Использовали ratchet — это весьма примитивный фреймворк, на android проблемы, зато прост и быстр.
так ratchet же специально под айфон сделан, поэтому ничего удивительного)
Спасибо за начинание
Вместо большого количества кода я бы предпочел ссылки на github или другие ресурсы, оптимизированные под это.
Честно говоря не уверен что есть смысл выкладывать этот код куда то, т.к. это пример, а не законченное приложение или начинание такового.
Смысл кода тут в комментариях к нему, которые почти не заметны. А как оформить более понятно, я не придумал.
Sign up to leave a comment.

Articles