We can also define a page's route with a Route String (for parameterized routes such as /movies/@id) or a Route Function (for full programmatic flexibility).
Render Control
Unlike Next.js, we control how our pages are rendered.
This control enables us to easily and naturally integrate any tool we want (Redux, GraphQL, Service Worker, Preact, ...).
Note how we defined the files onRenderClient.jsx and onRenderHtml.jsx in a directory called /renderer/: that way, we tell Vike to apply the onRenderHtml() and onRenderClient() hooks to all our pages.
This means we can now create a new page just by defining a new +Page.jsx file (the +route.js file is optional).
Plus files in /renderer/ can be overridden. For example, we can override the onRenderHtml() and onRenderClient() hooks for rendering some of
our pages with a completely different UI framework such as Vue.
Data Fetching
Let's now have a look at how to fetch data.
That's it for the tour and we have actually already seen most of Vike's interface;
not only is Vike flexible but it's also simple to use!