layout | highlighter | css | colorSchema | transition | mdc | glowSeed | title |
---|---|---|---|---|---|---|---|
center |
shiki |
unocss |
dark |
fade-out |
true |
4 |
The Progressive Path |
Core team member of Nuxt, Vue, and Vite.
Creator of VueUse, Slidev, Vitest, UnoCSS.
Working at NuxtLabs.
Creator of VueUse, Slidev, Vitest, UnoCSS.
Working at NuxtLabs.


Vue Amsterdam
Feb. 29th 2024
Recordings on antfu.me
A tool should help you get things done faster and/or easier
Cost of Using a Tool
Cost of Discovering
Common needs, easy to find
Cost of Learning
Easy to understand and get started
Price
Usually free in Open Source! 💛
Cost of Adoption
Provide integrations, extensibility
The "Stairs" to make things easier to approach
https://vuejs.org
"A framework that can grow with you and adapt to your needs."
Vue offers multiple ways to use, for different level of integrations:
-
CDN without build tools
-
As Web Components
-
Single-page application (SPA)
-
Static site generation (SSG)
-
Server-side rendering (SSR)
-
Native targeting
-
Vue Vapor Mode Coming soon
https://nuxt.com
"To make web development intuitive and performant with a great Developer Experience"
This is all you need to start with Nuxt:
package.json
app.vue
{
"scripts": {
"dev": "nuxt dev",
"build": "nuxt build"
},
"devDependencies": {
"nuxt": "^3.10.0"
}
}
<script setup>
const msg = ref('Hello, Nuxt!')
</script>
<template>
<h1>{{ msg }}</h1>
</template>
Intuitive - Minimal knowledge required, and easy to discover new features
Starts minimal and grows with users:
Have some components?
Put them in components/
and use anywhere
Need routing?
Create a pages/
directory and Vue router is set up for you.
Need some server logic?
Create a server/api/
directory to make serverless endpoints.
Want TypeScript?
Oh, you can just use it!
PWA, SEO, i18n, RSS, etc?
We have great modules ecosystem to use in a few clicks.
Curious about more?
We have Nuxt DevTools to inspect and analyze the internals
Nuxt DevTools
Help features discovery
and understanding
and understanding
Nuxt Tutorial
Help onboarding
and learning
and learning
https://vitejs.dev
"We work closely with projects in the ecosystem to minimize regressions on each release"
package.json
{
// ...
"peerDependencies": {
"vite": "^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0"
}
}
Two ways of make breaking changes easier
Forward Compatibility
- Compatible with the [future]{.text-yellow.font-bold} versions
- Introduce the
experimental
orfuture
flags - Make future behavior opt-in today
- (e.g.
@vue/composition-api
,vue v2.7
, Nuxt Bridge)
Backward Compatibility
- Compatible with the [previous]{.text-blue.font-bold} versions
- Deprecate first, print warnings, remove later
- (e.g.
@vue/compat
,@nuxt/kit
)
Progressive on
Onboarding
Making it easy to understand and get started
Progressive on
Integrations
Fits in different scenarios, easy to adopt
Progressive on
Features
Starts minimal and grows with users
Progressive on
Breaking Changes
Provide middle stages for migration
Slides on antfu.me