Server-Side Rendering API
renderToString()
vue/server-rendererdan eksport qilinganTuri
tsfunction renderToString( input: App | VNode, context?: SSRContext ): Promise<string>Misol
jsimport { createSSRApp } from 'vue' import { renderToString } from 'vue/server-renderer' const app = createSSRApp({ data: () => ({ msg: 'hello' }), template: `<div>{{ msg }}</div>` }) ;(async () => { const html = await renderToString(app) console.log(html) })()SSR Context
Siz ixtiyoriy context ob'ektini o'tkazishingiz mumkin, u render paytida qo'shimcha ma'lumotlarni yozib olish uchun ishlatilishi mumkin, masalan Teleports mazmuniga kirish:
jsconst ctx = {} const html = await renderToString(app, ctx) console.log(ctx.teleports) // { '#teleported': 'teleported content' }Bu sahifadagi boshqa ko'p SSR API'lar ham ixtiyoriy ravishda context ob'ektini qabul qiladi. Context ob'ektiga komponent kodi orqali useSSRContext yordamchisi orqali kirish mumkin.
renderToNodeStream()
Kirishni Node.js Readable stream sifatida render qiladi.
vue/server-rendererdan eksport qilinganTuri
tsfunction renderToNodeStream( input: App | VNode, context?: SSRContext ): ReadableMisol
js// Node.js http handler ichida renderToNodeStream(app).pipe(res)Eslatma
Bu metod
vue/server-rendererning ESM buildida qo'llab-quvvatlanmaydi, u Node.js muhitidan ajratilgan. O'rnigapipeToNodeWritableni ishlating.
pipeToNodeWritable()
Mavjud Node.js Writable stream instansiyasiga render qiladi va pipe qiladi.
vue/server-rendererdan eksport qilinganTuri
tsfunction pipeToNodeWritable( input: App | VNode, context: SSRContext = {}, writable: Writable ): voidMisol
js// Node.js http handler ichida pipeToNodeWritable(app, {}, res)
renderToWebStream()
Kirishni Web ReadableStream sifatida render qiladi.
vue/server-rendererdan eksport qilinganTuri
tsfunction renderToWebStream( input: App | VNode, context?: SSRContext ): ReadableStreamMisol
js// ReadableStream qo'llab-quvvatlash mavjud muhitda return new Response(renderToWebStream(app))Eslatma
Global scope'da
ReadableStreamkonstruktorini ochib bermaydigan muhitlarda, o'rnigapipeToWebWritable()ishlatilishi kerak.
pipeToWebWritable()
Mavjud Web WritableStream instansiyasiga render qiladi va pipe qiladi.
vue/server-rendererdan eksport qilinganTuri
tsfunction pipeToWebWritable( input: App | VNode, context: SSRContext = {}, writable: WritableStream ): voidMisol
Bu odatda
TransformStreambilan birgalikda ishlatiladi:js// TransformStream CloudFlare workers kabi muhitlarda mavjud. // Node.js da, TransformStream 'stream/web'dan aniq import qilish kerak const { readable, writable } = new TransformStream() pipeToWebWritable(app, {}, writable) return new Response(readable)
renderToSimpleStream()
Oddiy o'qiladigan interfeys yordamida streaming rejimida kirishni render qiladi.
vue/server-rendererdan eksport qilinganTuri
tsfunction renderToSimpleStream( input: App | VNode, context: SSRContext, options: SimpleReadable ): SimpleReadable interface SimpleReadable { push(content: string | null): void destroy(err: any): void }Misol
jslet res = '' renderToSimpleStream( app, {}, { push(chunk) { if (chunk === null) { // tugadi console(`render complete: ${res}`) } else { res += chunk } }, destroy(err) { // xatolik yuz berdi } } )
useSSRContext()
renderToString() yoki boshqa server render API'lariga o'tkazilgan context ob'ektini olish uchun ishlatiladigan runtime API.
Turi
tsfunction useSSRContext<T = Record<string, any>>(): T | undefinedMisol
Olingan context yakuniy HTMLni render qilish uchun kerakli ma'lumotlarni biriktirish uchun ishlatilishi mumkin (masalan. head metadata).
vue<script setup> import { useSSRContext } from 'vue' // faqat SSR paytida chaqirilishiga ishonch hosil qiling // https://vitejs.dev/guide/ssr.html#conditional-logic if (import.meta.env.SSR) { const ctx = useSSRContext() // ...contextga xususiyatlarni biriktirish } </script>
data-allow-mismatch
hydration mismatch ogohlantirishlarini bostirish uchun ishlatilishi mumkin bo'lgan maxsus atribut.
Misol
html<div data-allow-mismatch="text">{{ data.toLocaleString() }}</div>Qiymat ruxsat etilgan nomuvofiqlikni ma'lum turga cheklashi mumkin. Ruxsat etilgan qiymatlar:
textchildren(faqat to'g'ridan-to'g'ri farzandlar uchun nomuvofiqlikka ruxsat beradi)classstyleattribute
Agar qiymat taqdim etilmagan bo'lsa, barcha turdagi nomuvofiqliklarga ruxsat beriladi.