Swift Academy · Les

Lokale packages en featuremodules

Features uitnemen in lokale Swift-packages voor snellere builds en isolatie.

Les 2 van 413 stappen

Lokale packages en featuremodules is een gratis Swift Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.

Waarom functiemodules?

Door een app op te splitsen in lokale pakketten dwing je inkapseling af, versnel je incrementele compilaties en maak je parallelle teamontwikkeling mogelijk.

// Without modules: one giant target recompiles everything
// With modules: changes to FeatureA only recompile FeatureA

Een lokaal pakket maken

Maak een map naast je Xcode-project en voer daarin swift package init uit.

mkdir Features/UserProfile
cd Features/UserProfile
swift package init --name UserProfile --type library

Toevoegen aan een Xcode-project

Sleep de lokale pakketmap naar de projectnavigator van Xcode. Xcode herkent deze automatisch als een SPM-pakket.

// In Xcode:
// File → Add Package Dependencies → Add Local...
// Select the package directory

Verwijzen naar een lokaal pakket

Verwijs in Package.swift van je app (of via Xcode) naar lokale pakketten met .package(path:).

.package(path: "../Features/UserProfile"),
// In the target:
.product(name: "UserProfile", package: "UserProfile")

Openbaar API-oppervlak

Alleen declaraties met public en open in het lokale pakket zijn vanuit de app toegankelijk. Gebruik toegangsbeheer om de modulegrens te definiëren.

// UserProfile/Sources/UserProfile/ProfileView.swift
public struct ProfileView: View {
  public init() {}
  public var body: some View { Text("Profile") }
}

Interne implementatie

Alle typen met internal zijn buiten de module onzichtbaar, waardoor inkapseling automatisch wordt afgedwongen.

// Only visible within UserProfile module:
final class ProfileCache { ... }
struct ProfileMapper { ... }

Structuur van een functiemodule

Elke functiemodule beheert intern zijn eigen domein-, data- en presentatielagen.

// UserProfile/
// ├── Sources/UserProfile/
// │   ├── Domain/         (entities, use cases, protocols)
// │   ├── Data/           (repositories)
// │   └── Presentation/   (views, view models)
// └── Tests/UserProfileTests/

Gedeelde kernmodule

Extraheer gemeenschappelijke voorzieningen (netwerken, analyses, ontwerpsysteem) naar een gedeelde module die door functiemodules wordt geïmporteerd.

// CoreNetwork package
// CoreDesign package
// Both imported by FeatureA and FeatureB

Afhankelijkheidsgrafiek

Functiemodules mogen niet rechtstreeks van elkaar afhankelijk zijn. Gedeelde afhankelijkheden lopen via een kernmodule om koppeling te vermijden.

// GOOD:
// FeatureA → CoreNetwork
// FeatureB → CoreNetwork
// BAD:
// FeatureA → FeatureB  (tight coupling)

Voordelen voor de bouwtijd

Met duidelijke modulegrenzen hercompileert Xcode alleen de modules die zijn beïnvloed wanneer bronbestanden veranderen.

// Change in UserProfile → only UserProfile recompiles
// App target links the new binary → fast incremental build

Functiemodules testen

Elke functiemodule heeft een eigen testdoel, waardoor testen parallel kunnen worden uitgevoerd en CI sneller wordt.

// Run all tests:
swift test --package-path Features/UserProfile
// Or let Xcode run them as part of the main test plan

Korte controle

Welk toegangsniveau is vereist om declaraties in een lokaal Swift-pakket vanuit het appdoel te kunnen gebruiken?

Lesoverzicht

Maak lokale functiepakketten met swift package init, verwijs ernaar via .package(path:) en stel alleen typen met public beschikbaar. Extraheer gedeelde hulpprogramma's naar een kernmodule. Functiemodules mogen niet van elkaar afhankelijk zijn. Duidelijke modulegrenzen verkorten incrementele bouwtijden aanzienlijk.

Gratis beginnen

Leer Swift met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
122
Lessen
409

Veelgestelde vragen

Is de les “Lokale packages en featuremodules” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Lokale packages en featuremodules”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.

Wat leer ik in “Lokale packages en featuremodules”?

Features uitnemen in lokale Swift-packages voor snellere builds en isolatie. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Swift Academy te beginnen?

Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Lokale packages en featuremodules”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Swift Academy?

Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Package.swift: targets, producten en dependencies
  2. Lokale packages en featuremodules
  3. Binaire targets en XCFrameworks
  4. Versies beheren, conflicten oplossen en Swift-plugins
← Terug naar Swift Academy