4. [nuxt-01] örneği: yönlendirme ve gezinme
Bir [nuxt] uygulamasının işleyişini aşamalı olarak keşfetmek için bir dizi basit örnek oluşturacağız. Öncelikle |Introduction au framework VUE.JS par l’exemple| belgesindeki [vuejs-11] uygulamasını taşıyarak başlayacağız, böylece öncelikle bir [nuxt] uygulamasının kod yapısının, bir [vue] uygulamasının kod yapısından ne farkı olduğunu anlayacağız.
4.1. Proje ağacı
[vuejs-11] projesi, görünümler arasında gezinmeye yönelik bir projeydi:

[vuejs-11] projesinin kaynak kod ağacı şu şekildeydi:

- [main.js], [vue] uygulamasının başlatılması sırasında yürütülen komut dosyasıydı;
- [router.js], yönlendirme kurallarını belirliyordu;
- [App.vue], uygulamanın yapısını belirleyen görünümdü. Farklı görünümlerin sayfa düzenini organize ediyordu;
- [Component1, Component2, Component3, Layout, Navigation], uygulamanın farklı görünümlerinde kullanılan bileşenlerdi;
[vue] [1] uygulamasının [nuxt] [2] uygulamasına taşınmasında:
- uygulamanın başlatılması sırasında yürütülen komut dosyaları, [nuxt.config.js] dosyasının [plugins] anahtarında tanımlanmalıdır. Ayrıca, [nuxt] sunucusu için olan komut dosyalarını [nuxt] istemcisi için olanlardan ayırmak mümkündür;
- [App.vue] görünümü, [layouts] klasörüne kurulmalı ve adı [default.vue] olarak değiştirilmelidir;
- yönlendirme hedefleri olan [Component1, Component2, Component3] bileşenleri, [pages] klasörüne taşınmalıdır. Bunlardan biri, ana sayfa olarak kullanılan dosya, [index.vue] olarak yeniden adlandırılmalıdır. Burada dosyaları şu şekilde yeniden adlandırdık:
- [Component1] --> [index]: [Home] metnini görüntüler;
- [Component2] --> [page1]: [Page 1] metnini görüntüler;
- [Component3] --> [page2]: [Page 2] metnini görüntüler;
[nuxt], [pages] klasörünün içeriğini kullanarak aşağıdaki rotaları dinamik olarak oluşturur:
Bu nedenle, [vue] projesinde kullanılan [router.js] dosyası, [nuxt] projesinde gereksiz hale gelir.
[nuxt.config.js] yapılandırma dosyası şu şekilde olacaktır:
export default {
mode: 'universal',
/*
** Headers of the page
*/
head: {
title: 'Introduction à [nuxt.js]',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{
hid: 'description',
name: 'description',
content: 'ssr routing loading asyncdata middleware plugins store'
}
],
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
},
/*
** Customize the progress-bar color
*/
loading: { color: '#fff' },
/*
** Global CSS
*/
css: [],
/*
** Plugins to load before mounting the App
*/
plugins: [],
/*
** Nuxt.js dev-modules
*/
buildModules: [
// Belge: https://github.com/nuxt-community/eslint-module
'@nuxtjs/eslint-module'
],
/*
** Nuxt.js modules
*/
modules: [
// Belge: https://bootstrap-vue.js.org
'bootstrap-vue/nuxt',
// Belge: https://axios.nuxtjs.org/usage
'@nuxtjs/axios'
],
/*
** Axios module configuration
** See https://axios.nuxtjs.org/options
*/
axios: {},
/*
** Build configuration
*/
build: {
/*
** You can extend webpack config here
*/
extend(config, ctx) {}
},
// kaynak kod dizini
srcDir: 'nuxt-01',
// yönlendirici
router: {
// uygulamanın URL kökü
base: '/nuxt-01/'
},
// sunucu
server: {
// hizmet bağlantı noktası, varsayılan olarak 3000
port: 81,
// dinlenen ağ adresleri, varsayılan olarak localhost: 127.0.0.1
// 0.0.0.0 = makinedeki tüm ağ adresleri
host: '0.0.0.0'
}
}
- 62. satır: [dvp] projesinin kaynak kodunu içeren klasör belirtilir;
- 66. satır: [dvp] uygulamasının kök dizini belirtilir (buraya istenilen değer girilebilir);
- satır 43: [bootstrap-vue] kütüphanesinin yapılandırmada referanslandığını not edelim;
4.2. [main.js] dosyasının taşınması
[vuejs-11] projesine ait [main.js] dosyası şu şekildeydi:
// ithalatlar
import Vue from 'vue'
import App from './App.vue'
// eklentiler
import BootstrapVue from 'bootstrap-vue'
Vue.use(BootstrapVue);
// bootstrap
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
// yönlendirici
import monRouteur from './router'
// yapılandırma
Vue.config.productionTip = false
// proje örneği [App]
new Vue({
name: "app",
// ana görünüm
render: h => h(App),
// yönlendirici
router: monRouteur,
}).$mount('#uygulama')
[imports] dışında, kod şu işlemleri gerçekleştirir:
- 5-11. satırlar: [bootstrap-vue] kütüphanesinin kullanımı. Bu iş artık [nuxt.config.js] yapılandırma dosyasının 43. satırındaki [bootstrap-vue/nuxt] modülü tarafından gerçekleştirilmektedir;
- 14. ve 25. satırlar: [router.js] yönlendirme dosyasının kullanımı. Bu iş artık [pages] klasör ağacından [nuxt] uygulaması tarafından otomatik olarak gerçekleştirilmektedir;
- 20-26. satırlar: Uygulamanın ana görünümünün oluşturulması. Bir [nuxt] uygulamasında, ana görünüm olarak [layouts/default.vue] görünümü kullanılır;
[main.js] dosyasının artık varlık nedeni kalmamıştır. Eğer bir varlık nedeni olsaydı, bu durum [nuxt.config.js] yapılandırma dosyasının 30. satırındaki [plugins] anahtarında belirtilirdi;
4.3. Ana görünüm [default.vue]

