freeCodeCamp/guide/arabic/go/use-templates-with-your-web.../index.md

3.5 KiB

title localeTitle
Using templates with your web server باستخدام القوالب مع خادم الويب الخاص بك

عندما يكون لديك خادم ويب ، قد ترغب في إدراج البيانات في ردودك. دعونا نرى بعض التعليمات البرمجية:

`package main

import ( "net/http" "html/template" )

type PAGE struct { NAME string }

var page PAGE

func main() { page.NAME = "Mark" http.HandleFunc("/", servePage) http.ListenAndServe(":8080", nil) }

func servePage(writer http.ResponseWriter, reqest *http.Request) { template := template.New("sayHello") template, _ = template.Parse("Hello {{.NAME}}!") template.Execute(writer, page) } `

الآن أطلق هذا البرنامج وتصفح متصفحك من أجل:

http://localhost:8080/

سيكون الرد:

Hello Mark!

ولكن كيف يعمل هذا وما يفعله الرمز؟ حسنا ، أولا وقبل كل شيء نستورد حزمة net/http حتى نتمكن من تشغيل خادم الويب. ثم نستورد حزمة html/template . يتيح هذا ميزة تسمى templating؛ وهذا هو المكان الذي تدور حوله هذه المقالة.

نقوم أيضًا بإنشاء نوع يسمى PAGE ، والذي يحتوي على حقل واحد يسمى NAME string . كما نقوم أيضًا بإنشاء متغير عالمي يسمى page من النوع PAGE ، البنية التي أنشأناها للتو. في الوظيفة main نمنح حقل NAME page قيمة Mark - اسمي ، ولكن لا تتردد في استخدام اسمك!

وظيفة servePage صعبة بعض الشيء في البداية. لنأخذها على حدة:

`func servePage(writer http.ResponseWriter, reqest *http.Request) {

// 1. Creating a template template := template.New("sayHello")

// 2. Filling the template template, _ = template.Parse("Hello {{.NAME}}!")

// 3. Executing the template template.Execute(writer, page) } `

ماذا نفعل هنا؟ دعونا نرى خطوة بخطوة:

  1. نحن نخلق قالب . تحتاج إلى إدخال اسم ، ولكن لا يهم ما الاسم الذي تختاره حقًا. هنا اخترت sayHello .
  2. ثم نقوم بملء القالب ببعض النص. يرجى الإحاطة علما بـ {{.NAME}} .
  3. وأخيرًا ، نقوم بتنفيذ القالب. هذا يعني أنه تم ملء القالب وإرساله إلى العميل.

لكن كيف نذهب من {{.NAME}} إلى Mark ؟ حسنًا ، تذكر أننا استخدمنا متغير page كمعلمة لأسلوب Execute ؟ تبحث هذه الطريقة في البيانات الموجودة في القالب وترى {{.NAME}} . يشير .NAME إلى أنه يجب أن يبحث عن حقل يسمى NAME داخل المتغير الذي تم تحديده كمعلمة عند استدعاء Execute . في هذه الحالة ، يجد هذا الحقل ويحيط علما بأن القيمة هي Mark . يخبر {{ و }} Execute أنه يجب استبدال {{.NAME}} بالقيمة التي وجدها. وبالتالي فإن النتيجة النهائية سوف تصبح Hello Mark! .

يمكن أن يكون لديك حقول متعددة {{.XXX}} . هذه طريقة سهلة للغاية يمكنك إدراج البيانات في الردود ، وتعرف الآن كيفية عمل قالب في Go!