عند إنشاء موقع ويب ، ستنشئ عادةً بعض المحتوى النهائي بشكل ديناميكي. ستحتاج بعد ذلك إلى إدخال تلك البيانات في صفحات الويب النهائية لعرضها في المتصفح.

يمكنك اتباع إحدى الطريقتين التاليتين: تضمين بنية صفحتك في برنامجك ، أو دمج بياناتك النهائية مع ملفات قوالب منفصلة.

يوفر القوالب فصل الاهتمامات من أجل قاعدة بيانات أكثر قابلية للصيانة. كما أنه يسهل تقسيم مهام الواجهة الأمامية والمهام الخلفية ، وتخصيصها لأعضاء الفريق المختلفين. Go لديه دعم قوالب ممتاز في مكتبته القياسية.

الشروع في العمل مع القوالب في Go

يحتوي Go على حزمتين للنماذج في المكتبة القياسية: نص / نموذج و html / النموذج. تحتوي حزمة النص / القالب على وظائف لتحليل الملفات النصية ، بينما يتعامل html / template مع HTML. باستخدام html / النموذج ، يتم تأمينك من هجمات البرمجة النصية عبر المواقع (XSS) لأن Go يهرب من إدخال البيانات أثناء العرض. هذه ميزة أخرى للقالب على النهج اليدوي.

نظرًا لأن حزمة النموذج هي جزء من المكتبة القياسية ، فلن تحتاج إلى تثبيت أي تبعيات ؛ فقط قم باستيراده:

يستورد "html / نموذج"

ابدأ ب إنشاء ملف HTML لاستخدامه كنموذج لتطبيقك. يمكنك استخدام المعيار

instagram viewer
.لغة البرمجة التمديد أو أحدهما .gohtml أو .tmpl، كلاهما شائع أيضًا. مهما كانت الامتداد الذي تستخدمه ، فإن الوظائف داخل التطبيق الخاص بك ستكون هي نفسها. قد تطبق بعض برامج تحرير النصوص تمييزًا مختلفًا للبنية بناءً على امتدادات النماذج الخاصة بك. إليك الهيكل الأساسي:

<! DOCTYPE html>
<أتش تي أم أل لانج ="ar">
<رأس>
<meta charset ="UTF-8">
<لقب>وثيقة</title>
</head>
<هيئة>

</body>
</html>

احفظ هذا الملف في دليل برنامج Go. يمكنك الآن البدء في العمل معها ، كقالب ، داخل برنامجك.

قم بإنشاء مثيل عالمي لملف قالب طريقة حزمة القالب. ستتمكن من الوصول إلى مثيل النموذج هذا من أجزاء مختلفة من برنامجك.

فار قالب * tmplt. قالب

سيتعين عليك إنشاء خادم بسيط لعرض النماذج وعرضها. إليك كيفية بدء تشغيل خادم بسيط في Go باستخدام ملف صافي / http حزمة:

funcrunServer() {
http. HandleFunc ("/ home"، handlePage)
يخطئ: = http. ListenAndServe ("localhost:8080", لا شيء)

إذا يخطئ! لا شيء {
سجل. Fatalln ("يوجد خطأ بالخادم:" ، يخطئ)
}
}

ستتصل بـ runServer وظيفة من وظيفتك الرئيسية لبدء الخادم. يحتوي الخادم على مسار واحد فقط ، وهو /home الطريق الذي سيعرض صفحتك. ال مقبض الصفحة المعلمة هي اسم دالة المعالج التي ستعرض صفحتك. ال استمع وخدم تبدأ الطريقة في الاستماع إلى الخادم على المنفذ 8080 على المضيف المحلي ، أي جهاز الكمبيوتر الخاص بك.

تمرير المتغيرات إلى القوالب

قم بإنشاء بنية عالمية باسم أخبار:

يكتب أخبار هيكل {
العنوان سلسلة
الجسم سلسلة
}

ستستخدم هذه البنية لتخزين البيانات وتمريرها إلى نموذجك لعرضها في صفحتك النهائية. في النموذج الخاص بك ، يمكنك بعد ذلك استخدام بناء الجملة هذا لإدخال البيانات:

{{ اسم }}

أين اسم هو اسم المتغير الذي قمت بتمريره إلى القالب الخاص بك. عند عرض القالب ، فإنه سيستبدل القيم الموجودة بين الأقواس بالبيانات المقابلة من كود Go الخاص بك. نظرًا لأن المثال التالي سيمرر بنية ، فستستخدم تدوين النقطة للوصول إلى حقولها:

<هيئة>
<h1>{{.Headline}}</h1>
<ص> {{ .الجسم }} </ ص>
</body>

استبدل عنصر النص الأساسي الفارغ في ترميز الهيكل العظمي للقالب بالرمز أعلاه.

