أساسيات Play Framework
ابدأ باستخدام Play، وافهم بنيته، وأعدّ أول تطبيق ويب لكم
أساسيات Play Framework درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 3 دروس في المجموع.
مقدمة إلى Play Framework
مرحبًا بكم في Play Framework! إن Play هو إطار عمل قوي ومفتوح المصدر لتطبيقات الويب بلغةَي Scala وJava.
صُمم لبناء تطبيقات ويب وواجهات API حديثة وقابلة للتوسع بدرجة كبيرة، مع التركيز على إنتاجية المطور والأداء.
النواة التفاعلية وغير المتزامنة
يعتمد Play على أساس تفاعلي، ويستفيد من Akka في الطبقة الداخلية. وهذا يعني أنه يعالج الطلبات بشكل غير متزامن، ولا يحجب التنفيذ افتراضيًا.
- تفاعلي: يعالج بكفاءة عددًا كبيرًا من الطلبات المتزامنة.
- غير متزامن: لا تحجب العمليات خيط تنفيذ الخادم.
- عديم الحالة: صُمم للتوسع الأفقي، مما يجعله مناسبًا جدًا للخدمات المصغرة.
إنشاء مشروع Play
لبدء مشروع Play جديد، ستستخدمون SBT (Scala Build Tool) مع قالب Play seed. تأكدوا من تثبيت SBT.
شغّلوا هذا الأمر في الطرفية:
sbt new playframework/play-scala-seed.g8ينشئ هذا الأمر دليل مشروع جديدًا يتضمن بنية أساسية لتطبيق Play بلغة Scala.
تخطيط مشروع Play
يتميز مشروع Play ببنية أدلة محددة جيدًا:
app/: يحتوي على التعليمات البرمجية المصدرية بلغة Scala (وحدات التحكم والنماذج والعروض).conf/: يحتوي على ملفات الإعداد، مثلroutes(تعيين عناوين URL) وapplication.conf.public/: يحتوي على الأصول الثابتة (JavaScript وCSS والصور).project/: يحتوي على ملفات تعريف بناء SBT (مثلbuild.sbt).test/: يحتوي على اختبارات التطبيق.
تعيين عناوين URL باستخدام `routes`
يُعد ملف conf/routes أساسيًا، إذ يحدد كيفية تعيين طلبات HTTP (الطريقة + المسار) إلى إجراءات محددة في وحدات التحكم داخل التطبيق.
يحدد كل سطر طريقة HTTP ومسار URL وطريقة وحدة التحكم المطلوب استدعاؤها.
# conf/routes
GET / controllers.HomeController.index()
GET /hello/:name controllers.HelloController.sayHello(name: String)إنشاء وحدات تحكم Play
وحدات التحكم هي كائنات (أو أصناف) في Scala تتعامل مع طلبات HTTP الواردة. وهي تحتوي على دوال الإجراءات التي تعالج الطلبات وتعيد النتائج.
تمتد وحدات التحكم لديكم عادةً إلى BaseController، ويتم تزويدها بـ ControllerComponents.
package controllers
import play.api.mvc._
import javax.inject._
@Singleton
class HomeController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {
// Action functions go here
}تعريف منطق الإجراء
دالة الإجراء هي المنطق الأساسي داخل وحدة التحكم. وهي تأخذ Request ضمنيًا وتعيد Result (مثل Ok وNotFound وRedirect).
تغلف كتلة Action { ... } التعليمات البرمجية الخاصة بكم، مما يجعلها إجراء Play صالحًا.
// Inside HomeController
def sayHello(name: String) = Action { implicit request =>
Ok(s"Hello, $name! Welcome to Play.")
}HTML ديناميكي باستخدام Twirl
يستخدم Play قوالب Twirl (ملفات .scala.html) لإنشاء استجابات HTML ديناميكية. وتتيح لكم تضمين تعليمات Scala البرمجية مباشرةً في HTML.
تتميز القوالب بسلامة الأنواع وتُترجم، مما يساعد على اكتشاف الأخطاء مبكرًا.
@* app/views/welcome.scala.html *@
@(userName: String)
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome, @userName!</h1>
<p>This page was generated by a Play template.</p>
</body>
</html>بدء تشغيل تطبيق Play
بعد إعداد مشروعكم وتعريف بعض المسارات ووحدات التحكم، يمكنكم تشغيل التطبيق باستخدام SBT.
انتقلوا إلى الدليل الجذر لمشروعكم في الطرفية ونفّذوا ما يلي:
sbt runيبدأ التطبيق عادةً على http://localhost:9000.
اختبار مكونات Play
لنتحقق من فهمكم لأساسيات Play Framework.
مراجعة: أساسيات Play
لقد خطوتم خطواتكم الأولى مع Play Framework! وقد تناولنا ما يلي:
- ماهية Play وطبيعته التفاعلية.
- كيفية إعداد مشروع جديد باستخدام SBT.
- أدلة المشروع الأساسية.
- دور
conf/routesفي تعيين عناوين URL. - كيفية إنشاء وحدات التحكم ودوال الإجراءات.
- استخدام قوالب Twirl لإنشاء عروض ديناميكية.
- تشغيل تطبيق Play.
ستتعلمون بعد ذلك كيفية بناء واجهات RESTful API باستخدام Play!
الأسئلة الشائعة
هل درس «أساسيات Play Framework» مجاني؟
نعم — نص درس «أساسيات Play Framework» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 3 دروس في المجموع.
ماذا ستتعلم في «أساسيات Play Framework»؟
ابدأ باستخدام Play، وافهم بنيته، وأعدّ أول تطبيق ويب لكم تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟
لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «أساسيات Play Framework»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟
نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Play Framework
- بناء RESTful APIs باستخدام Play
- تكامل قواعد البيانات باستخدام Slick/Doobie