Apabila saya membina apl React Native pertama saya, saya mempunyai pengalaman terdahulu dalam pembangunan web. Menggunakan React untuk iOS dan Android kelihatan seperti lanjutan semula jadi kepada kemahiran saya.
Tetapi saya dengan cepat mendapati — cara yang sukar — bahawa pemikiran pembangun web tidak selalunya diterjemahkan dengan baik kepada pembangunan apl asli.
Ambil navigasi, sebagai contoh. Di web, setiap tapak lazimnya menghasilkan reka letak halaman yang unik. Pengepala, bar sisi dan pengaki semuanya tersuai. Anda mungkin bermula dengan elemen mudah, tetapi ia hanyalah kanvas kosong. Anda perlu menggunakan JavaScript dan CSS untuk menjadikannya berfungsi dan menarik secara visual.
Penyesuaian ini menjadi sebahagian daripada identiti jenama anda. Jika pengepala anda kelihatan seperti tapak lain, ia kelihatan generik.
Apabila saya beralih kepada pembangunan apl asli, saya membawa pemikiran yang sama dengan saya.
Saya mereka bentuk komponen tersuai dengan teliti untuk segala-galanya. Saya membina pengepala saya sendiri dengan butang belakang dan tajuk. Saya mencipta peralihan skrin tersuai dan animasi. Saya juga menguruskan sendiri kawasan selamat dan menjejaki orientasi skrin untuk menghidupkan peralihan. Saya membuat tab bawah tersuai — apa sahaja untuk memastikan apl saya tidak kelihatan seperti orang lain.
Tidak mengambil masa yang lama untuk menyedari ini adalah satu kesilapan.
Pengguna apl asli mengharapkan corak yang konsisten merentas apl. Mereka juga mempunyai jangkaan yang tinggi untuk kualiti elemen UI asas, seperti navigasi. Sebagai contoh, pada iOS, pengguna mengharapkan untuk menekan lama butang belakang untuk menavigasi beberapa skrin kembali. Jika tiada, pengalaman itu terasa tidak lengkap.
Jadi mengapa mencipta semula roda? Komponen asli sudah dioptimumkan untuk platform. Daripada membina pengepala tersuai dari awal, saya boleh menggunakan tajuk asli dan mengubah warnanya. Lebih baik lagi, saya boleh melangkau penyesuaian sama sekali dan menggunakan komponen UIKit secara langsung. Jauh daripada merasakan "asas", pengguna akan menghargai betapa apl itu sesuai secara semula jadi dalam ekosistem iOS.
Ambil kejayaan apl seperti Apollo untuk Reddit. Orang ramai menyukainya kerana ia merangkumi bahasa reka bentuk asli iOS, menjadikannya seperti sambungan semula jadi platform.
Ini sangat berbeza dengan pembangunan web. Di web, anda bermula dengan kanvas kosong dan membina semuanya sendiri. Primitif di luar kotak selalunya kikuk dan tidak menarik. Butang berwarna kelabu. Input mempunyai garis besar yang kasar. Anda juga memerlukan tetapan semula CSS hanya untuk mendapatkan garis dasar yang konsisten.
Perpustakaan UI web wujud untuk mengurangkan kekecewaan ini, tetapi ia merupakan penyelesaian yang tidak bercapuk. Sebagai perbandingan, platform asli seperti iOS datang dengan reka bentuk primitif yang padat dan direka dengan cantik. Navigasi, animasi, menu, tipografi, warna dan ikon semuanya direka dengan teliti oleh pakar untuk mencipta pengalaman pengguna yang lancar. Ini bukan sekadar alatan — ia adalah sistem reka bentuk yang dibentuk oleh beberapa dekad penambahbaikan.
Saya mengambil masa terlalu lama untuk menghargai ini. Saya tidak ambil kisah pun untuk membaca Garis Panduan Antara Muka Manusia Apple pada mulanya.
Dulu pada tahun 2019, apl React Native selalunya terasa seperti tiruan yang berkualiti tinggi bagi apl asli. Mereka melihat bahagian itu tetapi tidak begitu merasakannya. Falsafah React Native sentiasa sepadan dengan platform asas, tetapi dalam praktiknya, banyak perpustakaan bergantung pada komponen berasaskan JavaScript yang meniru komponen asli dan bukannya menggunakan perkara sebenar.
Sebagai contoh, apl React Native pada Android sering menggunakan pengepala Reka Bentuk Bahan, tetapi ia dilaksanakan dalam JavaScript dan bukannya memanfaatkan komponen pengepala asli yang sebenar.
Sebagai pembangun web, saya mendapati abstraksi ini menarik. Ia memberi saya kawalan sepenuhnya ke atas penyesuaian. Tetapi pendekatan ini selalunya membawa kepada ketidakkonsistenan halus yang mengurangkan pengalaman pengguna.
Pemaju React Native tidak boleh dipersalahkan sepenuhnya. Pada masa itu, bekerja dengan kod asli adalah menyusahkan, terutamanya jika anda menggunakan Expo. Menambah ciri asli selalunya memerlukan meninggalkan Expo dan mengkonfigurasi semula keseluruhan timbunan anda. Perpustakaan dengan kod asli sering tidak disegerakkan dengan kemas kini React Native, menyebabkan pembangun bergelut dengan fail Objective-C atau Java yang mereka tidak faham sepenuhnya.
“berasaskan JS” malah menjadi titik jualan untuk perpustakaan, menjanjikan pembangun mereka tidak perlu berurusan dengan kebergantungan asli.
Pembahagian antara JavaScript dan kod asli ini menguatkan minda saya yang mengutamakan web. Mengapa tidak menggunakan JavaScript untuk segala-galanya?
Syukurlah, ekosistem React Native telah berkembang. Hari ini, anda boleh menulis modul asli menggunakan Swift dan Kotlin dengan konfigurasi yang jauh lebih sedikit. Lebih baik lagi, Expo kini menyokong kod asli. Penambahbaikan ini telah menjadikan pembangunan diutamakan orang asli lebih mudah diakses, menggalakkan perpustakaan untuk menerima ciri primitif asli.
Navigasi React, misalnya, telah beralih ke arah menggunakan komponen asli, mengutamakan pengalaman pengguna yang lancar berbanding penyesuaian pembangun yang meluas.
Anjakan ini menandakan masa depan yang lebih cerah untuk React Native. Dengan alatan asli menjadi lebih mudah untuk digunakan, kami boleh membina apl yang kelihatan dan kelihatan seperti miliknya pada platform mereka.
Jadi, belajar dari kesilapan saya. Gunakan alatan platform dan terima falsafah reka bentuknya. Dan yang paling penting, kuasai peraturan sebelum anda memutuskan untuk melanggarnya.
Atas ialah kandungan terperinci Bagaimana pemikiran pembangunan web saya menyesatkan saya dalam React Native. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!