محدودیت های React Native برای توسعه دهندگان


در این مقاله قصد دارم که در مورد محدودیت هایی که هر توسعه دهنده React Native باید بدونه بنویسم.قبلا در مورد مزایای React Native صحبت کردیم و حتی در مقاله ای به مقایسه عملکرد بین Native ios(Swift) و React Native پرداختیم و دیدیدم که React Native عملکرد بهتری نسبت به Swift داشت اما هر فریمورکی یک سری محدودیت ها و معایب داره که منو مجاب کرد تا مطلبی در این مورد بنویسم.
در این مقاله برخی از محدودیت های رایج React Native رو لیست میکنم.امیدوارم که بهتون در جلوگیری از درگیری های ذهنی جدی در توسعه React Native کمک کنم.این مقاله حتی میتونه به شما کمک کنه که تصمیم بگیرید آیا اصلا React Native برای شما مناسب هست یا نه؟
نکته: توجه کنید که به هیچ عنوان این محدودیت ها نشانه این نیست که React Native مناسب توسعه اپلیکیشن نیست،در واقع React Native یکی از بهترین فریمورک ها برای توسعه اپلیکیشن برای پلتفرم های Android , Ios بصورت native هست.
نیاز به توسعه دهندگان native
باتوجه به اینکه شما فقط با جاوااسکریپت کد میزنید ولی گاهی اوقات به توسعه دهنده های native نیاز پیدا میکنید.تصور کنید که گاهی اوقات لازمه که در اپلیکیشن محاسبات سنگین انجام دهید،در اینگونه موارد به برنامه نویس native نیاز دارید.همچنین گاهی اوقات موقع استفاده از SDK های مختلف مثل Google Analytics برای تلفن همراه شما باید نحوه کار داخلی کتابخونه رو بفهمید تا بتونید این کتابخونه رو با React Native ادغام کنید.
رفتار متفاوت بعضی از کامپوننت ها در پلتفرم های مختلف
در برنامه نویسی های cross-platform تصور اینکه وقتی از یک کامپوننت استفاده میکنی رفتار یکسانی در پلتفرم های مختلف داشته باشه.البته در حالی که اکثر کامپوننت ها رفتار یکسان دارند ولی گاهی اوقات در پلتفرم های مختلف رفتارهای متفاوتی دارند.همچنین در React Native بعضی کامپوننت ها فقط مخصوص یک پلتفرم است و شما مجبورید از کتابخونه های جانبی برای یک پلتفرم مخصوص استفاده کنید.
کامپوننت های مهم مخصوص پلتفرم Ios:
- DatePickerIOS
- NavigatorIOS
- PickerIOS
- ProgressViewIOS
- SegmentedControlIOS
- SnapshotViewIOS
- ActionSheetIOS
- AdSupportIOS
- AlertIOS
- ImagePickerIOS
- VibrationIOS
کامپوننت های مهم مخصوص پلتفرم Android:
- DrawerLayoutAndroid
- ProgressBarAndroid
- ToolbarAndroid
- ViewPagerAndroid
- BackAndroid
- DatePickerAndroid
- PermissionsAndroid
- TimePickerAndroid
- ToastAndroid
محدودیت های انتزاع لایه
به منظور ایجاد قابلیت های بیشتر یک انتزاع لایه در بالاترین سطح React Native ایجاد میشه.در صورتی که هر مشکلی در انتزاع لایه بوجود بیاد، اشکلات غیرمنتظره در اپلیکیشن شما بوجود میاد.تشخیص اینگونه خطا ها بسیار دشوار و وقت گیره.داشتن یک انتزاع لایه باعث وابستگی به کتابخونه های جانبی برای بروزنگه داشتن فریمورک میشه.یکی دیگه از مشکلات انتزاع لایه اینکه شما باید برای اجرای طرح های سفارشی از زبان های native مثل Java, Objective-C or Swift استفاده کنید.این کار معمولا برنامه نویس ها رو خسته میکنه و مزایای این فریمورک رو کاهش میده.
Document برای پشتیبانی React Native
اگرچه توسعه دهندگان React Native یک جامعه بالغ دارند اما مستندات در این زمینه به اندازه کافی نیست و مستندات سایت React Native هم برای شروع و در حد متوسط مناسبه.این امر باعث میشه که برنامه نویس ها برای بهبود و بهینه سازی عملکرد برنامشون دچار مشکل بشن.البته خوشبختانه توسعه دهنده های React Native داستان مشکلات و راه حل هاشون رو به اشتراک میزارن.
وابستگی به کتابخونه های جانبی
React Native فوق العاده است و کامپوننت های بسیار قوی در دل خودش داره.اما در موارد خاص نیاز هست که ارزیابی و بررسی کنید که استفاده از کامپوننت های خود React Native برای کار شما مناسبه و به اندازه کافی قوی هست یا نه
به عنوان نمونه Tab Bar.شما میتونید از Tab Bar خود React Native برای IOS استفاده کنید اما برای اندروید شما نیاز به کتابخونه جانبی دارید.وقتی این اتفاق بیفته شما باید دنبال یک کتابخونه باشید و بعد از پیدا کردن یک کتابخونه باید بررسی کنید که این کتابخونه مناسب کار شما هست یا نه که خودش کاری وقت گیره.
کتابخونه های جانبی قدیمی
در مورد وابستگی به کتابخونه های جانبی در بخش قبلی صحبت کردم اما چیز جدیدی که باید بدونید اینکه با بروزرسانی React Naive گاها مشکلاتی برای این کتابخونه ها اتفاق میفته.بسته به پشتیبانی جامعه توسعه دهنده کتابخونه،میتونید انتظار داشته باشید که کتابخونه رو بروزرسانی کنند یا با مشکلات بروزرسانی دست و پنجه نرم کنید.
پشتیبانی نکردن از پردازش موازی
React Native از چند پردازشی یا پردازش موازی پشتیبانی نمیکنه.React Native از تک پردازشی با استفاده از جاوااسکریپت استفاده میکنه.عملکرد برنامه کاهش پیدا میکنه اگه شما بخواین چندین فرایند رو همزمان اجرا کنید.برای مثال اگه شما بخواین برنامه چت زنده و گشت وگذار ویدئویی در برنامه داشته باشین.این کار رو نمیتونین با React Native انجام بدین.
اشکال زدایی استایل ها در React Native
سبک های اشکال زدایی استایل در React Native برای توسعه دهنده های وب مبتدی ممکنه کمی ناراحت کننده باشه.چون نمیتونند مانند وب با استفاده از حالت developer مرورگرها به اشکال زدایی بپردازند.البته خوشبختانه در نسخه های جدید React Native شما میتونید با استفاده از قابلیت hot reloading اشکال زدایی رو راحت تر انجام بدین.برای آشنایی بیشتر میتونید مقاله معرفی HotReloading رو بخونید.
بروزرسانی بسیار زیاد React Native
بروز رسانی های بیش از حد React Native باعث میشه تا توسعه دهنده ها گیج بشن و وسوسه بشن که پروژه خودشون رو به جدیدترین نسخه بروزرسانی کنند.گاهی اوقات آپدیت های جدید دارای مشکلاتی هست که مجبور میشید از نسخه های قدیمی دوباره استفاده کنید یا بعضی از قسمت های کدتون رو تغییر بدید.برای آشنایی با نحوه بروزرسانی React Native میتونید مقاله بروزرسانی react native با استفاده از Git رو بخونید.
خب در این مقاله بعضی از محدودیت های React Native رو معرفی کردم البته این محدودیت ها به هیچ عنوان باعث نمیشه تا فکر کنید React Native مناسب توسعه اپلیکیشن نیست.اگه در زمینه برنامه نویسی React Native تجربه دارید و به مشکلاتی برخوردید،تجریه های خودتون رو در کامنت ها به اشتراک بزارید تا همگی از این تجربیات استفاده کنیم.
مطالب زیر را حتما مطالعه کنید
چگونه از ماژول های نیتیو Android و IOS در React Native استفاده کنیم؟
تفاوت توسعه برنامه های android و ios
استفاده از Flipper در پروژه های ری اکت نیتیو (React Native)
نمایش PDF در react native
استفاده از Mapbox در react native (ری اکت نیتیو)
نمایش عکس های گوشی در react native (ری اکت نیتیو)
9 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام
یه سوال وقتی با react netive اپلیکیشن میسازیم دقیقا و براحتی میشه خروجی واسه اندروید و ios گرفت ؟ یا نه بیس و پایه یکی هست ولی باید برای ios و اندروید جداگانه سفارشی سازی شود؟
سلام.
بیش از 95 درصد کدها برای اندروید و ios یکسان هست و شما شاید نیاز باشه 5 درصد کدها رو برای هر پلتفرم جدا بنویسید.موقع نصب کتابخونه برای هر پلتفرم یک سری config های خاص داره.
سلام اگه کار طراحی سایت رو با React انجام میدید
اطلاع بدید
با تشکر
سلام.
میتونید اگهی استخدامتون رو در تالار گفتمان بیان کنید تا همگی مطلع شوند.
سلام و عرض ادب
من این موضوع رو “پشتیبانی نکردن از پردازش موازی” متوجه نشدم!
منظورتون همون ترد ها هستند؟
آیا میشه با استفاده از جاوا برای اندروید نوشت؟؟
و سوال دوم اینکه اگر برنامه ای بنویسیم و داخل برنامه از جاوا استفاده کنیم دیگه نمیشه اون رو تبدیل به برنامه ios کرد دیگه؟!
در مورد سوال اولم یعنی قسمتی که نیازمند ترد هست، آیا میشه با استفاده از جاوا نوشت؟
سلام.
منظور از پشتیبانی نکردن از پردازش موازی اینکه اگر شما نیاز به live chat و video surfing بصورت parallel رو دارید نمیتونید همچین کاری رو بکنید. شما میتونید هر کتابخونه ای رو با استفاده از جاوا و swift ایجاد کنید و در react native استفادش کنید که البته اکثر کتابخونه هایی که نیاز دارید قبلا نوشته شدند و در گیت هاب موجودند
سلام
به نظر شما برای ساخت کلاینت تلگرام، React Native گزینه مناسبی هست؟
سلام.
منظورتون از ساخت کلاینت تلگرام با React Native رو متوجه نشدم.میتونید بیشتر توضیح بدید؟؟