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, так ви врятуєте себе від зайвих витрат і зайвої роботи.