Галоўная / Артыкулы

PWA, Swift і Kotlin, або Expo: Выбір архітектуры мобільнага даплы

Пораўняйце PWA, аплікацыі на Swift і Kotlin, якія ўжо є частынай системы, а таксама Expo па критэрыях кодавой базы, наявнасці ў магазінах, выконавачых характерыстыках, доступу да апаратнага забавляння, швальнасці выпуску і вартасці, а пасля выберыце.

Выдавец: REACTAPP.TOP5 хв чытання1251 слоў

Крыніцы: PWA vs Native vs Expo: Pros, Cons, and How to Choose the Right Architecture

Архітектуру, яю выберазе для мобільнага продукту, важка пазменіць пазнейшае. Якщо выбор будзе неправильным, наступны год пайдзе на борьбу з платформай, а не на розробку функцыяй: канфлікты залежнасцей пасля апгрэйда фрамворку, відсутнае API апаратнага забезпечэння чыста два каманды-розрабнікі, якія пачынаюць разлічвацца. У гэтым кярыянку парабяляюцца тры найбольш распашчытныя варыянты — Progressive Web Apps, абсалютна натыўная програма, напісаная на Swift і Kotlin, а таксама Expo, якае базуецца на React Native, і даўаюцца конкрэтныя крытерыі для выбору межа ўсімі імі, незалежна ад таго, чы розрабляеце вы MVP чы плануеце наступны этап існуючай программы.

Як парабяляюцца тры варыянты

Перш чым дакладна рассмотрзіць кожны варыянт, прыведзім, у чым яны разлічваюцца па параметрах, якія зазвычай вялікаважныя для выніку.