ال مقبض الصفحة سوف تتحقق وظيفة المعالج من أن طلب الصفحة هو طلب GET. ثم يملأ هيكلًا بنموذج البيانات قبل عرض القالب وخدمة الصفحة النهائية:

funcمقبض الصفحة(الكاتب http. ResponseWriter ، طلب * http. طلب) {
إذا طلب. الطريقة == "GET" {
tmplt ، _ = القالب. ParseFiles ("tutorial.html")

الحدث: = أخبار {
العنوان: "لدى makeuseof.com كل شيء تقني" ،
النص الأساسي: "قم بزيارة MUO إلى عن على أي شيء متعلق بالتكنولوجيا "،
}

يخطئ: = tmplt. تنفيذ (كاتب ، حدث)

إذا يخطئ! لا شيء {
إرجاع
}
}
}

ال تحليل الملفات الطريقة بتوزيع ملف HTML الذي تحدده. ال حدث المتغير هو الهيكل المهيأ. ال نفذ - اعدم ستقوم الطريقة بحقن البيانات المقدمة في الصفحة الأخيرة ، وفقًا للعناصر النائبة في القالب. تنفيذ يأخذ ResponseWriter والبيانات ، في هذه الحالة ، الهيكل.

إليك نتيجة تشغيل الخادم وزيارة الصفحة:

استخدام هياكل التحكم في القوالب

يمكنك أيضًا استخدام هياكل التحكم مثل العبارات الشرطية والحلقات في القوالب الخاصة بك.

تسمح لك الحلقة بإخراج عدة قيم وإعادة استخدام نفس البنية لكل منها. استخدم ال نطاق كلمة رئيسية لتحديد بداية المحتوى المتكرر و نهاية الكلمات الرئيسية للنهاية. داخل الحلقة يمكنك استخدام ملف {{.}} بناء الجملة لحقن القيمة الحالية:


    {{نطاق .}}
  1. {{.}}

  2. {{نهاية}}

بعد ذلك ، ستمرر اسم بنية البيانات التي تريد تكرارها كمعامل إلى طريقة التنفيذ:

makeUseOfCategories: = []سلسلة{"شرح التقنية" ، "البرمجة" ، "Linux" ،
"Android" ، "iOS" ، "العديد من ..."}

يخطئ: = tmplt. تنفيذ (كاتب ، MakeUseOfCategories)

إذا يخطئ! لا شيء {
إرجاع
}

ال MakeUseOfCategories المتغير هو شريحة من السلاسل لتمريرها كمعامل بيانات. إليك نتيجة التكرار خلال الشريحة:

يمكنك استخدام العبارة الشرطية في القوالب الخاصة بك لاختبار قيمة المتغير المنطقي. قم بإنشاء بنية مع الحقول المنطقية ، مثل هذا:

يكتب صحيح هيكل {
صحيح منطقي
هو زائف منطقي
IsDefault منطقي
}

لاستخدام الشرطي ، قم بتضمين إذا كلمة أساسية بأقواس مزدوجة قبل اسم المتغير المراد اختباره. قم بإنهاء الكتلة الشرطية بملحق نهاية كلمة رئيسية بين قوسين:

{{if .IsTrue}}
<ص>يقيّم صحيح وسيخرج</ ص>
{{نهاية}}

{{if .IsDefault}}
<ص>يقيّم كاذبة وفازت'ر الناتج</ ص>
{{نهاية}}

{{if .IsFalse}}
<ص>يقيّم كاذبة وفازت'ر الناتج</ ص>
{{نهاية}}

يؤدي تهيئة بنية في Go إلى تعيين القيم على false افتراضيًا ، لذلك إذا لم تقم بتهيئة حقل ، فسيتم تقييمه على false. عند تهيئة البنية وتمرير المتغير كبيانات إلى القالب ، فقط الحقول التي يتم تقييمها على أنها صحيحة هي السبب في ظهور المخرجات.

اختيار: = TrueFalser {
صحيح: حقيقي,
هو زائف: خاطئة,
}

يخطئ: = tmplt. تنفيذ (كاتب ، اختيار)

يتضمن الإخراج النهائي فقرة واحدة فقط حيث يتم تقييم الحقل isTrue فقط إلى true:

لست مضطرًا إلى استخدام القوالب لتطبيقات الواجهة الخلفية

النموذج ليس شرطًا لتطبيقات Go. يمكنك استخدام أساليب أخرى مثل تضمين بنية صفحتك في برنامجك ، جنبًا إلى جنب مع منطقها وسلوكها الآخر.

ومع ذلك ، سينتهي بك الأمر إلى بذل المزيد من العمل لنفسك. يساعد Go Templating على منع هجمات XSS ويجعل من السهل فصل العمل في بنية الصفحة عن منطق الواجهة الخلفية.