ما در این آموزش قصد داریم به طور کامل و جامع به آموزش RxJS بپردازیم. RxJS یکی از به‌روزترین و داغ‌ترین کتابخانه‌های توسعه وب در عصر امروز است. این کتابخانه در حقیقت reactive programming را به دنیای وب میاورد. سؤالی که اینجا مطرح می‌شود این است که اساساً این reactive programming به چه معناست؟ reactive programming یا برنامه‌نویسی واکنشی به این معنا است که ما در هر مرحله از کارکرد برنامه به واکنش‌هایی که کاربر نسبت به برنامه ما نشان می‌دهد، واکنش نشان می‌دهیم و درحقیقت کدهایی می‌نویسیم که بتوانیم تغییرات را به بهترین نحو مدیریت کنیم.

آموزش RxJS Basic
آموزش RxJS Basic

پیش‌نیازهای دوره

ازآنجایی‌که RxJS یک کتابخانه جاوا اسکریپت است و ما نیز در این دوره به شکل کامل و جامع به آموزش RxJS می‌پردازیم، لازم است که با مبانی جاوا اسکریپت و نحوه کار آن آشنایی داشته باشید تا بتوانید بهترین بهره‌وری را از این دوره داشته باشید.

چرا باید در دوره جامع RxJS شرکت کرد؟

شاید شما نیز دیده باشید که دوره‌هایی برای آموزش کتابخانه RxJS وجود دارد، اما دلیل انتخاب دوره آموزش RxJS توسط شما چیست و چرا باید آن را انتخاب کنید؟ اولین دلیل انتخاب این دوره این است که دوره جامع RxJS یک دوره جامع است. شاید کلمه جامع شما را مجاب به اینکه این دوره واقعاً دوره خاص و کاملی است نکند اما باید گفت که این دوره در بین تمام دوره‌های موجود در اینترنت و همچنین کلاس‌های حضوری جزو جامع‌ترین و کامل‌ترین دوره‌ها بوده و شما بعد از اتمام این دوره به طور کامل روی مباحث گفته شده مسلط خواهید شد. این جامع بودن دوره مزیت دیگری دارد و آن نیز راحت شدن شما از کلاس‌های غیر پیوسته است. این دوره به دلیل جامع بودن، به شما کمک می‌کند تا یادگیری به طور کامل انجام شود و شما به طور کامل و جامع و بدون گسستگی این دوره را بگذرانید و نیاز به دوره دیگری برای آموزش کتابخانه RxJS نداشته باشید.

برای هرچه روان تر شدن آموزش دوره به دو بخش اصلی تقسیم میشود بخش Basics و Masterclass

  • در بخش Basics با لایبرری RxJS آشنا میشویم نحوه کار آنرا یاد خواهیم گرفت و با مفاهیم نهفته در آن آشنا میشویم سپس به سراغ یادگیری Operator های RxJS خواهیم رفت و با دسته بندی این Operator ها روشی روان برای یادگیری و به خاطر سپردن آنها را ارایه خواهیم داد تا با استفاده از Marble Diagram بتوانیم بخش بزرگ و اصلی Operator ها را یاد بگیریم.
  • پس از این به سراغ بخش پیشرفته دوره خواهیم رفت که همان بخش Masterclass دوره خواهد بود و مفاهیم پیچیده تر را بررسی خواهیم کرد از جمله Subject ها ، Scheduler ها ، تست نویسی و موارد دیگر که آموزش های بسیار کمی در مورد آنها وجود دارد و هموراه باعث سردرگمی برنامه نویسان بوده اند .
  • و به این ترتیب شما در پایان دوره به طور کامل بر این لایببری قدرتمند وبسیار بزرگ مسلط خواهید شد و میتوانید در پروژه های خود با بهرمندی از آن کیفیت کد نویسی خود را ارتقا دهید و همچنین به عنوان بخشی از رزومه خود برای ارتقای شغلی خود از آن بهره ببرید

مزایای یادگیری RxJS

این کتابخانه امروزه جزو کتابخانه‌های بسیار پرطرف‌دار می‌باشد. به‌گونه‌ای که به طور هفتگی حدود 10.6 میلیون دانلود برای آن صورت می‌گیرد. این محبوبیت اتفاقی نیست و کتابخانه RxJS مزایای بسیاری را برای برنامه‌نویسان به همراه دارد.

  • RxJS فقط یک بسته الحاقی با نام tslib دارد و این اتفاق سبب می‌شود که درصورتی‌که بخواهیم، از خود این کتابخانه به‌عنوان بسته الحاقی استفاده کنیم مشکل زیادی نداشته باشیم.
  • این پکیج بسیار خوب نگهداری می‌شود و به طور مستمر آپدیت‌هایی را دریافت می‌کند.
  • این پکیج به طور جالبی برای استفاده در نرم‌افزارهای بلاک‌چین قابل‌اجرا است.

این‌ها فقط بخشی از قابلیت‌های این پکیج بودند که هرکدام می‌تواند یک دلیل بسیار خوب برای یادگیری این کتابخانه باشند.

این دوره مناسب چه کسانی است؟

دوره آموزش RxJS مناسب همه کسانی است که به برنامه‌نویسی واکنشی و مباحث آن علاقه داشته و یا به دنبال یافتن یک راه برای پیداکردن کار به‌عنوان برنامه‌نویس با استفاده از یک زبان برنامه‌نویسی آینده ‌نگرانه و در مسیر پیشرفت هستند.

برنامه نویسان

  • Angular
  • React, React Native
  • Vue
  • Asp .Net Mvc

و تمام فریم ورک ها و لایبرری های مبتنی بر جاوا اسکریپت امکان استفاده و بهرمندی از لایبرری قدرتمند RxJS را دارا میباشند در واقع هر برنامه نویسی که در ضمینه وب فعالیت دارد باید با لایببریRxJS  آشنا باشد.

لذا تمامی برنامه نویسانی که در این حوضه ها کار میکنند با یادگیری کامل و جامع RxJS میتوانند پیشرفت چشمگیری در بهبود برنامه نویسی و ارتقای شغلی خود ایجاد کنند.

بازار کار RxJS

امروزه RxJS در یکی از بالاترین سطوح استفاده خود در دنیا است و همین امر سبب شده است که بسیاری از شرکت‌های بزرگ و کوچک به دنبال متخصص‌های توانمند در حل مشکلات با استفاده از این کتابخانه هستند. این کتابخانه امروزه به میزان زیادی استفاده می‌شود. پس با حرفه‌ای شدن در استفاده از آن مطمئناً به مشکل کار، بر نخواهید خورد. البته همه این‌ها به شرطی است که شما علاوه بر شرکت در دوره جامع آموزش RxJS به تمرین و تلاش نیز بپردازید و بتوانید مهارت‌های خود را از این روش‌ها گسترش دهید. پس از آن مطمئن خواهید بود که به‌سادگی در شغل و شرکتی که موردعلاقه و دلخواه شما است استخدام خواهید شد.

سرفصل‌های آموزش RxJS

1- شروع کار با RxJS

  • مقدمه ای از RxJS
  • پیکربندی پروژه برای استفاده از RxJS
  • ایجاد اولین Observable
  • بررسی و درک کامل Observers, Partial Observers, Subscribers
  • ارایه مقادیر به صورت Async توسط Observable
  • مدیریت Subscriptions  Observable ها توسط Unsubscribe
  • جمع بندی مقدمه و آنچه خواهیم گفت

2- Creation Operators

  • مقدمه ای بر Creation Operators
  • ایجاد Observable از ایونت های dom با استفاده از fromevent
  • ایجاد Observable از مقادیر Static با استفاده از of
  • تبدیل Arrays ،Promises ،Iterator به Observable با استفاده ازfrom
  • انجام Emit برپایه مدت زمان با استفاده از Interval و Timer
  • جمع بندی Creation Operators و آنچه خواهیم گفت

3- شروع کار با Operator ها

  • معرفی و مقدمه ای از Operator ها
  • معرفی ماربل دیاگرام ها
  • تغییر و دگرگونی مقادیر استریم با map, pluck, mapTo
  • چشم پوشی از مقادیر با filter
  • تمرین : ایجاد یک Progress Bar با fromEvent, map
  • انباشت دیتاها در گذر زمان با reduce
  • مدیریت تغییر وضعیت ها  با scan
  • تمرین : ایجاد یک شمارشگر معکوس با fromEvent, map, scan

4- Filtering Operators

  • معرفی و مقدمه ای از Filtering Operator ها
  • استفاده از take برای emit مجموعه ای از مقادیر در یک استریم
  • کامل شدن یا Complete شدن یک استریم براساس نقض یک شرط با takeWhile
  • کامل شدن یا Complete شدن یک استریم براساس یک استریم دیگر با takeUntil
  • مقایسه عملکرد take , first , takewhile , filter
  • صرف نظر کردن و ignore کردن مقادیر emit شده با distinctUntilChanged

5- Rate Limiting Operators

  • معرفی و مقدمه ای از Rate Limiting-Operator ها
  • دریافت آخرین مقدار بعد از یک pause توسط debounceTime
  • نادیده گرفتن مقادیر  در یک پنجره زمانی توسط throttleTime
  • نمونه گیری از یک استریم در یک پنجره زمانی با sampleTime
  • رسیدگی و بازرسی یک استریم در بازه زمانی با auditTime

6- Transformation Operators

  • معرفی Transformation Operator ها
  • معرفی و چرایی Flattening Operator ها
  • فلت کردن observable های داخلی هنگام استفاده از mergeMap
  • سوییچ روی یک Observable جدید در هنگام emission ها با switchMap
  • سابسکرایب روی Observable ها با رعایت ترتیب توسط concatMap
  • نادیده گرفتن emission ها زمانی که یک Inner-Observable فعال است به کمک exhaustMap
  • استفاده از catchError برای گرفتن خطاهای Observable ها
  • تمرین : ایجاد یک دنباله عکس برپایه http

7- Combination Operators

  • معرفی Combination Operator ها
  • افزودن مقادیر به ابتدا و انتهای استریم ها
  • صف بندی اجرای Observable ها توسط concat
  • ادغام چندین Observable فعال توسط merge
  • دریافت آخرین مقدار از چندین Observable در هنگام emission ها توسط
  • دریافت آخرین مقدار از چندین Observable در هنگام completion توسط forkJoin
  • تمرین : ایجاد یک محاسبه گر وام

8- Subject ها و Operator های Multicast

  • معرفی Subject ها
  • به اشتراک گذاری دیتا در بین Subscriber ها توسط Subject ها
  • تمرین : مدیریت وضعیت Loading اپلیکیشن توسط Subject ها
  • خودکار کردن اشتراک گذاری Observable ها توسط multicast و share
  • تحویل یک مقدار اولیه به Subscriber ها توسط behaviorSubject
  • تمرین : ایجاد یک Store بیسیک  برای اپلیکیشن توسط Subject ها
  • تکرار تاریخچه مقادیر برای Subscriber های جدید توسط replaySubject
  • خودکار کردن multicasting و replaying توسط shareReplay
  • ارایه آخرین مقدار در هنگام complete شدن یک Observable توسط asyncSubject

9- معرفی Scheduler ها

  • معرفی و مقدمه ای بر Scheduler ها
  • اجرای تسک ها به صورت Asynchronous توسط asyncScheduler
  • اجرای تسک ها به صورت Asynchronous توسط asapScheduler
  • زمانبندی تسک ها قبل از repaint مرورگر توسط animationFrameScheduler
  • اجرای تسک ها در یک صف توسط queueScheduler

10- تست Observable ها با پترن Marble Testing

  • معرفی و مقدمه ای از Marble Testing
  • استفاده از TestScheduler برای تبدیل AsciiDiagrams به Observable
  • کانفیگ مقادیر Emit شده در MarbleDiagram
  • تایید زمان Subscription توسط MarbleTesting
  • تست HotObservables ها توسط Marble ها
  • تست عملیات های Synchronous توسط Marble ها
  • تست عملیات های Asynchronous توسط Marble ها
  • تست منطق های پیچیده  توسط سینتکس TimeProgression
  • تست هندل شدن ارور ها توسط Marble ها
  • اجبار انجام شدن Completion برای Observable های با زمان اجرای بالا توسط Marble ها

11- تست Observable ها با پترن Subscribe and Assert

  • معرفی و مقدمه ای از  Subscribe , Assert Testing
  • تست مقادیر Emit شده در زمانی که اتفاق میافتند
  • تست مقادیر Emit شده در هنگام Completion توسط toArray
  • تست عملیات های Asynchronous توسط DoneCallback یا TestScheduler
  • تست ارور نوتیفیکیشن توسط Subscribe , Assert

12- نکاتی در RxJS

  • معرفی و مقدمه نکات RxJS
  • استفاده از finalize برای ایجاد تاثیرات جانبی در هنگام Completion
  • استخراج بخش های مشترک کد در یک function جدا
  • استفاده از Combination Op ها برای دسترس به وضعیت یکObservable ثانویه
  • خودکار کردن پروسه Unsubscribe توسط takeUntil
  • استفاده از filter و partition برای منطق های شرطی