وب سایت آموزشی reactapp.ir ، ,ورود به دنیای جاوااسکریپت
چه چیزهایی را از React Native را دوست ندارید؟
حدود دو ماه پیش مهندسان فیسبوک سوالی با این عنوان مطرح کردند”?What do you dislike about React Native”. فیسبوک در حال بازنویسی هسته React Native هست و هدف بیان کردن این سوال دخیل کردن نظرات توسعه دهندگان React Nativeدر rewrite این فریمورک است.در ادامه با همدیگه سوالاتی که توسعه دهندگان بیان کردند و پاسخ های مهندسان فیسبوک رو بررسی می کنیم
مهندسین فیسبوک : ما از زمانی که تصمیم به rewrite هسته React Native با (Fabric (#4 و( TurboModules (#40 گرفتیم،شروع به حذف و تغییر تعداد زیادی modules به عنوان Lean Core داشته ایم.تعداد pull requests ها را به 70 عدد در مقایسه با 280 عدد در December از طریق merging و close کاهش داده ایم.به طور همزمان میانگین تعداد Pull Requests باز شده در روز از 3.5 به 7 افزایش یافته است.
ما سرانجام به تمامی issues هایی که در #64 منشن شده بودند،پاسخ دادیم.لطفا این کامنت رو بخونید تا متوجه بشید که ما چگونه این لیست رو آماده کردیم.پیشنهاد میکنیم قبل از شروع به خوندن این مقاله یک فنجان قهوه یا یک میان وعده صرف کنید و بعد شروع به خواندن این متن کنید
Upgrading requires a lot (too much?) effort
ارتقاء از یک نسخه به دیگری کار سختی است و باید سخت کار کنید و زمان زیادی را صرف کنید به خصوص زمانی که چندین نسخه را منتشر کرده اید و باید به صورت دستی ارتقاء را انجام دهید.
Votes: 572
Tags: upgrading
Estimated time to fix: ~3-6 months
(Point of contact: Christoph Nakazawa (@cpojer)
مهندسین فیسبوک : ما اطلاعات بیشتری بر روی گیت هاب خواسته ایم تا یک overview خوب نسبت به مشکلات ارائه دهیم اما این کار مدت زمان زیادی طول می کشد تا مشکل به صورت کامل برطرف شود.این مشکلات مربوط به breaking changes، native module و تغییرات قالب است که درک آنها دشوار است.از آنجایی که ما rn-diff-purge into react-native upgrade را به عنوان بخشی از نسخه 0.59 قرار دادیم و Cocoapods رو به عنوان راه پیش فرض برای نصب native dependencies در ios ساختیم.ما همچنین در حال برنامه ریزی برای نوشتن جزئیات هر تغییر در پست های بلاگ هستیم و همچنین به دنبال راهی برای integrate این اطلاعات در CLI هستیم.ما یک بازرسی کامل از template انجام خواهیم داد تا ببینیم کدام بخش را میتوانیم به React Native برگردانیم تا ارتقاء را آسان تر کند.
Debugging exceptions
پیدا کردن ریشه اصلی یک مشکل اصلا کار آسانی نیست و من این مسئله رو اصلا دوست ندارم.stack trace در کنسول Chrome debugger معمولا محل اصلی مشکل را نشان نمی دهد که منجر به اشکال زدایی شود و از طرفی استفاده از omponentDidCatch کمکی به حل این مسئله نمی کند.
به طور شگفت انگیزی زمانی که ما() console.error در کد اضافه میکنیم میتوانیم یک stacktrace صحیح به دست آوریم و ریشه مشکل را پیدا کنیم.این کار بسیار ساده است و حتی در componentDidCatch قابل استفاده است.
facebook/react-native#16205
facebook/react-native#16661
Votes: 290
Tags: dx, debugging
Estimated time to fix: Continuous
(Point of contact: Christoph Nakazawa (@cpojer)
مهندسین فیسبوک :ما متوجه شدیم بسیاری از مشکلاتی که توسعه دهندگان با آن روبرو هستند گیج کننده است و به همین دلیل در گیت هاب وتوییتر برای اطلاعات بیشتری سوالاتی پرسیدیم تا یک دیدگاه خوبی نسبت به این مسئله داشته باشیم.ما نگاهی به issue های اصلی که توسعه دهندگان با آن روبرو هستد کردیم و در حال تلاش هستیم تا error messages ها را بهبود ببخشیم و داکیومنت را بازنویسی و کدها را تغییر بدهیم تا کمتر دچار error شوند.کار سختی است تا میران پیشرفت در این زمینه را اندازه گیری کنیم و بگوییم که در این زمینه پیشرفت کرده ایم.اما در مورد این مسئله مجدد از شما سوال خواهیم کرد.
Support of React Native team
خوشبختانه شاهد حضور بیشتر از تیم react-native در جامعه هستیم.
Votes: 240
Tags: communitySupport
Estimated time to fix: Continuous
(Point of contact: Christoph Nakazawa (@cpojer
مهندسین فیسبوک : همانطور که ممکن است دیده باشید،در چند ماه گذشته ما سرمایه گذاری زیادی در React Native community شروع کردیم.به طور مثال تعداد pull requests ها را به 70 عدد در مقایسه با 280 عدد در December از طریق merging و close کاهش داده ایم و به طور همزمان میانگین تعداد Pull Requests باز شده در روز از 3.5 به 7 افزایش یافته است.ما همچنین در حال برنامه ریزی برای جواب دادن سوالات باقیمانده تا 18–20 March هستیم .همچنین امیدواریم با بازنویسی documentation نحوه یادگرفتن و رفع خطا را آسان تر کنیم.
Performance, performance, performanc
اول از همه من یک کاربر اندروید هستم و از گوشی های قدیمی استفاده نمی کنم،از pixel2 استفاده می کنم که یکی از بهترین ها است.Startup time تفاوت بسیار زیادی بین pure native و RN است.نه تنها زمانی که اپلیکیشن را باز میکنید بلکه برای deep linking هم وجود دارد.زمانی که بر روی آیکون اپلیکیشن اندروید کلیک میکنید،RN خیلی آهسته است و مشا میتوانید از splash screen و موارد دیگه استفاده کنید اما به شما احساس native بودن را نمی دهد.
یکی از مشکلاتی که وجود دارد navigate بین صفحات است.من فکر میکنم به احتمال زیاد فیسبوک فقط از سیستم navigate خود استفاده می کند.بنابراین آنها نیازی به کمک یا سرمایه گذاری مشترک برای حل این مشکل ندارند.حیفه زمانی که برنامه Android یا ios توسعه می دهید نیاز به توجه به navigate ندارید چون اغلبا فقط کار میکند.
Votes: 232
Estimated time to fix: 2019
Point of contact: React Native team at Facebook
مهندسین فیسبوک :ما در حال حاضر بر روی تعداد زیادی تغییرات قابل توجه در React Native کار میکنیم.شما میتوانید اطلاعات بیشتر را در Fabric,TurboModules, Lean Core کسب کنید.در حالی که هیچ کدام از اینها به طور جداگانه به performace کمک نخواهند کرد،زمانی که ما تمامی این پروژه ها را کامل کنیم و انجام دهیم،معتقد هستیم React Native خیلی سریع تر خواهد شد و بیشتر احساس native بودن را منتقل خواهد کرد.نسخه 0.59 React Native با یک نسخه جدید از JSC در Androidارائه خواهد شد که به طور قابل توجهی سریعتر است.ما ویژگی بهینه سازی (“inline-requires” and “RAM bundles”) را فعال خواهیم کرد که نتیجه آن افزایش 10-30% speed-ups است همچنین بر روی یک سری ویژگی ها کار میکنیم که به زودی در مورد آن خواهید شنید.
The solution to lots of problems is rm everything and re-install
من فکر میکنم که documentation بهتری در مورد نحوه recover مشکلاتی که راه حل آن “fresh install” است وجود دارد.اکثر این مشکلات با دستوراتی مثل react-native nuke، پاک کردن watchman ،نصب مجدد node_modules و .. حل می شود.برای من کاملا روشن است که React Native پیچیده است و راه حل هایی مثل “fresh install” کد معادل “turn it off and on again” است.پیچیدگی مشکل نیست و شما به خوبی کار خود را انجام میدهید.من فکر میکنم که اگر دلیل اصلی را بهتر درک کنیم به مردم کمک میکنیم تا سریعتر مشکلات خود را حل کنند.
Votes: 168
?:Estimated time to fix
(Point of contact: Christoph Nakazawa (@cpojer
مهندسین فیسبوک :لطفا پاسخ های سوال یک و دو در مورد upgrading و debugging را بخوانید.
General Uncertainty. Lack of confidence
من از بعضی از مشتریانم جملاتی در باره پایداری React Native می شنوم.به نظر می رسد تصمیم گیرندگان در کمپانی ها بر روی React Native سرمایه گذاری می کنند.آن ها اطلاعاتی در مورد rewritten شنیده اند.به نظر می رسد پیام ها باید وضوح بیشتری داشته باشد.چیزی برای ایجاد اعتماد و اطمینان در مورد وضعیت موجود و پایداری طولانی مدت این پلتفرم.
Votes: 144
Estimated time to fix: continuous
Point of contact: React Native team at Facebook
مهندسین فیسبوک :ما شاهد استفاده بیشتر شرکت ها از React Native در مقایسه با 6 ماه سال گذشته بوده ایم.کمپانی های بزرگی مثل Microsoft, Amazon, Walmart, Uber, Pinterest, Zynga ، tons و بسیاری دیگر از React Native استفاده می کنند و آینده platform روشن است.ما اطلاعات بیشتری در مورد کار فیسبوک و دیگران برای React Native در جهت بهبود communication و کاهش عدم اطمینان در community به اشتراک خواهیم گذاشت.
Missing documentation
من اجساس میکنم بسیاری از ویژگی های React Native پنهان است که تنها در issue ها مستند شده است یا استفاده آن در کتابخانه های پیشرفته یافت می شود در حالی که نمیدانی این API رسمی و stable است. به عنوان یک نویسنده کتابخانه داکیومنت برای API ها میتواند خیلی مفید باشد.من فکر میکنم ScrollResponder، UIManager و غیره.حتی یک لینک ساده به implementation کد مفید خواهد بود،زیرا مرور کدبیس RN برای یک توسعه دهنده JS بسیار آسان نیست.
Votes: 141
Tags: dx, documentation
Estimated time to fix: 2019
Point of contact: React Native team at Facebook + Core Contributors
مهندسین فیسبوک :ما برای بازنویسی مجدد داکیومنت React Native در سال جدید برنامه ریزی کرده ایم و امیدواریم به طور قابل توجهی وب سایت ما برای استفاده آسان از React Native بهبود یابد.
Built in SVG Images
من میخواهم قادر به استفاده از SVG بدون تبدیل به font و راه حل های دیگه مثل webviews باشم.زمان استفاده از یک کد بین web react apps و native من باید تصاویر را به ویژه آن هایی که پویا هستند را تبدیل کنم.
Votes: 115
Estimated time to fix: done
Point of contact: React Native Communty
مهندسین فیسبوک : community پکیج های بسیار خوبی نوشته اند که SVGs را به صورت native رندر می کند.ما میخواهیم این پکیج ها را باز نویسی کنیم و بهبود ببخشیم و هیچ برنامه ای برای اضافه کردن به هسته React Native نداریم.پیشنهاد میکنیم از یکی از این پکیج ها استفاده کنید یا پکیج خودتون رو بسازید و برای استفاده دیگران به اشتراک بزارید.
Debugging
اشکال زدایی در Chrome با JS یک راه حل هوشمندانه اما خشن است.برای مثال نیاز به راه اندازی مجدد دارد و این مشکلاتی را با ماژول های native ایجاد می کند(مثلا react-native-gl شامل اپلیکیشنی که می خواهید آن را debug کنید،نمی شود) و برای مسائل اشکال زدایی مناسب نیست زیرا JS در حال اجرا با یک ماشین متفاوت است.در حالت ایده آل ، راهی برای اتصال مستقیم JS در حال اجرا بر روی device وجود خواهد داشت در حالی که هنوز از ابزارهای عالی اشکال زدایی در Chrome استفاده میکنید.
Votes: 109
?:Estimated time to fix
Point of contact: React Native team at Facebook
مهندسین فیسبوک : در ios باید امکان استفاده از Safari Dev Tools تا VM را به طور مستقیم اشکال زدایی کنیم.JSI based debugger بر روی کروم در حال حاضر در فیسبوک کار می کند.
Not resilient to crashes
موارد خیلی زیادی اتفاق افتاده است که من یک موردی را اشتباه انجام داده ام و اپلیکیشن crash کرده است(حداقل در Android) بدون اطلاعات زیادی در مورد علت این اتفاق.زمانی که این مشکل رخ می دهد adb logcat می تواند خیلی مفید باشد.
برای مثال:
- استفاده از style = width:’100′ بدون گذاشتن %
- استفاده از (</this.props.number && <View) در JSX زمانی که number=0
- و احتمالا موارد خیلی زیادی که من نمیتونم به یاد بیارم.
من فکر میکنم React Native اگر در مقابل اینگونه مشکلات مقاومت بیشتری نشان بدهد و با نمایش پیغام error از crash اپلیکیشن جلوگیری کند.
Votes: 109
Tags: dx, debugging, crash
?:Estimated time to fix
(Point of contact: Christoph Nakazawa (@cpojer
مهندسین فیسبوک : ما به عنوان بخشی از مسئله Debugging در بالای این سند نگاهی خواهیم کرد
Documentation for library developers
در حال حاضر مستندات زیادی برای کمک به توسعه دهندگان کتابخانه در (introduction guides (iOS, Android وجود ندارد.
خوب است که مستنداتی کامل برای native API داشته باشید و دقیقا مشخص باشد که کدام کلاس ها و متد ها در دسترس و قابل استفاده هستند.این مستندات می تواند با استفاده از JavaDoc و AppleDoc. تهیه شود.
Votes: 106
Estimated time to fix: 2019
Point of contact: React Native team at Facebook
مهندسین فیسبوک : به عنوان بخشی از بازنویسی وب سایت و کار بر روی TurboModules به منظور بروزرسانی مستندات به توسعه native modules نگاهی خواهیم کرد.ما میخواهیم به community برای ساخت و نگهدای کتابخانه ها با کیفیت بالا کمک کنیم پس ما کار خودمان را در این زمینه انجام می دهیم تا مسیر برای توسعه دهنگان هموار باشد.
Warnings in Xcode
تعداد خیلی زیادی هشدار زمانی که react-native/ios را در Xcode باز میکنیم،به ما داده می شود.
Votes: 105
!Estimated time to fix: Done
(Point of contact: Héctor Ramos (@hramos
مهندسین فیسبوک : ما خلاص شدن از شر هشدار های موجود را شروع کرده ایم و آنها در master branch حل و فصل شده اند.در نسخه های بعدی React Native این هشدار ها از بین رفته اند.
Hot reloading
Hot reload با functional components به درستی کار نمی کند.خیلی عالی خواهد بود اگر هر تغییری بدون reload اپلیکیشن و نمایش splash screen نمایش داده شود. ابزارهایی مثل react-navigation persistance و storybook به بهتر شدن DX در restart کمک می کند اما داشتن یک functional hot reload بهترین گزینه خواهد بود.. آیا لازم نیست که یک پلاگین بابل برای تبدیل FC به کلاس در DEV ** ایجاد کنید؟
facebook/react-native#10991
https://facebook.github.io/react-native/docs/debugging
Votes: 99
Tags: docs-content, automatic-reloading, dx, hotreload
Estimated time to fix: ~1 month
(Point of contact: Dan Abramov (@gaearon
مهندسین فیسبوک : ما متوجه شدیم که مردم به صورت مداوم با این مشکل مواج هستند و امیدواریم در نهایت این مشکل را حل کنیم.
ObjC / Java vs Swift / Kotlin
من مطمئن هستم که نمیتوانم متوجه scale کار برای بازنویسی RN با این زبان ها باشم با این وجود من متوجه شدم که Swift و Kotlin بسیار دوستانه تر هستند با افرادی که با js کار میکنند.این میتواند منجر به مشارکت بیشتر و سفارشی سازی ماژول های native از طرف js دولوپر ها شود از آنجایی که منحنی یادگیری Swift / Kotlin شبیه ObjC / Java نیست.
از طرف دیگر انتخاب این ها به عنوان زبان اصلی با توجه به مستندات و repositories جدید باعث خواهد شد که به طور کلی ecosystem برای js دولوپر ها قابل درک تر باشد.
Votes: 97
Tags: dx
? : Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک : در حال حاضر ما از Objective-C و Java برای codebases در فیسبوک استفاده می کنیم و نمیتوانیم از Swift یا Kotlin در اپلیکیشن هایمان استفاده کنیم.از آنجایی که فیسبوک React Native از master اجرا می کند،ما در حال حاضر نمی توانیم RN را با Swift و Kotlin بازنویسی کنیم.با کار بر روی Fabric در واقع ما بیشتر کد ها را از Objective-C و Java به ++c منتقل می کنیم و اعضای community علاقه خود را برای ساخت اپلیکیشن هایی با قالب های جایگزین که از Swift و Kotlin به جای Objective-C و Java ابراز می کنند.هیچ جدول زمانی برای این کار وجود ندارد.
Consistent KeyboardAvoidingView
تقریبا غیر ممکن است که بدانید چگونه KeyboardAvoidingView را تنظیم و پیکربندی کنید.بخشی از آن مربوط به مستندات چگونگی استفاده و رفتار آن بر اساس شرایط (در scrollView و…) است.
من فکر میکنم یک راه حل می تواند مستند سازی در مورد آن یا سازگاری با یک استراتژی مثل react-native-keyboard-aware-scroll-view باشد.
https://github.com/APSL/react-native-keyboard-aware-scroll-view
Votes: 78
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک : ما متوجه شدیم که این کامپوننت از کیفیت بالایی برخوردار نیست و issue های زیادی دارد.ما از این ماژول به طور گسترده تری در فیسبوک استفاده می کنیم و از یک ماژول third-party جدید که تمامی موارد در سرتاسر پلتفرم را پوشش دهد یا تغییرات بدون non-breaking به React Native تقدیر می کنیم.pull request خودتان را برای ما بفرستید!.
PRs
اغلب ما معتقد هستیم که فرستادن یک PR از باز کردن issue بهتر است.با این حال بسیاری از PR ها فقط برچسب گذاری شده و برای همیشه به فراموشی سپرده شده است و اینکار کمک مردم را متوقف می کند.
Votes: 70
Estimated time to fix: continuous
(Point of contact: Christoph Nakazawa (@cpojer
مهندسین فیسبوک : “Support of React Native team” را در بالاتر ببینید.تعداد pull requests ها را به 70 عدد در مقایسه با 280 عدد در December از طریق merging و close کاهش داده ایم و به طور همزمان میانگین تعداد Pull Requests باز شده در روز از 3.5 به 7 افزایش یافته است.ما همچنین در حال برنامه ریزی برای جواب دادن سوالات باقیمانده تا 18–20 March هستیم.
Android Inconsistencies
Android هنوز یک کلاس citizen دوم است.بسیاری از issue ها مربوط به Android است که در ios به خوبی کار میکند و توسعه دهندگان رمان توسعه نسخه android به مشکل می خوردند.
برای مثال:
- استفاده از (</this.props.number && <View) در JSX زمانی که number=0 باعث crash شدن برنامه می شود.
- در android تعریف یک property با نام flex باعث crash شدن برنامه می شود.
من مطمئن هستم که موارد خیلی زیاد دیگه ای وجود دارد و باید تمرکز بیشتری بر روی android انجام گیرد تا بتوان ادعا کرد که react native واقعا croos-platform است.
Votes: 69
?:Estimated time to fix
Point of contact: React Native team at Facebook
مهندسین فیسبوک : درست است.ما باید این مشکل را حل کنیم.Pull Requests از سمت community به ما کمک خواهد کرد.
Network request monitoring
در یک network requests خیلی سخت است یدون ابزارهای زیر یک درخواست و response آن را track کرد.
React native Debugger
Reactotron
Charles
Votes: 61
Tags: dx, debugging
–:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک :این قطعا مهم است اما نیاز به کمک و کار community دارد.لطفا یک issue جدید برای مشخص شدن کارهایی که باد انجام شود،ایجاد کنید و سپس بر روی Pull Requests برای فعال شدن این قابلیت کار کنید.
Upgrade CameraRoll to use the iOS Photos Framework
CameraRoll فعلی بر پایه ALAssetsLibrary است که در نسخه 8 ios منسوخ شده است.این API نمی تواند به عکس هایی که در iCloud ذخیره شده است،دسترسی داشته باشد.این باعث می شود تا سردرگمی های زیادی برای توسعه دهندگان و مردم ایجاد شود.
facebook/react-native#21836
facebook/react-native#20462
Votes: 57
Tags: images, photos
!Estimated time to fix: Done
(Point of contact: Joshua Gross (@JoshuaGross
مهندسین فیسبوک : این مشکل در نسخه 0.59 React Native برطرف شده است.
Not keeping up with Android updates
من Android P دارم.(Border radius (ripple و سایر موارد به درستی کار نمی کنند.من متوجه نمی شوم که چگونه این مسئله در اولویت نیست.این قابل قبول نیست که شما یک گوشی جدید با سیستم عامل جدید دارد اما RN به درستی کار نمی کند .
برای مثال :
TouchableNativeFeedback’s ripples aren’t affected by borderRadius on Android 9
Votes: 57
**Estimated time to fix: ~**July 2019
Point of contact: David Vacca (@mdvacca) and React Native Community
مهندسین فیسبوک : ما رد حال ارتقا RN به Android X هستیم.
Native Navigation
من خیلی دوست دارم react-native-navigation به RN community منتقل، یا fork شود و از طریق تیم RN پشتیبانی و حمایت شود.
من احساس میکنم بعضی ها اهمیت ساخت native look را درک نمی کنند.من به upcoming JSI فکر میکنم،این می تواند یک بازیکن جدی در اکوسیستم ما باشد.
Votes: 56
–:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک : ما سیستم native navigation خودمان را در فیسبوک داریم که open source نیست.بنابراین بهترین گزینه انتقال آن به open source نیست.اگر شما میخواهید پروژه های موجود را به React Native community منتقل کنید، لطفا از maintainers بخواهید و با آن ها یک discussion را شروع کنید.
react-native link issues
اجرا دستور react-native link میتواند یک کتابخانه یکسان را چندین بار link کند یا formatting آن را از بین ببرد.
Votes: 56
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک :ما در حال حاضر بر روی پیشنهاد CocoaPods پیش فرض برای پروژه های ios کار میکنیم و با آن میخواهیم link ساده با مشکلات کمتر برای مردم ایجاد کنیم.
Cross Device/Platform Push Notification Support
در حال حاضر شما از چندین کتابخانه متفاوت در پلتفرم برای ارسال نوتیفیکیشن استفاده می کنید.من یک راه سازگار با مستندات برای ارسال نوتیفیکشن بر روی همه device ها دوست دارم.
Votes: 55
–:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک :این قطعا بخش مهمی از اپلیکیشن ها است و ما پیشنهاد میکنیم که community یک راه حل جامع که با React Native به راحتی integrated شود ، ارائه دهد.در حال حاضر ما به دنبال کاهش surface area هسته React Native هستیم که فعالیت و living جامعه بیشتر شود.
Support for more native components out of the box – Like camera, video, audio, fingerprint
کمبود خیلی از کامپوننت های native در هسته اصلی.همیشه ما باید از کتابخانه های ثالث برای دسترسی به ویژگی های native استفاده کنیم.خیلی بهتر خواهد بود که کامپوننت های native بیشتری در آینده در هسته وجود داشته باشد.
Votes: 50
Tags: SmallEcosystem
–:Estimated time to fix
–:Point of contact
مهندسین فیسبوک :در واقع ما در حال حرکت به سمت مخالف هستیم و در Lean Core به طور جدی در تلاش برای حذف component ها هستیم.ما متوجه شدیم که React Native برای کامپوننت های خارج از هسته مناسب تر است در حالی که این کامپوننت ها از حمایت بیشتری نسبت به کامپوننت های هسته React Native از طرف community برخوردار است.ما بر روی پیشنهاد CocoaPods پیش فرض برای پروژه های ios کار میکنیم تا link کتابخانه های جانبی ساده تر انجام گیرد.ما همچنین امیدواریم که مردم template هایی با ماژول های از پیش تعریف با قابلیت هایی که مردم به آن نیاز دارن، فراهم کنند .expo یا ignite برای شما مناسب خواهد بود
Automatic Scroll on addition of elements at index 0 of ScrollView / Flatlist
اضافه کردن پیام در هر دو طرف ScrollView/Flatlis نباید اسکرول اتوماتیک داشته باشد.باید یک prop با عنوان داشته باشد تا به توسعه دهندگان این اجازه را بدهد تا اسکرول خودکار را غیرفعال کنند.در حال حاضر برای ios در scrollView از maintainVisibleContentPosition پشتیبانی می شود.ما می توانیم برای اندروید یک راه حل مشابه به همراه مستندات داشته باشیم.
maintainVisibleContentPosition : زمانی که تنظیم می شود scroll view به موقعیتی scroll می شود که اولین فرزند در حال نمایش است یا در خارج minIndexForVisible اسکرول اتفاق نمی افتد.این برای فهرست هایی که در هر دو جهت بارگیری محتوا دارند،مثل صفحه چت که با ایجاد پیغام جدید اسکزول به آن موقعیت پانجلم شود، مناسب است.مقدار 0 عادی است اما مقدار 1 می تواند برای عدم نمایش spinner ها یا محتوایی که نباید position را حفظ کنند،استفاده شود.
Votes: 46
-:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک :به نظر می رسد که این درخواست یک ویژگی خاص است که بهترین روش مدیریت آن ارسال Pull Request است.اگر شما این ویژگی را دوست دارید،آن را بسازید.
Cocoapod support
Cocoapod به خوبی پشتیبانی نمی شود.زمانی که ارتقا اتفاق می افتد،دچار مشکل می شود.این مشکلات به طور منظم است که @orta یک پلاگین برای رفع مشکل خودکار issue های ریکت نیتیو طراحی کرده است:https://github.com/orta/cocoapods-fix-react-native.
Votes: 46
Tags: buildtools
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک :ما در حال حضر بر روی بهتر شدن پشتیبانی CocoaPods درون React Native به طور پیش فرض کار می کنیم و ما قبلا چندین pull requests در این زمینه داشتیم ایم.با ما در ارتباط باشید.
Outdated dependencies
یک مثال می تواند ws باشد که در حال حاضر 1.1.5 است اما باید حداقل 3.3.1 باشد بر اساس این لیست.
Votes: 45
Estimated time to fix: In progress
(Point of contact: Christoph Nakazawa (@cpojer
مهندسین فیسبوک :این dependency خاص در حال حاضر به عنوان بخشی از Lean Core ارتقا یافته است و ما در حال تلاش برای ارتقا dependencies های خودمان هستیم.
Unwelcoming first experience
برای مثال :
react-native init demo
cd demo
vim index.test.js
describe('Test', () => {
it('should be true' () => {
expect(true).toBe(true)
})
})
> npm test
Test suite failed to run
Couldn't find preset "module:metro-react-native-babel-preset" relative to directory "~/projects/demo"
این اولین باری نیست که ما یک public release داریم که بعضی چیزها به درستی کار نمی کند و خارج از box است.من متوجه شدم که این یک چالش بزرگ برای ساختن کتابخانه های متفاوت است و این ورژن با یکدیگر کار می کند و اما زمانی که می خواهید کارهای ساده انجام بدهید،ناامید کننده است.
معمولا،این فرآیند نیاز به گوگل در مورد راه حل های این مشکلات است.معمولا منجر به issue در گیت هاب React Native می شود.مرور کامنت ها به تلاش های متفاوت برای حل مشکل انجام می شود.ارزشمند است که مستنداتی با معیار شناخته شده و دانش جمع آوری شده در مورد چگونگی حل مشکل وجود داشته باشد.
Votes: 41
?:Estimated time to fix
Point of contact: React Native team at Facebook + React Native Community
مهندسین فیسبوک :این در واقع یک مشکل بزرگ است و ما در حال کارکردن برای بهترشدن یا تست سک استراتژی در releases های جدید هستیم تا مردم زمان run به این نوع مشکلات بر نخورند.
Developer Experience
من فکر میکنم ما باید بیشر به ابزارها توجه کنیم و سعی کنیم آن ها را بیشتر سرگرم کننده و دلپذیر برای کار کنیم.در حال حاضر آن ها بسیار خام هستند و اغلب خطاها را چاپ می کنند.ساختن آنها به صورت تعاملی و شفاف موجب می شود تا احساسات پایدارتری داشته باشید.
Votes: 40
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک :سوالات و مستندات این مقاله را ببینید.بعد از انجام این کارها تجربه توسعه بهبود خواهد یافت.
Styling Shadows on Android
Shadows در اندروید از طریق elevation مدیریت می شود، بنابراین در کدتان شما باید خط های بیشتری برای مدیریت shadows در اندروید اضافه کنید.من احساس می کنم استفاده از shadow CSS properties پیاده سازی shadows ها را راحتتر کند .
Votes: 40
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک :به نظر می رسد که این یک مسئله خاص است و بهتر است GitHub issue یا GitHub PR مدیریت شود.لطفا در اینجا در این مورد بحث کنید.
Official Camera Module
من از کتابخانه های متفاوت camera استفاده می کنم که هر یک issue هایی را دارند.من فکر می کنم این یک ماژول مورد نیاز برای هر فریمورک توسعه اپلیکیشن است.
Votes: 39
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک:ما در حال حاضر برنامه ای برای اضافه کردن ماژول camera به React Native نداریم.لطفا از react-native-camera به عنوان جایگزین استفاده کنید.
Support developers who want to help build react-native itself
همانطور که مشاهده میکنید صدها نفر از مردم هستند که تمایل دارند React Native را از آن چیزی که هست بهتر کنند.از آنجایی که بدیهی اس تیم فیسبوک ظرفیت محدودی دارد،مشارکت های community باید توسط تیم اصلی ارزیابی شود.من می دانم که آن ها ارزش دارد و شما کارهای زیادی انجام می دهید تا بتوانید react native را برای همه ی ما open کنید.خیلی از ما میتوانیم مشکلاتی که در این thread بیان شده است را حل کنیم.
همانطور که می بیند صدها issue و PR باز است.به عنوان کسی که از react native سال ها است استفاده می کنم،من دوست دارم کمک کنم.اما برای این کار ما نیاز به درک مستنداتی رسمی از معماری داخلی React Native هستیم.
Votes: 38
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک:لطفا issue های بالا را که در موردش بحث کردیم را ببیند که چگونه پاسخگویی ما به Pull Request در چند ماه گذشته بهتر شده است.ما مشتاقانه منتظر Pull Request های شما هستیم و خیلی سریعتر از قبل از آن استفاده می کنیم.
Accessibility and Internationalization
در لینک زیر بعضی issue ها به نحوی تند و تهاجمی قرار گرفته است:
http://www.takingnotes.co/blog/2018/11/09/react-native-accessibility/.
- No escape gesture support
- Voiceover does not refocus on navigation title on newly pushed screen
- React Navigation not having RTL support
- Reachability not working, etc
این به خصوص برای من غم انگیز است زیرا NavigatorIOS و TabBariOS که Accessibility و Internationalization عالی داشتند،منسوخ شده است.من می دانم که تیم React Native با کارهایی که انجام دادند Accessibility و Internationalization برایشان مهم است(https://facebook.github.io/react-native/docs/accessibility).با این وجود من بهبود را نمیبینم تا زمانی که Navigation Container در هسته pull شود(Navigation Controller, TabBar, etc.).
Votes: 37
Tags: right-to-left-rtl-layout-support, nuanced-platform-specific-behavior, Accessibility, Internationalization, native-navigation-api
-:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک: این موضوع بسیار مهم است که باید مورد توجه قرار بگیرد.اخیرا ما دو RFCs درباره accessibility ادغام(merge) کرده ایم:Actions و Roles اما نیاز به مشارکت شما برای بهبود و بهتر شدن accessibility در React Native دارد.
Better Triaging of Github Issues
به غیر از مسائل فنی ذکر شده در اینجا،اولین چیزی که من را در استفاده از React Native در پروژه ها دور کرد،وضعیت issue ها در React Native بود.issue های زیادی وجود داشت که من پیدا کرده بودم که توسط یک ربات یا فردی از تیم بسته شده بود.همه آنها برطرف نشده بودند و بعضی از آن ها غیر قابلتحمل بود.
باید یک راه بهتر برای استفاده از مشارکت community برای حل issue ها وجود داشته باشد.در اینجا بسیاری از نظران وجود دارد که بدون حل شدن یک issue بسته شده است.بنابراین تعجب آور نیست که آن ها در اینجا ذکر شده اند.
من معتقدم که اولین گام روشن در این زمینه باز شدن issue های قدیمی است که حل نشدند.پس از ما میتوانیم بر روی فرآیند حل یک issue کار کنیم.این در نهایت منجر به مشارکت کدهای community می شود.
Votes: 35
Estimated time to fix: continuous
Point of contact: Christoph Nakazawa (@cpojer) and Héctor Ramos (@hramos) and the React Native Community
مهندسین فیسبوک:ما یک جلسه triage session در 8-10 مارچ اجرا خواهیم کرد و امیدواریم issue tracke ما را به یک کشور قابل کنترل تر تبدیل کند.ما از community می خواهیم که با triaging و ارسال Pull Requests مسائل و مشکلاتی که با آن درگیر هستند،به ما کمک کنند.
No True Multi-Threading / Javascript Based Background Services
من دوست دارم یک تلاش دیگر در زمینه همگام سازی multi-threading با background services ببینم.این امر بسیار سودمند خواهد بود که قادر به نوشتن service ها با جاوا اسکریپت باشیم بر خلاف استفاده از bridge برای برقراری ارتباط بین یک ماژول native که یک native service را مدیریت می کند.
چندین تلاش در پکیج هایی مثل React Native Background Task وجود دارد اما به خوبی برای cross-platform کار نمی کند.من دوست دارم یک پیاده سازی درست از این در react native ببینم.
برای مثال:
توسعه دهندگان قصد دارند یک اپلیکیشن fitness بسازند.این اپلیکیشن نیاز دارد قادر به track تغییرات location، سرعت و غیره باشد.بهترین حالت این است که اپلیکیشن در background در حال اجرا باشد و فعالیت های کاربر را track کند بدون اینکه اپلیکیشن در background باز باشد.
Votes: 33
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک:این باید در یک issue مجزا دیگر بررسی شود چون به یک مشکا فنی مشخص مربوط می شود.
Precompiled RN in iOS
در حالی که در android به طور پیشفرض precompiled aar را load میکند،در ios معادل آن وجود ندارد از این رو زمان build بسیار طولانی است.پشتیبانی از precompiled RN در ios باعث افزایش زیاد سرعت build خواهد شد.
Votes: 31
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک:این باید در یک issue مجزا دیگر بررسی شود چون به یک مشکا فنی مشخص مربوط می شود.
Windows and Linux are second class citizens
تجربه توسعه در این سیستم عامل ها ترسناک است.به نظر می رسد فایل های watchers تغییراتی را به فایل ها اغلب وارد نمی کنند.بدتر ازهمه hot reloading اغلب فقط یکبار یا پنج بار کار میکند و بعد از آن به طور کامل از کار می افتد و من مجبور خواهم بود که مجدد bundler را restart کنم.
من قبلا با MacBook برنامه هایم را توسعه میدادم.با اینکه macOS را دوست ندارم ولی hot reloading بصورت کامل و 100 درصدی کار میکرد بدون اینکه مجدد bundler را restart کنم.
اگرچه من انتظار ندارم ios را بدون MacOS توسعه بدهم(چون اپل اجازه نمی دهد)ولی اگر React Native واقعا cross-platform است باید فیسبوک بر روی سیستم عامل های ویندوز و لینوکس کار کند.
Votes: 30
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک:این قطعا یک مشکل مهم است که باید حل شود اما نیاز به کمک community برای شناسایی مسائل بنیادی برای حل این مشکل دارد.اگر مسائلی که باعث به وجود آمدن این مشکل شده است را پیدا کرده اید،برای ما بفرستید.
Everything that’s not React
به عنوان یک توسعه دهنده جاوا اسکریپت من هرگز قبلا Xcode و Android Studio رو ندیده بودم.من احساس میکنم که بیشتر زمان توسعه صرف مشکلات Xcode/Android studios می شود.دستور react-native link با همه کتابخانه ها سازگار نیست و شما باید کارهای عجیب و غریب انجام دهید.من اخیرا برای ارتقا build.gradle مجبور شدم یک فایل موجود در پوشه node_module را تغییر بدهم.
Votes: 30
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک:ما در این زمینه به نحوه های مختلفی پاسخ می دهیم.همانطور که میتوانید از پاسخ های ما در دیدگاه های قبلی،این موشع را مشاهده کنید.سعی می کنیم با بهبود مستندات این کارها را آسان تر کنیم.
Inconsistent EcmaScript features between Android/iOS
اندروید چیزهایی مانند Proxy را ندارد بنابراین کتابخانه های مثل mobx (version 5) or oc-typescript و غیره کار نمی کند.اولین چیزی که من با پروژه جدید React Native انجام می دهم جایگزین کردن avaScriptCore با نسخه جدیدتر Android است.من فکر می کنم که همه چیز در مورد این مسئله است، محدودیت هر سیستم عامل و غیره می تواند یک گام خوب در پیش رو باشد.
Votes: 29
!Estimated time to fix: Done
-:Point of contact
مهندسین فیسبوک:در نسخه 0.59 React Native ما سرانجام یک نسخه جدید از JSC در اندروید با مشارکت community عرضه می کنیم.
Real time crash and performance monitoring tool
ابزاری رسمی برای مانیتورینگ real-time crash وجود ندارد.ما ابزار هایی مثل Newrelic mobile, react-native-sentry, bugsnag داریم اما همه موارد را حل نمی کنند.
Votes: 28
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک:این واقعا بسیار مهم است اما نباید بخشی از هسته React Native باشد.راه حل های مشخص شده همه ابزارهای بسیار خوبی هستند و امیدواریم بتوانیم آن ها را بهبود ببخشیم تا موارد استفاده بیشتری را پوشش دهند.
A lot of issues while using inverted lists
لیست های معکوس UX معمولی برای انواع مختلف برنامه ها با قابلیت چت هستند.اما اجرای فعلی لیست معکوس دارای مسائل زیادی و برخی از ویژگی های از دست رفته است.
بعضی از issue ها:
Votes: 27
Tags: flatlist, inverted, sectionlist, lists
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک:این در واقع یک مشکل است که بسیاری از مردم با آن روبرو هستند.این بهتر است در Pull Request ها به کار برده شود اما قطعا یک مشکل سخت فنی است که راه حل آن ساده نیست.
Orientation changes & landscape
این موضوع دیگری است که در RN به صورت کلی نادیده گرفته شده است.ما فقط یک راه حل نداریم.اکثر اپلیکیشن های RN فقط در حالت orientation to portrait قفل می کند.چیزی که در دنیای تلفن همراه توصیه نمی شود
Votes: 23
?:Estimated time to fix
Point of contact: React Native Community
مهندسین فیسبوک: این یک مشکل فنی بنیادی است که بهتر است با Pull Request به بحث گذاشته شود.
Official Camera && Video && Audio Modules
من آرزو دارم که یک پشتیبانی رسمی برای مدیریت multi media بصورت cross platform با قابلیت ذخیره سازی وجود داشته باشد.
Votes: 23
-:Estimated time to fix
-:Point of contact
مهندسین فیسبوک:لطفا از react-native-camera و react-native-video استفاده کنید.مابه دنبال اضافه کردن کامپوننت های به هسته ReactNative نیستیم.
Lack of Documentation Around Breaking Changes
زمانی که ارتقا بین نسخه ها اتفاق می افتد شامل ورژن minor/patch هیچ مستند سازی در مورد آن انجام نمی گیرد(برای مثال: this CLI argument change that broke the Storybook packager script) و یا بدون توصیف واقعی از اینکه چه چیزی تغییر پیدا کرده است و یا چگونه migrate شده است(به عنوان مثال سوئیچ به babel7).
تصمیم به ارتقا dependencies در نسخه های جزئی گام بسیار خوبی در مسیر درست است اما برخی اسناد در مورد نحوه تغییر زمانی که 0.58 به صورت جزئی تغییر میکند،می تواند خوب باشد.
Votes: 22
-:time to fix
-:Point of contact
مهندسین فیسبوک:اولین پاسخ در این مقاله را مشاهده کنید.ما در تلاش برای بهبود تغییرات در نسخه های آینده هستیم و امیدواریم اینگونه مشکلات حل شوند.
Performant list and input
فلت لیست و TextInput فاقد مدیریت حافظه هستند و باید سریعتر باشند.این ویدئو شگفت انگیز در Chain React 2018 رو ببینید:https://youtu.be/83ffAY-CmL4
مطلبی دیگر از این انتشارات
الگوهای ری اکت - ۳
مطلبی دیگر از این انتشارات
بیاین بهتر React Native بنویسیم (قسمت اول)
مطلبی دیگر از این انتشارات
آموزش react navigation5