Pull to refresh

Comments 26

С какими багами мобильника / логики столкнулись при разработке?
Привет!
По поводу багов — пару раз возникали сложности с phonegap — он то не реагировал на установленные плагины, то Xсode отказывался компилировать проект.
Помогло просто пересоздание самого проекта phonegap и копирование в него логики и ресурсов из предыдущего. Хотя там скорее мы сами с плагинами что-то намудрили :)

Так же — проект в первую очередь разрабатывается под IOS и соответственно как-то мы запустили приложение на старом и медленном Андроиде с версией 4.0.
И ужаснулись тому на сколько все работает медленно. Потом правда отключили анимации в фреймворке (он позволяет это делать + можно отключать в зависимости от версии Андроид) и все стало работать гораздо лучше.

Но как таковой оптимизации под Андроид пока еще не делали, поэтому пока ничего детально на эту тему сказать не могу.

В самом Framework7 пока критичных багов не обнаружил.
Но если что — автор достаточно быстро отвечает на все вопросы на форуме или по почте, а сам фреймворк имеет достаточно хорошо читаемый и структурированый код — можно разобраться и продебажить самому.
Несколько раз приходилось дебажить, так как не были понятны какие-то моменты в документации и то «как оно работает», но понимание пришло и вопросы отпали.
Использую кордову, билд проекта, эмуляция, подключение плагинов делается командами через консоль. Кстати новый проект Cordova iOS в Xode тоже не захотел открывать. Помучился с часик и бросил — пока хватает консоли. Скорей всего тоже прийдется пересоздать через чистый проект, пока обхожусь.
Насчет Framework7 — оказался отличной вещью, создавать приложения можно в целом, не прибегая к использованию JS: многое прописывается атрибутами в HTML. Собрать сайт в виде приложения с слайдерами фоток, переходами во воложенные страницы с обратной навигацией можно без строчки JS, что открывает хорошие перспективы.
Автору статьи и фреймверка спасибо!
Да, я тоже все делают через консоль. Единственное у меня команда cordova run ios не работает корректно.
Поэтому делаю cordova build ios и запускаю в Xcode, выбрав в качестве target свой телефон.
Да, еще добавлю.
Это не на тему багов, но на подобную. В стандартном варианте фреймворка анимации на Андроид временами подтормаживают, особенно на старых версиях и старых телефонах.
Я сделал небольшую оптимизацию анимаций для андроида и закомитил в репозиторий.
Возможно кому-то пригодиться:
github.com/philipshurpik/Framework7-Contacts7-MVC/commit/21bf9338ab1b5ccd11a1a64efe9c92deac58ce13
Ух дойдут руки, как допишу статью про мобильную разработку, как сделаю всем хорошо.
На самом деле мобильная разработка из под веба несёт в себе много подводных камней, о многом не задумываешься при старте. Но с другой стороны, обладает кучей плюсов. Но меня точно радует то, что народ начал обращать на это внимание и активно проталкивать webview в массы.
Не использовал но с виду Ratchet и Famework7 очень похожи, только в F7 отсутствует комплект стилей для Android. Судя по документации в F7 больше компонент.
Подскажите, в чем еще они отличаются?
Я спросил, потому что сам ещё не использовал, но мне очень интересно.
Я имел дело с ionic, и столкнулся с описанными проблемами, типо тормозов на девайсе.
Документация догоняет либу через какое-то время. В issues отвечают, но достаточно медленно. Зачастую приходится читать исходный код фреймворка, и он мне не по нраву. При обновлении фреймворка приходится «переприменять» файлы ionic (ionic start myproject) поверх своего проекта, а затем ревертить свои файлы.

Эти вещи вынудили меня поискать другое решение, потому что сам подход WebView мне очень симпатичен.

Т.е. на текущем этапе я попробовал ionic (который представляет собой стили + Angular).
Следующим я бы хотел попробовать Ratchet (который представляет собой стили + jQuery), в связке с каким-нибудь FRP (Bacon/RxJs).
Framework7 мне тоже достаточно симпатичен, за исключением двух вопросов:
1. Заточка под iOS: мне очень не нравится, что все гонятся за реализацией дизайна конкретно iOS в вебе. Нужны какие-то базовые стили для Android (или хотя бы дефолтовые стили, которые будут приемлимо смотреться на любом устройстве, такой стиль есть в Ratchet).
2. У них собственная реализация jQuery, не то, чтобы это было плохо само по себе, но облегчённые реализации jQuery уже есть: jqlite, Zepto, modern jQuery 2.0.

Так или иначе, очень интересен Ratchet и любые другие фреймворки этого типа.
Пока разрабатываю личное приложение / прототип на framework7 и тестирую под LG Nexus / iPhone 5s. Производительность более чем удовлетворяет, хотя и приложение нельзя назвать супер-замудреннм. Есть официальная работа, где в продакшене больше года есть проект Phonegap / Cordova + Sencha. Приложение довольно требовательно к ресурсам — фоторедактор. Производительность гибридных приложений с iphone 5s стала на приемлемом уровне. Андроид пока вызывает основные вопросы, но работает вполне сносно — в Google Play у нас 4-ка.

