الحزم المحلية ووحدات الميزات
استخرجوا الميزات إلى حزم Swift محلية لتسريع البناء وتحقيق العزل.
الحزم المحلية ووحدات الميزات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
لماذا نستخدم وحدات الميزات؟
يؤدي تقسيم التطبيق إلى حزم محلية إلى فرض التغليف، وتسريع عمليات البناء التزايدية، وتمكين تطوير الفرق بالتوازي.
// Without modules: one giant target recompiles everything
// With modules: changes to FeatureA only recompile FeatureAإنشاء حزمة محلية
أنشئ مجلدًا بجانب مشروع Xcode، ثم شغّل swift package init داخله.
mkdir Features/UserProfile
cd Features/UserProfile
swift package init --name UserProfile --type libraryالإضافة إلى مشروع Xcode
اسحب مجلد الحزمة المحلية إلى مستكشف مشروع Xcode. وسيتعرف Xcode عليها تلقائيًا باعتبارها حزمة SPM.
// In Xcode:
// File → Add Package Dependencies → Add Local...
// Select the package directoryالإشارة إلى حزمة محلية
في Package.swift الخاص بتطبيقك (أو عبر Xcode)، أشر إلى الحزم المحلية باستخدام .package(path:).
.package(path: "../Features/UserProfile"),
// In the target:
.product(name: "UserProfile", package: "UserProfile")سطح واجهة برمجة التطبيقات العامة
يمكن للتطبيق الوصول إلى الإعلانات public وopen فقط في الحزمة المحلية. استخدم التحكم في الوصول لتحديد حدود الوحدة.
// UserProfile/Sources/UserProfile/ProfileView.swift
public struct ProfileView: View {
public init() {}
public var body: some View { Text("Profile") }
}التطبيق الداخلي
تكون جميع الأنواع internal غير مرئية خارج الوحدة، مما يفرض التغليف تلقائيًا.
// Only visible within UserProfile module:
final class ProfileCache { ... }
struct ProfileMapper { ... }بنية وحدة الميزة
تمتلك كل وحدة ميزة طبقات المجال والبيانات والعرض الخاصة بها داخليًا.
// UserProfile/
// ├── Sources/UserProfile/
// │ ├── Domain/ (entities, use cases, protocols)
// │ ├── Data/ (repositories)
// │ └── Presentation/ (views, view models)
// └── Tests/UserProfileTests/وحدة النواة المشتركة
استخرج الاهتمامات المشتركة بين الوحدات (الشبكات والتحليلات ونظام التصميم) إلى وحدة مشتركة تستوردها وحدات الميزات.
// CoreNetwork package
// CoreDesign package
// Both imported by FeatureA and FeatureBالرسم البياني للتبعيات
ينبغي ألا تعتمد وحدات الميزات على بعضها مباشرةً. بل تمر التبعيات المشتركة عبر وحدة Core لتجنب الاقتران.
// GOOD:
// FeatureA → CoreNetwork
// FeatureB → CoreNetwork
// BAD:
// FeatureA → FeatureB (tight coupling)فوائد وقت البناء
مع وجود حدود واضحة بين الوحدات، يعيد Xcode بناء الوحدات المتأثرة فقط عند تغيير ملفات المصدر.
// Change in UserProfile → only UserProfile recompiles
// App target links the new binary → fast incremental buildاختبار وحدات الميزات
تمتلك كل وحدة ميزة هدف اختبار خاصًا بها، مما يتيح تنفيذ الاختبارات بالتوازي وتسريع التكامل المستمر.
// Run all tests:
swift test --package-path Features/UserProfile
// Or let Xcode run them as part of the main test planتحقق سريع
ما مستوى الوصول المطلوب للإعلانات في حزمة Swift المحلية حتى يمكن استخدامها من هدف التطبيق؟
مراجعة الدرس
أنشئ حزم ميزات محلية باستخدام swift package init، وأشر إليها عبر .package(path:)، ولا تعرض إلا الأنواع public. استخرج الأدوات المشتركة إلى وحدة Core. وينبغي ألا تعتمد وحدات الميزات على بعضها. وتقلل الحدود الواضحة بين الوحدات أوقات البناء التزايدي بشكل كبير.
الأسئلة الشائعة
هل درس «الحزم المحلية ووحدات الميزات» مجاني؟
نعم — نص درس «الحزم المحلية ووحدات الميزات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «الحزم المحلية ووحدات الميزات»؟
استخرجوا الميزات إلى حزم Swift محلية لتسريع البناء وتحقيق العزل. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الحزم المحلية ووحدات الميزات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Package.swift: الأهداف والمنتجات والتبعيات
- الحزم المحلية ووحدات الميزات
- الأهداف الثنائية وXCFrameworks
- إدارة الإصدارات وحل التعارضات وإضافات Swift