[layouts / default.vue] ana görünümü şu şekildedir:
<template>
<div class="container">
<b-card>
<!-- bir mesaj -->
<b-alert show variant="success" align="center">
<h4>[nuxt-01] : routage et navigation</h4>
</b-alert>
<!-- yönlendirmenin geçerli görünümü -->
<nuxt />
</b-card>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
- [vuejs-11] projesinin 9. satırında, burada kullanılan <nuxt /> etiketinin yerine <router-view /> etiketi vardı. Her ikisi de kullanılabilir görünüyor. İkisini de denedim ancak herhangi bir değişiklik görmedim. Önerilen <nuxt /> etiketini kullandım. Bu etiket, mevcut görünümü, yani mevcut yönlendirmenin hedef sayfasını görüntüler;
4.4. Bileşenler

[vuejs-11] projesine kıyasla, [layout, navigation] bileşenlerinde herhangi bir değişiklik yok:
[components / layout.vue]
<!-- görünüm düzeni -->
<template>
<!-- satır -->
<div>
<b-row>
<!-- iki sütunlu alan -->
<b-col v-if="left" cols="2">
<slot name="left" />
</b-col>
<!-- on sütunlu alan -->
<b-col v-if="right" cols="10">
<slot name="right" />
</b-col>
</b-row>
</div>
</template>
<script>
export default {
// ayarlar
props: {
left: {
type: Boolean
},
right: {
type: Boolean
}
}
}
</script>
Bu bileşen, uygulamanın sayfalarını iki sütuna ayırmak için kullanılır:
- 7-9. satırlar: sol sütun, 2 Bootstrap sütun genişliğinde;
- 11-13. satırlar: sağ sütun, 10 Bootstrap sütununa yayılır;
[navigation.vue]
<template>
<!-- üç seçenekli Bootstrap menüsü -->
<b-nav vertical>
<b-nav-item to="/" exact exact-active-class="active">
Home
</b-nav-item>
<b-nav-item to="/page1" exact exact-active-class="active">
Page 1
</b-nav-item>
<b-nav-item to="/page2" exact exact-active-class="active">
Page 2
</b-nav-item>
</b-nav>
</template>
Bu bileşen üç gezinme bağlantısı görüntüler:

