Latest Socket ResearchMalicious Chrome Extension Performs Hidden Affiliate Hijacking.Details
Socket
Book a DemoInstallSign in
Socket

vue-ssr-html-stream

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-ssr-html-stream

Transform stream to simplify Vue SSR streaming

latest
Source
npmnpm
Version
2.2.0
Version published
Maintainers
1
Created
Source

vue-ssr-html-stream Build Status

Note: this package is used internally by vue-server-renderer >= 2.2.0 via the template option.

Usage

const HTMLStream = require('vue-ssr-html-stream')

const htmlStream = new HTMLStream({
  template, // string
  context, // ?Object
  outletPlaceholder // ?string, defaults to <!--vue-ssr-outlet-->
})

// pipe it
renderStream
  .pipe(htmlStream)
  .pipe(responseStream)
  • The template option is a string of the HTML page template. It must contain a special string which serves as the placeholder for your app's server-rendered content. The default placeholder string is <!--vue-ssr-outlet--> - you can configure it with the outletPlaceholder option.

  • The context option should be the same context object passed to bundleRenderer.renderToStream(). The transform will check for a few special properties on the context when the source render stream starts emitting data:

    • context.head: any head markup that should be injected into the head of the page.

    • context.styles: any inline CSS that should be injected into the head of the page. Note that vue-loader 10.2.0+ (which uses vue-style-loader 2.0) will automatically populate this property with styles used in rendered components.

    • context.state: initial Vuex store state that should be inlined in the page as window.__INITIAL_STATE__. The inlined JSON is automatically sanitized with serialize-javascript.

beforeStart event

The stream emits a special event: beforeStart. An example use case would be generating context.head using info injected by vue-meta:

htmlStream.on('beforeStart', () => {
  const meta = context.meta.inject()
  context.head = (context.head || '') + meta.title.text()
})

Example usage with Express

const HTMLStream = require('vue-ssr-html-stream')
const template = require('fs').readFileSync('./index.html', 'utf-8')
const renderer = require('vue-server-renderer').createBundleRenderer(bundleCode)

app.get('*', (req, res) => {
  const context = { url: req.url }

  renderer.renderToStream(context)
    .on('error', err => {
      // handle render stream error before piping to the transform
    })
    .pipe(new HTMLStream({ context, template }))
    .pipe(res)
})

Keywords

vue

FAQs

Package last updated on 18 Mar 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts