[Из песочницы] Ionic: комментарии к мифам после года использования
Прошел ровно год с того момента, как наша команда начала разработку своего первого продукта — ionic-приложения для знакомств, которое является отечественным братом всем известного tinder. В течение этого года мы столкнулись с множеством проблем, характерных для гибридных приложений, теперь у нас есть опыт и замечания, которыми мы были бы рады поделиться с вами.
Почему ionic?
Ionic был выбран потому, что мы — веб-разработчики, а JavaScript в целом и angular в частности — это то, в чем мы действительно хороши. У нас не было времени вникать в детали разработки под ios, затем android, тратить на это ограниченные время и деньги. Нужно было сделать все максимально быстро, потратить наименьшее количество времени, выпустить и проверить, полетит ли приложение. Классические предпосылки для разработки гибридного приложения.
Приведем пару популярных мифов о гибридных приложениях и наш взгляд на них спустя год разработки.
Write once, run everywhere
Факт — 90–95% кода приложения является общим для обеих платформ. Есть особенности платформ, которые иногда нужно учитывать, не все плагины, которые мы использовали, одинаково хорошо работали как на android, так и на ios, но факт остается фактом — чаще всего мы писали один и тот же код, который одинаково работал на большинстве устройств. Однако. Часто на написание кода под определенную платформу уходило времени больше, чем хотелось бы.
Для разработки гибридного приложения не нужно быть mobile-разработчиком
Ни один из членов нашей команды не имел опыта мобильной разработки. В основном мы занимались привычной нам веб-разработкой, использовали уже готовые плагины для нативных возможностей телефонов. Но не все так просто. У использованных нами cordova-плагинов не всегда хватало некоторой «заточенности» и действительно иногда хотелось, а один раз пришлось дописать плагин на Java и Objective-C. Так что опыт мобильной разработки не обязателен, но крайне желателен, особенно если ваше приложение будет сильно зависеть от нативных возможностей устройств.
Гибридные приложения медленнее нативных
Гибридным приложениям не хватает чувства нативности и плавности, с этим не поспоришь. С развитием браузеров и frontend-фреймворков каждый день делается маленький шаг вперед, ionic уже сегодня имеет неплохой набор директив и стилей, чтобы сгладить острые углы. Но вышеупомянутого чувства нативности и плавности все равно не хватает.
Одна из главных проблем, с которой мы столкнулись — поддержка старых версий android 4.x. Браузеры в этих версиях android портили нам жизнь, все работало из рук вон плохо, а многие вещи просто не поддерживались. Нас спас crosswalk, который вместе с приложением подкладывает актуальную версию webview. Crosswalk ускорил работу приложения на старых устройствах в разы, и это правда. Стоит заметить, что данной проблемы не было при работе с ios-устройствами — они оперативно обновляются.
Ionic экономит время и деньги
Ionic хорош для несложного клиента к вашему серверу, который будет удобнее мобильной версии сайта. Ionic также хорош для прототипирования — на нем неплохо опробовать концепт, после чего, убедившись и получив достаточное количество ресурсов, написать нативные приложения для необходимых вам платформ. В этих нишах ionic дейтсвительно хорош и вы вряд ли пожалеете, использовав его. Но если вы решите написать что-нибудь действительно сложное, в особенности приложение, которое зависит от многих нативных возможностей устройств, то в определенный момент вы потратите слишком много и на выходе (что весьма оптимистично) получите некачественный продукт.
Результат
По ряду причин (в основном не зависящих от выбранной технологии) разработка проекта затянулась на год, она не раз приостанавливалась и возобновлялась, а мы потеряли большую часть энтузиазма. В итоге продукт перерос из прототипа (который нам нравился) в полновесное приложение с богатым функционалом (которым мы не до конца довольны). Иногда не хватает плавности, иногда скорости и чего-то еще. Мы выложили его сначала на App Store и Play market, затем подумали и поделились кодом со всеми на github.
Какие мы сделали выводы
Ionic подходит для прототипов и простых клиентских приложений. Использовав его для такого рода приложений вы будете счастливы. Если ваш продукт слишком сложен и сильно зависит от нативных возможностей устройств — забудьте про ionic, так вы спасете себя от лишних затрат и лишней работы.