4., 7. ve 10. satırlardaki [to] özniteliklerine ne tür bir değer gireceğinizi öğrenmek için [pages] [2] klasörüne bakmanız gerekir:
- [index] sayfası, URL ve [/]’e sahip olacaktır;
- [page1] sayfası, URL ve [/page1] sayfalarını içerecektir;
- [page2] sayfası, URL ve [/page2]'e sahip olacaktır;
[navigation] bileşeni şu şekilde de yazılabilir:
<template>
<!-- üç seçenekli Bootstrap menüsü -->
<b-nav vertical>
<nuxt-link to="/" exact exact-active-class="active">
Home
</nuxt-link>
<nuxt-link to="/page1" exact exact-active-class="active">
Page 1
</nuxt-link>
<nuxt-link to="/page2" exact exact-active-class="active">
Page 2
</nuxt-link>
</b-nav>
</template>
<b-nav-item> etiketi, bir yönlendirme bağlantısını belirten <nuxt-link> etiketiyle değiştirilmiştir. Uygulamada, bir etiketi diğerine tercih etmemi gerektirecek kadar büyük bir fark görmedim.
4.5. Sayfalar

[index.vue] sayfası şu görünümü sergiliyor:

Sayfanın kodu şöyledir:
<!-- ana sayfa -->
<template>
<Layout :left="true" :right="true">
<!-- gezinme -->
<Navigation slot="left" />
<!-- mesaj-->
<b-alert slot="right" show variant="warning">
Home
</b-alert>
</Layout>
</template>
<script>
/* eslint-disable no-undef */
/* eslint-disable no-console */
/* eslint-disable nuxt/no-env-in-hooks */
import Navigation from '@/components/navigation'
import Layout from '@/components/layout'
export default {
name: 'Home',
// kullanılan bileşenler
components: {
Layout,
Navigation
},
// yaşam döngüsü
beforeCreate(...args) {
console.log('[home beforeCreate]', 'process.server=', process.server,
'process.client=', process.client, "argüman sayısı=", args.length)
},
created(...args) {
console.log('[home created]', 'process.server=', process.server,
'process.client=', process.client, "argüman sayısı=", args.length)
},
beforeMount(...args) {
console.log('[home beforeMount]', 'process.server=', process.server,
'process.client=', process.client, "argüman sayısı=", args.length)
},
mounted(...args) {
console.log('[home mounted]', 'process.server=', process.server,
'process.client=', process.client, "argüman sayısı=", args.length)
}
}
</script>
- 5. satır: gezinme bileşeni sol sütuna yerleştirilmiştir;
- 7-9. satırlar: sağ sütuna bir uyarı yerleştirilmiştir;
<script> bölümünde, [beforeCreate, created, beforeMount, beforeMounted] sayfasının yaşam döngüsü işlevlerine kod ekliyoruz. Hangi işlevlerin []nuxt sunucusu tarafından, hangilerinin ise [nuxt] istemcisi tarafından yürütüldüğünü bilmek istiyoruz. İki hususu hatırlatmak isteriz:
- bir sayfa, ya uygulamanın başlatılması sırasında, [index] sayfası örneğinde olduğu gibi, ya da kullanıcı tarafından tarayıcı sayfasını yenilemek veya URL adresini elle girmek suretiyle manuel olarak talep edildiğinde, sayfa ilk olarak [nuxt] sunucusu tarafından sunulur. Sunucu, yukarıdaki kodu yorumlar ve içindeki JavaScript kodunu çalıştırır;
- [nuxt] sunucusu tarafından gönderilen sayfa tarayıcıya ulaştığında, [nuxt] istemci koduyla birlikte gelir. Bu istemci, yukarıdaki sayfayı yeniden yorumlar;
- günlük kayıtları sayesinde, bu süreci daha iyi anlamak için kimin ne yaptığını bilmek istiyoruz;
- 30-31. satırlar: işlevde, hem sunucuda hem de istemcide bulunan [process] adlı bir küresel nesne kullanılır:
- [process.server], kod sunucu tarafından yürütülürse doğru, aksi takdirde yanlıştır;
- [process.client], kod istemci tarafından çalıştırılırsa doğru, aksi takdirde yanlıştır;
- [process] değişkeni kodda tanımlanmadığı için, [eslint] için 14. satırı eklemek zorundayız. [16] satırı gereklidir; aksi takdirde [eslint], [process] değişkeni nedeniyle başka bir hata türü bildirir. 15. satır ise [console]'in yaşam döngüsü işlevlerinde kullanılabilmesi için gereklidir;
- 29. satır: yaşam döngüsü işlevlerinin argüman alıp almadığını da öğrenmek istiyoruz. Aslında [nuxt]'in belirli işlevlere bilgi ilettiğini göreceğiz. Yaşam döngüsü işlevlerinin de bunların arasında olup olmadığını öğrenmek istiyoruz;
- Aynı kodu dört işlev için de tekrarlıyoruz;
4.6. [nuxt.config.js] dosyası
[dvp] projesinin yürütülmesini kontrol eden dosya budur. Bu dosya 33. sayfada açıklanmıştır.
4.7. Projenin Yürütülmesi
Projeyi çalıştırıyoruz:

