Nuxtのサーバーサイドでデータ取得のために使用するasyncData
とfetch
がspa, ssg, ssrそれぞれのモードでどういうタイミングで呼ばれるのか調査した。
Nuxt 2.14.0
API: asyncData メソッド - NuxtJS
The fetch Method - NuxtJS
spa
{
mode: 'spa',
target: 'static',
}
$ nuxt generate
$ nuxt start
spaモードでasyncData
もfetch
も呼ばれないということはなく、クライアントサイドでちゃんと呼ばれる。
【PageAにアクセス】
Client PageA asyncData
Client PageA beforeCreate
Client PageA data
Client PageA created
Client PageA beforeMount
Client PageA fetch
Client PageA mounted
【nuxt-linkでPageBにアクセス】
Client PageB asyncData
Client PageA beforeDestroy
Client PageA destroyed
Client PageB beforeCreate
Client PageB data
Client PageB created
Client PageB beforeMount
Client PageB fetch
Client PageB mounted
ssg
{
mode: 'universal',
target: 'static',
}
$ nuxt generate
$ nuxt start
asyncData
とfetch
はgenerate時に呼ばれ、クライアントサイドでは呼ばれない。
【generate】
Server PageA asyncData
Server PageB asyncData
Server PageA beforeCreate
Server PageA data
Server PageA created
Server PageA fetch
Server PageB beforeCreate
Server PageB data
Server PageB created
Server PageB fetch
【PageAにアクセス】
Client PageA beforeCreate
Client PageA data
Client PageA created
Client PageA beforeMount
Client PageA mounted
【nuxt-linkでPageBにアクセス】
Client PageA beforeDestroy
Client PageA destroyed
Client PageB beforeCreate
Client PageB data
Client PageB created
Client PageB beforeMount
Client PageB mounted
ssr
{
mode: 'universal',
target: 'server',
}
$ nuxt build
$ nuxt start
直接アクセスするとサーバーサイドでasyncData
とfetch
が呼ばれる。
nuxt-linkでアクセスすると、クライアントサイドでasyncData
とfetch
が呼ばれる。
【PageAにアクセス】
Server PageA asyncData
Server PageA beforeCreate
Server PageA data
Server PageA created
Server PageA fetch
Client PageA beforeCreate
Client PageA data
Client PageA created
Client PageA beforeMount
Client PageA mounted
【nuxt-linkでPageBにアクセス】
Client PageB asyncData
Client PageA beforeDestroy
Client PageA destroyed
Client PageB beforeCreate
Client PageB data
Client PageB created
Client PageB beforeMount
Client PageB fetch
Client PageB mounted