# Folder Structuur Nu dat je je eerste Vapor app hebt gemaakt, gebouwd en uitgevoerd, laten we een moment nemen om jezelf vertrouwd te maken met Vapor's folder structuur. De structuur is gebaseerd op [SPM](spm.md)'s folder structuur, dus als je al met SPM hebt gewerkt zou deze je bekend voor moeten komen. ``` . ├── Public ├── Sources │ ├── App │ │ ├── Controllers │ │ ├── Migrations │ │ ├── Models │ │ ├── configure.swift │ │ ├── entrypoint.swift │ │ └── routes.swift │ ├── Tests │ └── AppTests └── Package.swift ``` The secties hieronder leggen elk deel van de folder structuur uit in meer detail. ## Public Deze map bevat alle publieke bestanden die door uw app geserveerd zullen worden als `FileMiddleware` is ingeschakeld. Dit zijn meestal afbeeldingen, stylesheets en browserscripts. Bijvoorbeeld, een verzoek aan `localhost:8080/favicon.ico` zal controleren of `Public/favicon.ico` bestaat en deze terugsturen. U moet `FileMiddleware` aanzetten in uw `configure.swift` bestand voordat Vapor publieke bestanden kan serveren. ```swift // Dient bestanden op uit `Public/` directory let fileMiddleware = FileMiddleware( publicDirectory: app.directory.publicDirectory ) app.middleware.use(fileMiddleware) ``` ## Sources Deze map bevat alle Swift bronbestanden voor je project. De mappen op het hoogste niveau, `App` en `Run`, geven de modules van uw pakket weer, zoals aangegeven in het [SPM](spm.md) manifest. ### App Dit is waar al je applicatie logica naartoe gaat. #### Controllers Controllers zijn een goede manier om applicatie logica te groeperen. De meeste controllers hebben veel functies die een verzoek aannemen en een soort antwoord teruggeven. #### Migrations De migraties map is waar uw database migraties naar toe gaan als u Fluent gebruikt. #### Models De models map is een goede plaats om uw `Content` structs of Fluent `Model`s op te slaan. #### configure.swift Dit bestand bevat de `configure(_:)` functie. Deze methode wordt aangeroepen door `entrypoint.swift` om de nieuw aangemaakte `Application` te configureren. Dit is waar je services zoals routes, databases, providers, en meer moet registreren. #### entrypoint.swift Dit bestand bevat het `@main`-toegangspunt voor de toepassing die uw Vapor-toepassing instelt, configureert en uitvoert. #### routes.swift Dit bestand bevat de `routes(_:)` functie. Deze methode wordt aangeroepen aan het einde van `configure(_:)` om routes te registreren voor je `Application`. ## Tests Elke niet-uitvoerbare module in je `Sources` folder kan een overeenkomstige folder hebben in `Tests`. Deze bevalt code gebouwd op de `XCTest` module om je pakket te testen. Testen kunnen uitgevoerd worden door `swift test` te gebruiken op de command line of door ⌘+U in te drukken in Xcode. ### AppTests Deze folder bevat de unit tests voor code in je `App` module. ## Package.swift Tenslotte is er [SPM](spm.md)'s pakket manifest.