Görüntülenen sayfa şöyledir:

Tarayıcıya yüklendikten sonra, [nuxt] uygulaması klasik bir [vue] uygulaması haline gelir. Bu nedenle, [nuxt-01] uygulamasının istemci tarafındaki işleyişi hakkında yorum yapmayacağız. Bu konu, |Introduction au framework VUE.JS par l’exemple| belgesindeki [vuejs-11] projesinde ele alınmıştır.
[nuxt] uygulaması, [vue] uygulamasından yalnızca iki noktada farklılık gösterir:
- uygulamanın ilk başlatılması sırasında ana sayfa görüntülenir;
- kullanıcı herhangi bir şekilde tarayıcının yenilenmesini tetiklediği her seferinde;
Bu iki durumda da:
- istenen sayfa sunucu tarafından sağlanır;
- alınan sayfa istemci tarafından işlenir;
Uygulamanın başlatma günlüklerine (tarayıcıda F12) bir göz atalım:

- [1]'te, sunucu günlükleri (process.server=true). Bunların başında [Nuxt SSR] ibaresi yer alır (SSR= Sunucu Tarafında İşlenmiş);
- [2] olarak, tarayıcıdaki istemci günlükleri (process.client=true);
Bu günlüklerden şu sonuçlar çıkarılabilir:
- sunucu, yaşam döngüsünün [beforeCreate, created] işlevlerini yürütür;
- istemci, yaşam döngüsünün [beforeCreate, created, beforeMount, mounted] işlevlerini yürütür;
- sunucu, sayfayı istemciden önce işlemiştir;
- her iki durumda da, yürütülen işlevlerin hiçbirine argüman verilmemiştir;
Şimdi alınan sayfanın kaynak koduna bakalım (tarayıcıdaki [Code source de la page] seçeneği):
<!doctype html>
<html data-n-head-ssr>
<head>
<title>Introduction à [nuxt.js]</title>
<meta data-n-head="ssr" charset="utf-8">
<meta data-n-head="ssr" name="viewport" content="width=device-width, initial-scale=1">
<meta data-n-head="ssr" data-hid="description" name="description" content="ssr routing loading asyncdata middleware plugins store">
<link data-n-head="ssr" rel="icon" type="image/x-icon" href="/favicon.ico">
<base href="/nuxt-01/">
....
<link rel="preload" href="/nuxt-01/_nuxt/runtime.js" as="script">
<link rel="preload" href="/nuxt-01/_nuxt/commons.app.js" as="script">
<link rel="preload" href="/nuxt-01/_nuxt/vendors.app.js" as="script">
<link rel="preload" href="/nuxt-01/_nuxt/app.js" as="script">
</head>
<body>
<div data-server-rendered="true" id="__nuxt">
<div id="__layout">
<div class="container">
<div class="card">
<div class="card-body">
<div role="alert" aria-live="polite" aria-atomic="true" align="center" class="alert alert-success">
<h4>[nuxt-01] : routage et navigation</h4>
</div>
<div>
<div class="row">
<div class="col-2">
<ul class="nav flex-column">
<li class="nav-item">
<a href="/nuxt-01/" target="_self" class="nav-link active nuxt-link-active">
Home
</a>
</li>
<li class="nav-item">
<a href="/nuxt-01/page1" target="_self" class="nav-link">
Page 1
</a>
</li>
<li class="nav-item">
<a href="/nuxt-01/page2" target="_self" class="nav-link">
Page 2
</a>
</li>
</ul>
</div> <div class="col-10">
<div role="alert" aria-live="polite" aria-atomic="true" class="alert alert-warning">
Home
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
window.__NUXT__ = (function (a, b, c, d, e, f, g, h, i, j) {
return {
layout: "default", data: [{}], error: null, serverRendered: true,
logs: [
{ date: new Date(1574069600078), args: [a, b, c, d, e, f, g, "(repeated 1 times)"], type: h, level: i, tag: j },
{ date: new Date(1574070938091), args: [a, b, c, d, e, f, g], type: h, level: i, tag: j }
]
}
}("[home beforeCreate]", "process.server=", "true", "process.client=", "false", "nombre d'arguments=", "0", "log", 2, ""));
</script>
<script src="/nuxt-01/_nuxt/runtime.js" defer></script>
<script src="/nuxt-01/_nuxt/commons.app.js" defer></script>
<script src="/nuxt-01/_nuxt/vendors.app.js" defer></script>
<script src="/nuxt-01/_nuxt/app.js" defer></script>
</body>
</html>
Yorumlar
- İlk dikkat çeken şey, alınan HTML kodunun kullanıcının gördüklerini doğru bir şekilde yansıtmasıdır. [vue] uygulamalarında durum böyle değildi; bu uygulamalarda görüntülenen kaynak kodu, neredeyse boş bir HTML dosyasının kaynak koduydu. Tarayıcıya gelen de buydu. Ardından [vue] istemcisi devreye girerek kullanıcının beklediği sayfayı oluşturuyordu. Bu durumda, görüntülenen sayfanın kodunu görmek için tarayıcının geliştirici araçlar sekmesindeki (F12) [inspecteur] sekmesine gitmek gerekiyordu;
- 57-67. satırlar: [Nuxt SSR] etiketli günlükleri görüntüleyen komut dosyasıdır. Bu günlükler sunucu tarafında üretilmiş ve sonuçlar gönderilen sayfaya dahil edilen bir komut dosyasına yerleştirilmiştir;
- 68-71. satırlar: tarayıcı tarafında çalıştırılan istemciyi oluşturan komut dosyaları;
68-71. satırlardaki komut dosyaları çalıştırılır ve alınan sayfayı dönüştürür. Kullanıcıya nihayetinde görüntülenen sayfayı öğrenmek için, tarayıcının geliştirici araçlarındaki (F12) [inspecteur] sekmesine gitmek gerekir:

<html> [3] etiketini genişlettiğinizde şu içerik karşınıza çıkar:
<head>
<title>Introduction à [nuxt.js]</title>
<meta data-n-head="ssr" charset="utf-8">
<meta data-n-head="ssr" name="viewport" content="width=device-width, initial-scale=1">
<meta data-n-head="ssr" data-hid="description" name="description" content="ssr routing loading asyncdata middleware plugins store">
<link data-n-head="ssr" rel="icon" type="image/x-icon" href="/favicon.ico">
<base href="/nuxt-01/">
...
<link rel="preload" href="/nuxt-01/_nuxt/runtime.js" as="script">
<link rel="preload" href="/nuxt-01/_nuxt/commons.app.js" as="script">
<link rel="preload" href="/nuxt-01/_nuxt/vendors.app.js" as="script">
<link rel="preload" href="/nuxt-01/_nuxt/app.js" as="script">
<script charset="utf-8" src="/nuxt-01/_nuxt/pages_index.js"></script>
<script charset="utf-8" src="/nuxt-01/_nuxt/pages_page1.js"></script>
<script charset="utf-8" src="/nuxt-01/_nuxt/pages_page2.js"></script>
</head>
<body>
<div id="__nuxt">
<div id="__layout">
<div class="container">
<div class="card">
<div class="card-body">
<div role="alert" aria-live="polite" aria-atomic="true" class="alert alert-success" align="center">
<h4>[nuxt-01] : routage et navigation</h4>
</div>
<div>
<div class="row">
<div class="col-2">
<ul class="nav flex-column">
<li class="nav-item">
<a href="/nuxt-01/" target="_self" class="nav-link active nuxt-link-active">
Home
</a>
</li>
<li class="nav-item">
<a href="/nuxt-01/page1" target="_self" class="nav-link">
Page 1
</a>
</li>
<li class="nav-item">
<a href="/nuxt-01/page2" target="_self" class="nav-link">
Page 2
</a>
</li>
</ul>
</div>
<div class="col-10">
<div role="alert" aria-live="polite" aria-atomic="true" class="alert alert-warning">
Home
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
window.__NUXT__ = (function (a, b, c, d, e, f, g, h, i) {
return {
layout: "default", data: [{}], error: null, serverRendered: true,
logs: [
{ date: new Date(1574068674481), args: ["[home beforeCreate]", a, b, c, d, e, f], type: g, level: h, tag: i },
{ date: new Date(1574068674482), args: ["[home created]", a, b, c, d, e, f], type: g, level: h, tag: i }
]
}
}("process.server=", "true", "process.client=", "false", "nombre d'arguments=", "0", "log", 2, ""));
</script>
<script src="/nuxt-01/_nuxt/runtime.js" defer=""></script>
<script src="/nuxt-01/_nuxt/commons.app.js" defer=""></script>
<script src="/nuxt-01/_nuxt/vendors.app.js" defer=""></script>
<script src="/nuxt-01/_nuxt/app.js" defer=""></script>
<iframe id="mc-sidebar-container" ...></iframe>
<iframe id="mc-topbar-container"...> </iframe>
<iframe id="mc-toast-container" ...></iframe>
<iframe id="mc-download-overlay-container"...></iframe>
</body>
Yorumlar
- İlk bakışta, 19-59. satırlarda görüntülenen sayfa, alınan sayfayla aynı gibi görünüyor;
- 14-16. satırlar: Uygulamanın her bir sayfası için birer tane olmak üzere üç yeni komut dosyası ortaya çıkıyor;
- 76-79. satırlar: dört adet [iframe] görünüyor;
33, 37 ve 42. satırlarda bağlantılar sorun yaratıyor. Bunlar, tıklandığında sunucuya bir istek gönderecek gibi görünen normal bağlantılar gibi görünüyor. Ancak çalıştırıldığında bunun doğru olmadığı anlaşılıyor: sunucuya herhangi bir istek gönderilmiyor. Bunun nedenini anlamak için tarayıcının [inspecteur] sekmesine geri dönmek gerekir:

