تخطَّ إلى المحتوى

Leaf#

إن Leaf لغة قوالب قوية بصياغة مستوحاة من Swift. يمكنك استخدامها لإنشاء صفحات HTML ديناميكية لموقع واجهة أمامية أو إنشاء رسائل بريد إلكتروني غنية لإرسالها من واجهة برمجية.

الحزمة#

الخطوة الأولى لاستخدام Leaf هي إضافته كاعتمادية إلى مشروعك في ملف بيان حزمة SPM.

// swift-tools-version:5.8
import PackageDescription

let package = Package(
    name: "MyApp",
    platforms: [
       .macOS(.v10_15)
    ],
    dependencies: [
        /// Any other dependencies ...
        .package(url: "https://github.com/vapor/leaf.git", from: "4.4.0"),
    ],
    targets: [
        .target(name: "App", dependencies: [
            .product(name: "Leaf", package: "leaf"),
            // Any other dependencies
        ]),
        // Other targets
    ]
)

التهيئة#

بمجرد إضافة الحزمة إلى مشروعك، يمكنك تهيئة Vapor لاستخدامها. عادةً ما يُجرى ذلك في configure.swift.

import Leaf

app.views.use(.leaf)

يخبر هذا Vapor باستخدام LeafRenderer عند استدعاء req.view في رمزك.

تحذير

كي يتمكن Leaf من العثور على القوالب عند التشغيل من Xcode، يجب أن تضبط دليل العمل المخصص لمساحة عمل Xcode الخاصة بك.

التخزين المؤقت لتصيير الصفحات#

يملك Leaf ذاكرة تخزين مؤقت داخلية لتصيير الصفحات. عندما تُضبط بيئة Application على .development، تُعطَّل هذه الذاكرة المؤقتة، بحيث تسري التغييرات على القوالب فورًا. في .production وجميع البيئات الأخرى، تكون الذاكرة المؤقتة مفعّلة افتراضيًا. لن تسري أي تغييرات تُجرى على القوالب حتى تُعاد بدء تشغيل التطبيق.

لتعطيل ذاكرة Leaf المؤقتة، افعل ما يلي:

app.leaf.cache.isEnabled = false

تحذير

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

هيكل المجلدات#

بمجرد تهيئة Leaf، ستحتاج إلى التأكد من امتلاكك مجلد Views لتخزين ملفات .leaf الخاصة بك فيه. افتراضيًا، يتوقع Leaf أن يكون مجلد views في ./Resources/Views نسبةً إلى جذر مشروعك.

من المرجح أيضًا أنك سترغب في تفعيل FileMiddleware في Vapor لتقديم الملفات من مجلد /Public إذا كنت تخطط لتقديم ملفات Javascript وCSS على سبيل المثال.

VaporApp
├── Package.swift
├── Resources
│   ├── Views
│   │   └── hello.leaf
├── Public
│   ├── images (images resources)
│   ├── styles (css resources)
└── Sources
    └── ...

تصيير عرض#

الآن وقد جرت تهيئة Leaf، لنصيّر قالبك الأول. داخل مجلد Resources/Views، أنشئ ملفًا جديدًا باسم hello.leaf بالمحتويات التالية:

Hello, #(name)!

نصيحة

إذا كنت تستخدم VSCode كمحرر رموز، فنوصي بتثبيت امتداد Vapor لتفعيل تمييز الصياغة: Vapor for VS Code.

ثم سجّل مسارًا (يُجرى ذلك عادةً في routes.swift أو في متحكّم) لتصيير العرض.

app.get("hello") { req -> EventLoopFuture<View> in
    return req.view.render("hello", ["name": "Leaf"])
}

// or

app.get("hello") { req async throws -> View in
    return try await req.view.render("hello", ["name": "Leaf"])
}

يستخدم هذا الخاصية العامة view على Request بدلًا من استدعاء Leaf مباشرةً. يتيح لك ذلك التبديل إلى مُصيّر مختلف في اختباراتك.

افتح متصفحك وزُر /hello. ينبغي أن ترى Hello, Leaf!. تهانينا على تصيير أول عرض Leaf لك!

تحرير هذه الصفحة