1. По поводу заточки под ios — можно всегда кастомизировать, но имхо UI F7 неплохо воспринимается андроид пользователями, то есть все вполне понятно — навигация вопросов не вызывает. Можно добавить несколько стилей, перекрасит тулбары и кнопки и вообще отойти от стандартного интерфейса, таким образом приложение не будет выглядеть инородно на какой то из платформ — оно будет восприниматься просто другим
2. По поводу кастомной версии jQuery — для повседневный операции: поиск элементов, перемещение по дереву — все традиционно, у меня вопросов не вызывает. Наличие кастомной реализации меня тоже смутило, но начал использовать и забил. Разработчик наверное решил, что так будет лучше с точки зрения производительности (это мое имхо). Для меня теперь это абсолютно не принципиально — главное чтобы хорошо работало.
Использовал Framework7, общее впечатление положительное.
1. В отличие от ionic, он не делает слишком много за меня и не вымещает все прочие не-angular подходы.
2. Вёрстка не сильно абстрагирована и переинженерена, при этом как компоненты, так и анимации на уровне ionic (а то и лучше).
3. С кастомным Dom7 (jQuery) проблема возникла как только я по привычке передал ему фрагмент HTML-кода. Эта часть jQuery (кстати, весьма интеллектуальная) явно не входит в минимальный набор, который требовался авторам. Сначала подключил Zepto, потом обнаружил, что он модифицирует прототип на лету (о чём меня предупредил Firefox), посмотрел бенчмарки и благополучно ушёл на jQuery 2.
4. Обнаружил, что на мобильном девайсе внезапно начинает рулить AMD-подход. Я являюсь сторонником CommonJS модулей (и browserify). Но т.к. на мобильном девайсе нет особой необходимости собирать JS в один файл, решил использовать AMD, который к тому же даёт неожиданный плюс в ленивости подгрузки (что положительно скажется на скорости старта прилаги).
5. Сам Framework7 использует LESS, что также является моим предпочтением.

Из минусов (то что я такими посчитал):
1. Нет блоковой модели box-sizing: border-box по дефолту. Включить я его по дефолту также не могу, потому что это сломает фреймворк, в итоге можно накидывать sizing только на свои компоненты.
2. Почему-то не сделали no-select.
3. Не совсем понятна логика понятий views/pages и их разделение.
По поводу вопросов к Framework7:
1. Как уже написали — с помощью стилей можно какие-то мелочи кастомизировать. Плюс сам по себе дизайн ios7 является достаточно универсальным и не вызывает неприятия на ios.
Да, на сколько я понял у автора есть идеи написать отдельные стили/версию под самый последний Android L :)
И это будет круто!
2. Собственная реализация jquery содержит гораздо меньше строчек. Плюс не имеет встроеных штук для совместимости с старыми версиями IE и т.п.
Поэтому работает быстрее.
Да, там всего ~500 строчек, поэтому все достаточно понятно и читаемо. Да и весь основной функционал JQuery по работе с DOM присутствует.
Насчёт андроида это хорошо. В свете нового дизайна от Google вдвойне.

А насчёт jQuery вы меня не поняли.
Собственная реализация jquery содержит гораздо меньше строчек. Плюс не имеет встроеных штук для совместимости с старыми версиями IE и т.п.
Я и говорю, что есть кастомные jQuery, которые именно так и позиционируются. Есть Zepto,
есть современный jQuery 2, где выброшена поддержка старых браузеров, есть супер-минималистичный jqlite, который юзается под капотом Angular, к примеру.
Это мелочь, конечно, но зачем писать велосипед в столь развитой области.
Я использовал, сделал на нем прототипы двух приложений примерно полтора года назад. В то время было довольно сложно его кастомизировать, и были навязчивые баги с кроссплатформенностью (например, таб бар на андроиде имел белую полоску внизу высотой в 10px). Все ньюансы чинились сами, костылями. Я даже side menu свой написал.
Автор, а можно по-подробнее про то как компилировать это чудо js'a и html в xcode? А под ведро можно?
Не совсем понял..(
Можно под что душе угодно собирать, что поддерживает WebView в котором можно отобразить HTML5 страничку. :)
PhoneGap из под вин не хочет устанавливать плагин для компилирования под iOS
Собирать iOS приложения можно только на Mac OS, насколько знаю. Исключения — всякие Xamarin'ы
Насколько я понял, автор коммента думает, что HTML+JS компилируется и получается нативный код, что в корне не верно. На выходе получаем приложение-обертку в которой главное окно — это «браузер» или WebView и в нее просто загружается HTML5 страничка. Доступ к файлам / камере получаем через нативные плагины.

> Автор, а можно по-подробнее про то как компилировать это чудо js'a и html в xcode?

Собирать приложение можно из командной строки: cordova build ios конечно же под Mac OS.

> А под ведро можно?

И под андроид тоже можно: cordova build android
Ааа. Вот оно что, я думал неужели получается хороший нативчик из этого всего и прям немог поверить.
А в компоненте просмотра страницы, соотвественно указывается локальное хранилище где лежит эти самые страницы? Или надо проводить товарища на сервер?
Websql, sqlite есть для хранения данных? Какой максимальный объём?

caniuse.com/#feat=sql-storage

Но советую сильно не рассчитывать так как:
The Web SQL Database specification is no longer being maintained and support may be dropped in future versions.
Есть phonegap sqlite plugin:
github.com/brodysoft/Cordova-SQLitePlugin

Лично я использую пока что websql, так как она поддерживается во всех существующих и должна поддерживаться в девайсах, которые выйдут в ближайшее время :)
Если что — лучше писать весь свой websql код через свой некий уровень абстракции, что бы в случае прекращения поддержки можно было максимально просто перейти к примеру на sqlite плагин.
Обязательно приглашайте автора Framework 7, очень не хватает на Хабре хороших статей по этому инструменту. Вопрос только: кто может помочь с инвайтом?
Его профиль на хабре vladimirkharlampidi
Если у кого-то есть инвайт — его можно пригласить и думаю он сможет быть полезным сообществу :)
Думаю, написав какой-нибудь пост, он сможет стать полезным сообществу (для меня уже стал) и получит инвайт. Например про push-уведомления, авторизацию или особенности размещения в AppStore.
Sign up to leave a comment.

Articles