Lokale packages en featuremodules
Features uitnemen in lokale Swift-packages voor snellere builds en isolatie.
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 FeatureAEen 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 libraryToevoegen 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 directoryVerwijzen 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 FeatureBAfhankelijkheidsgrafiek
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 buildFunctiemodules 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 planKorte 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.
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
- Package.swift: targets, producten en dependencies
- Lokale packages en featuremodules
- Binaire targets en XCFrameworks
- Versies beheren, conflicten oplossen en Swift-plugins