База коду

  • PWA: адна веб-база коду, створаная з HTML, CSS і JavaScript.
  • Native: адзінаковая база коду для кожной платформы — зазвычай Swift для iOS і Kotlin для Android.
  • Expo: адзінаковая база коду на JavaScript чыста TypeScript, яка выкорыстоўваецца як для iOS, так і для Android.
  • Прысутнасць у магазінах прыложэнняў

    • PWA: функцыонуе ў інтэрнете. Рэўізія прыложэння ў магазіне є необавязковай і выконваецца за дапамогою спецыяльных кэшаў чыста рашэнняў, прызначаных для конкрэтных платформ.
    • Native і Expo: розпространяюцца безпасуго через Apple App Store чыста Google Play.

    Прыдатнасць

    • Native: максымальная прыдатнасць. Плавныя анімацыі з усім можлівым частотам апдатча экрана, да 120 fps на сучасных экранах, без жадных прымусовых шароў абстракцыі.
    • Expo: для большайшай часткі правейляў ён максымальна набліжаны да натыўных рашэнняў. React Native атрыбуеяць справжнія натыўныя відворы, а яго новая архітектура заменяе стары асінхронны мост на прымыткавыя вызовы з JavaScript у натыўны код через JSI, што усунула давялічнае працоўнай узгорткі.
    • PWA: яго можлівасці обмежаны тым, што дазволяе двайхрэўнік браузера, па-выражнайша для складных анімацый і роботы на фоне.

    Даступ да апаратуры

    • Натыўны: усе, што адкрывае платформа.
    • Expo: шырокі спектар можлівасцей за дапамогою Expo SDK, які расширваецца плагінамі для налаштавання і спецыяльнымі натыўнымі модулямі, калі гэта неабходна.
    • PWA: базовы набор функцый, доступных у вебе, такіх як камера і геолокацыя, пры чым на iOS існуюць значныя прасоўкі.

    Швальнасц выпуску

    • PWA: змяны стаюць доступныя адразу пасля ўпрацоўкі, без перагледу з боку магазіна.
    • Expo: апдэты праз аерабязанне (OTA) можаюць мгновенна дастаць JavaScript і змяні асэтав, тады як змяны ў натыўнам кодзе все ж праходзяць через звычную пераглядку ў магазіне.
    • Native: кожны выпуск праходзіць через процес пераглядки ў магазіне.

    Кошты

    • PWA: зазвычай самы дашчавы для стварэння і падтрымкі.
    • Expo: сярэднія витраты з адной камандай.
    • Native: самы дашчавы, таму што два кодавые базы платформы зазвычай значаюць две спецыялізаваныя каманды.

    Прогрэсіўныя веб-дзеянні: падход, які прыоритэт дае вебу

    PWA — это веб-зявленне, якое выкарыстоўвае такія можлівасці, як service worker і web app manifest, каб працаваць больш падобна да запісанага дапрыямоўніка: яго можна дадаць на галоўны экран, запускаць у сабе стаканчыку і ўтримваць у роботе без падключэння да інтарнету. Якщо робота без падключэння є ключовай часткай вашага продукту, адказ у блозе пра падтрымку без падключэння за дапамогою service workers паказвае прынцыпы ўжывання.

    Адрозніцы. Межа межа між вамі і вашымі корыстувальнікамі — гэта не магазін дапрыямоўнікаў. Кожны, у каго є URL, можа выкарыстоўваць дапрыямоўнік і дадаць яго на свой галоўны экран. Апдэйты падаюць усім праз наступны завантажэнне, а контент можа быць індексаваны пошуковымі системамі, што дае можлівасць арганічнага знаходжэння, якога рэдка калі даўаюць старонкі магазінаў.

    Абяцкія пункты. Компанія Apple яшчэ і сёледзьце обмежвае можлівасці ПВА на iOS. Функцыя Web push доступна толькі для аплікацый, якія размешчаны на галоўнам экране, а выконанне у фонавым режыме сустракае строгія абмежэння. Функцыі Web Bluetooth і падобныя API апаратнага забезпечэння ўсёўсюды не падтрымваныя ў Safari. Якщо продукт завісіць ад Bluetooth, стацыонарнага фонавога тракінгу чы ўжо глыбокай інтеграціі з прыстроем, ПВА быстра стане неэфектыва. Палітікі платформы тут змяніліся не аднае разы, таму пераканайцеся ў актуальным стане для вашых цэльвых версій iOS.

    Натыўны Swift і Kotlin: максимальная кантроль

    Разработка натыўных аплікацый значыць стварэнне і падтрымку двух аплікацый: адной на Swift для iOS і адной на Kotlin для Android.

    Адрэсныя стороны. Нічога не абстрагуецца, таму якасць працы і точна відтворэння є на апошнім рывку, як толькі дозволяе платформа. Новыя API ад Apple і Google становяцца доступнымі ў дзень выпуску, без патрэбы чакаць, калі якісь фреймворк іх абгорнуе. Гэта найлепшы выбар для складных графікі, розгорнутых тэхналогій AR чы VR, а таксама для інтэнзыўной обробкі дадзеных у фоне.

    Абмежэння. Вартасць адпрацоўкі є значным. Два кодавыя базы практычна удвое збільшуюць час на розработку і тэставанне, і зазвычай трэбуюць двух камандаў з рознымі навыкамі. Кожна функцыя павінна быць створаная два разы і падтрымліваная ў синхроназе, а кожны выпуск, нават якщо цэе толькі маленькая пасправка, чакае на адзначэнне з боку магазіна.

    Expo: адна кодавая база, натыўныя рэзультаты

    Expo — это фреймворк і набір інструментаў з відкрытым кодам, створеныя на базе React Native. Ён приховвае велікую частку складнасця стварэння прыгодных аплікацый на iOS і Android, таму ўсё тое ж кодавае база на JavaScript або TypeScript можа стварыць справжнія прыгодныя аплікацыйы для обох платформ.

    Перавагі. Разработка ведзецца быстра. Expo Application Services (EAS) стварае прыгодныя бінары ў хмаре, таму для повсякдзенной роботы рэдка калі трэба ачынаць Xcode чысто Android Studio. EAS Update дастае патчы через OTA прямо да встановленых аплікацый. Памятайце, што патчы через OTA можа зменіць код на JavaScript і асеты, але не прыгодны код, а правіла магазінаў як і раней карыстуюцца тым, што можна зменіць па часе апдэйта; новая прыгодная залежнасць значыць новую версію аплікацыйы для магазіна.

    Абяцкія. Дапамога плагінаў для налаштавання і API Expo Modules зробілі стварэнне спецыяльнага натыўнага коду значна простэйшым, чым раней, а версіі для разработкі дазваляюць включыць будзь-яю натыўную бібліятэку, а не толькі тыя, якія ўключаны ў Expo Go. Усё-такі, дзеяныя прыкладнення, якім патрэбны драйверы апаратуры надзеўнага рэвяра чы сложны спецыяльны код на C++, яшчэ выклікаюць неабходнасць роботы з натыўным кодам, і команде патрэбна людзі, якія вмеюць гэта робіць.

    Ёсць большая інфармацыя пра апцыі мультиплатформенага разработкі паza Expo, уключаючы Flutter і Kotlin Multiplatform; адзін раз прачытайце аповесць блога па тэме мультиплатформеных фреймворкаў для мобільных прыкладненняў.

    Выбір правильной архітэктуры

    Адпавядаеце архітэктуры продукту, а не любаму інструменту каманды:

    1. Выберыце PWA, калі бюджет мяркавы, важна доступнае ашукаўцам праз пошук, а продакт у большай частцы складаецца з контэнту або форм: інтэрнет-магазін, новынкі або панель керування SaaS. Це таксама розумны спосаб пераканацца ў попытку рынку прыяўлення, перш чым інвеставаць у стварэнне дапаможных прыстроёў.
    2. Выберыце Expo для стартапа, MVP або прыстрою для практычнага выкарыстоўвання, якія павінны быстра з’явіцца ў App Store і Google Play за дапамогою адной команды. Гэта падходзіць для большасці дапаможных прыстроёў для бізнесу і спожыццаў.
    3. Выберыце натыўны варіант для высокакалітэтных гэмэў, прыстроёў, якія выкарыстоўваюць апаратную частку, напрыклад прыстроёў для фізычных вправ, якія стабільна синхронізуюцца через Bluetooth, або для будзь-якога дапаможнага прыстрою, дзе інтерфейсы з частотай 120 fps і абсэнтны рызык абстракціі є справжнімі трэбаваннямі.

    Этыя варыянты не ўтвараюць стойкіх, незменных рашэнняў. PWA можа сусіставаць з додаткам, які хранится ў магазыне, а додатак Expo можа мець натыўныя модулі, напісаныя на Swift і Kotlin; таму часта існуе гібрыдны падход, калі адна частка продукту перавырастае стандартныя можлівасці.

    Заключэнне

    У загальным сенсе ні аднаго з трох падходаў не ёсць кращым. Правильнае рашэння залежыць ад таго, калькі функцый должен выканаць продукт на прыстрое, насколькі шыбка ўжо трэба дасягнуць корыстнікаў і сколькі інжынераў можна фінансаваць. Адпаведзіце на гэтыя тры запытанні пры прадзеўстве коду: выкарыстанне неправильнага варыянта пазней выражаецца ў неабходнасці переработак і пошуку альтэрнатыўных способаў на платформе, тады калі правильны варыянт дазволяе командзе прасвятіць час на стварэнне функцый, якія звертаюць увагу корыстнікаў.