البرمجة التفاعلية (Reactive Programming) مع أمثلة في JavaScript وFlutter

 مع تطور التطبيقات الحديثة، بقى المستخدم متوقع إن التطبيق يكون سريع، تفاعلي، وبيحدّث نفسه تلقائيًا من غير Reload ولا تدخل يدوي.

هنا ظهر مفهوم مهم جدًا اسمه Reactive Programming أو البرمجة التفاعلية.

الأسلوب ده بقى أساسي في:

  • Web Applications

  • Mobile Apps

  • Real-time Systems

في المقال ده هتفهم:

  • يعني إيه Reactive Programming

  • فكرتها الأساسية

  • الفرق بينها وبين البرمجة التقليدية

  • أمثلة عملية بـ JavaScript و Flutter

  • إمتى تستخدمها وإمتى لأ


Reactive Programming


أهلاً بك عزيزي الزائر في موقع نيوز2! يسعدنا أنك هنا لتتعرف على عالم البرمجة وأهميتها. في موقعنا، هتلاقي شروحات مبسطة، مقالات مفيدة، وأمثلة عملية تساعدك تبدأ رحلتك في التعلم بسهولة وبطريقة ممتعة.


يعني إيه Reactive Programming؟

Reactive Programming هو أسلوب برمجة بيعتمد على التفاعل مع التغييرات (Changes) بشكل تلقائي.

بمعنى:

لما الداتا تتغير → الواجهة تتحدث تلقائي

من غير ما تكتب كود صريح يقول:

لو الداتا اتغيرت اعمل Update

مثال بسيط من الواقع

  • إشعار وصلك → الواجهة تظهره فورًا

  • لايك اتضاف → العداد يزيد تلقائي

  • رسالة جديدة → الشات يتحدّث لوحده

كل ده Reactive.


الفرق بين البرمجة التقليدية والـ Reactive

البرمجة التقليدية (Imperative)

انت بتقول للبرنامج:

  1. اعمل كذا

  2. بعدين كذا

  3. لو حصل كذا اعمل كذا

البرمجة التفاعلية

انت بتقول:

الواجهة دي معتمدة على الداتا دي
وأي تغيير يحصل → يتنفّذ تلقائي


المفاهيم الأساسية في Reactive Programming

1️⃣ Streams (تدفقات البيانات)

الداتا بتيجي على شكل Stream:

  • Clicks

  • API Responses

  • User Input

  • WebSocket Messages


2️⃣ Observables

عنصر بيتراقب، وأي تغيير فيه بيبعت تحديث.


3️⃣ Subscribers

أجزاء من الكود بتسمع للتغييرات وبتتفاعل معاها.


4️⃣ Asynchronous

البرمجة التفاعلية غالبًا غير متزامنة.


Reactive Programming في JavaScript

أشهر الأدوات

  • RxJS

  • Promises

  • Observables

  • Frameworks زي Angular وReact


مثال بسيط بـ RxJS

import { fromEvent } from "rxjs"; const button = document.getElementById("btn"); const clicks$ = fromEvent(button, "click"); clicks$.subscribe(() => { console.log("Button clicked!"); });

📌 هنا:

  • الحدث = Stream

  • fromEvent عمل Observable

  • subscribe بيتفاعل مع أي Click


مثال تحديث UI تلقائي

const input$ = fromEvent(input, "input"); input$.subscribe(event => { output.textContent = event.target.value; });

أي كتابة → الواجهة تتحدث فورًا.


Reactive Programming في Flutter

Flutter من أكتر الـ Frameworks اللي بتدعم Reactive Programming.

الفكرة في Flutter

  • الـ UI مبني على State

  • لما الـ State يتغير → الواجهة تتعاد بنائها


مثال بسيط باستخدام setState

int counter = 0; ElevatedButton( onPressed: () { setState(() { counter++; }); }, child: Text("زيادة"), );

أي تغيير في counter → الواجهة تتحدث تلقائيًا.


مثال باستخدام StreamBuilder

StreamBuilder<int>( stream: counterStream, builder: (context, snapshot) { return Text("${snapshot.data}"); }, );

📌 هنا:

  • Stream بيبعت داتا

  • UI بتسمع للتغييرات


أدوات Reactive في Flutter

  • StreamBuilder

  • ValueNotifier

  • Provider

  • Riverpod

  • BLoC

  • RxDart


مميزات البرمجة التفاعلية

✅ تجربة مستخدم ممتازة
✅ تحديث فوري للواجهة
✅ كود أوضح في التعامل مع الأحداث
✅ مناسب للـ Real-time Apps


عيوب البرمجة التفاعلية

❌ صعبة شوية في الفهم
❌ Debugging أصعب
❌ إدارة الـ State محتاجة تنظيم


إمتى تستخدم Reactive Programming؟

استخدمها لو:

  • التطبيق فيه تفاعل عالي

  • Real-time Updates

  • Live Data

  • Chat / Notifications

  • Dashboards


إمتى متستخدمهاش؟

❌ تطبيق بسيط جدًا
❌ Logic ثابت ومفيش تغييرات كتير
❌ Script صغير


الفرق بينها وبين OOP و Functional

  • Reactive مش بديل

  • Reactive أسلوب مكمل

  • بتشتغل مع OOP و Functional مع بعض


نصيحة للمبتدئ

✔️ افهم Async & Events الأول
✔️ اتعلم JavaScript Promises
✔️ جرّب RxJS
✔️ بعد كده Flutter State Management


الخلاصة

  • Reactive Programming بتخلي التطبيق حي

  • الداتا هي اللي بتحرك الواجهة

  • JavaScript و Flutter من أقوى البيئات الداعمة ليها

  • استخدمها لما يكون التفاعل عنصر أساسي






تعليقات