Modern SPA Experience
Build single-page apps without building an API. Server-side routing with client-side rendering.
Build modern single-page Vue, React, and Svelte apps using classic server-side routing and controllers.
# Create a new app with everything set up
npx create-sails my-appOr add to an existing Sails app:
npm install inertia-sails// api/controllers/dashboard/view-dashboard.js
module.exports = {
exits: {
success: { responseType: 'inertia' }
},
fn: async function () {
return {
page: 'dashboard/index',
props: {
user: await User.findOne({ id: this.req.session.userId }),
stats: await Stats.find()
}
}
}
}// Share with current request
sails.inertia.share('user', currentUser)
// Flash messages
sails.inertia.flash('success', 'Saved!')sails.inertia.share(
'loggedInUser',
sails.inertia.once(async () => {
return await User.findOne({ id: req.session.userId })
})
)
// Refresh when data changes
sails.inertia.refreshOnce('loggedInUser')props: {
user: currentUser, // Loads immediately
analytics: sails.inertia.defer(() => getAnalytics()) // Loads after render
}props: {
invoices: sails.inertia.scroll(() => invoices, {
page,
perPage,
total,
wrapper: 'data'
})
}