[1, 2]'te bağlantılara olaylar eklenmiş olduğunu görüyoruz. Bağlantılara olay işleyicileri ekleyen, 71-74. satırlardaki komut dosyalarıdır. Dolayısıyla:
- istemci tarafından görüntülenen sayfa, sunucu tarafından gönderilen sayfayla görsel olarak aynıdır;
- sayfaya istemci tarafından dinamik bir davranış eklenmiştir;
Şimdi, URL adresini elle [http://192.168.1.128:81/nuxt-01/page1] olarak yazarak [page1] sayfasını isteyelim. Günlükler şu şekilde olur:

[index] sayfası için elde edilen sonuçların aynısı, [page1] sayfası için de elde edilir. Alınan sayfanın kaynak kodu ise şöyledir:
<body>
<div data-server-rendered="true" id="__nuxt">
<div id="__layout">
<div class="container">
<div class="card">
<div class="card-body">
<div role="alert" aria-live="polite" aria-atomic="true" align="center" class="alert alert-success"><h4>[nuxt-01] : routage et navigation</h4></div> <div>
<div class="row">
<div class="col-2">
<ul class="nav flex-column">
<li class="nav-item">
<a href="/nuxt-01/" target="_self" class="nav-link">
Home
</a>
</li>
<li class="nav-item">
<a href="/nuxt-01/page1" target="_self" class="nav-link active nuxt-link-active">
Page 1
</a>
</li>
<li class="nav-item">
<a href="/nuxt-01/page2" target="_self" class="nav-link">
Page 2
</a>
</li>
</ul>
</div> <div class="col-10">
<div role="alert" aria-live="polite" aria-atomic="true" class="alert alert-primary">
Page 1
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>window.__NUXT__ = { layout: "default", data: [{}], error: null, serverRendered: true, logs: [{ date: new Date(1573917721122), args: ["[page1 beforeCreate]", "process.server=", "true", "process.client=", "false", "nombre d'arguments=", "0"], type: "log", level: 2, tag: "" }] };</script>
<script src="/nuxt-01/_nuxt/runtime.js" defer></script>
<script src="/nuxt-01/_nuxt/commons.app.js" defer></script>
<script src="/nuxt-01/_nuxt/vendors.app.js" defer></script>
<script src="/nuxt-01/_nuxt/app.js" defer></script>
</body>
[index] sayfasıyla aynı türde bir sayfa elde edilir, ancak [Page 1] görünümüne ait uyarı (30. satır) görüntülenir. 41-44. satırlarda, istemci kodu sayfa ile birlikte geri gönderilmiştir. Sonuç olarak, URL sayfasını manuel olarak istemek, uygulamayı yeniden başlatmakla aynıdır. Tek fark, görüntülenen sayfanın mutlaka ana sayfa olması gerekmemesi; istenen sayfanın görüntülenmesi söz konusudur. Sayfa alındıktan sonra kontrolü istemci devralır. Kullanıcı aksi yönde bir karar vermedikçe sunucuya artık başvurulmaz.