Views

Horn supports three page authoring styles out of the box:

  • Vue single-file components
  • JSX / TSX
  • render functions with h()

Document shell

app/app.vue is always the document shell. It must render:

  • html
  • head
  • body

That shell is what Horn server-renders and hydrates.

Route views

Route views live under app/pages/**:

  • layout.* for nested layout nodes
  • page.* for page components
  • error.* for route-local error boundaries
  • loading.* for client navigation loading UI

Mixed view styles

You can mix styles in one app:

  • / can be a render-function page
  • /jsx can be a TSX page
  • /sfc can be a Vue SFC page

Horn treats them the same at routing and SSR time.