Vue Js ile Express Kullanarak Server Side Rendering (SSR) Nasıl Yapılır ?

Vue Js  ile  Express Kullanarak Server Side Rendering (SSR) Nasıl Yapılır ?

Client Side Rendering (CSR) Nedir ?

Client side rendering de sunucumuz tarayıcıya basit düz bir html sayfası döner. Daha sonra sunucumuzun döndüğü html sayfası kullanıcının tarayıcısında javascript ile derlenerek anlamlı bir html çıktısı elde edilir. Elde edilen html çıktısıda tarayıcı tarafından derlenerek kullanıcının kullanımına sunulur.


Server Side Rendering (SSR) Nedir ?

Server side rendering de ise ana içerik sunucumuzda derlenir ve tarayıcıya bitmiş bir html sayfası dönülür.


Örnek Uygulama yapalım.

Öncelikle npm kuralım

sudo apt install npm -y

Daha sonra vue-ssr ismiyle klasör oluşturup içerisine girelim.

mkdir vue-ssr
cd vue-ssr

Yeni bir proje oluşturalım.

npm init

vue, express ve Vue Js ile server side rendering yapmak için vue-server-renderer paketlerini kuralım.

npm install vue vue-server-renderer express --save

index.js ismiyle dosya oluşturalım ve içerisine aşağıdaki kodları yerleştirelim.

// Gerekli tanımlamaları yapıyoruz.
const Vue = require('vue')
const server = require('express')()
const renderer = require('vue-server-renderer').createRenderer()

// " * " işareti ile tüm istekleri tek bir yerde topluyoruz.
server.get('*', (req, res) => {
  // Vue tanımlaması yapıyoruz.
  const app = new Vue({
    data: {
      languages: [ 'javascript', 'java', 'python', 'php'],
    },
    template:
    `
        <div>
            <ul>
                <li v-for="(language, index) in languages" v-bind:key="index">{{ language }}</li>
            </ul>
        </div>
    `
  })
  // renderToString fonksiyonuna tanımladığımız vue yu gönderiyoruz.
  renderer.renderToString(app, (err, html) => {
    // renderToString fonkisyonundan dönen html verisini ekrana yazdırıyoruz.
    res.end(`
      <!DOCTYPE html>
      <html lang="en">
        <head><title>Vue Js - Server Side Rendering(SSR) Örneği</title></head>
        <body>${html}</body>
      </html>
    `)
  })
})
// 8000 portundan websitemizi yayınlıyoruz.
server.listen(8000)

Yukarıdaki kodları biraz açıklamak gerekirse. Npm ile yüklediğimiz paketleri kullanabilmek için gerekli tanımlamaları yapıyoruz. Express ile tüm istekleri tek bir yerde topluyoruz (yönlendiriyoruz). İçerisinde programlama dillerini içeren bir dizi barındıran ve bu diziyi ekrana yazdıran basit bir vue tanımlaması yapıyoruz. vue-server-renderer paketi içerisinde yer alan renderToString fonksiyonuna tanımladığımız vue örneğini (instance) ve isimsiz bir fonksiyon gönderiyoruz. renderToString fonksiyonu gönderdiğimiz Vue örneğini (instance) renderlayıp bize html dönüyor. Dönen html verisini ekrana yazdırıyoruz ve 8000 portundan websitemizi yayınlıyoruz.

Okadar anlattık şimdi index.js dosyasını çalıştırıp sonucu görelim.

node index.js

Tarayıcımızdan http://localhost:8000/ adresine gidelim ve kaynak kodunu görüntülüyelim. Vuejs server side rendering örneği

Kaynak kodunda data-server-rendered="true" etiketini görüyorsak Vue JS ile server side rendering işlemimiz başarı ile gerçekleşmiştir.

Kaynak : vue js ssr guide

8 Nisan 2019
© 2019 Oğuzcan Demircan All Rights Reserved