pelo

⚡️ Lightning fast server-side rendering with tagged template literals

  • Owner: shuhei/pelo
  • Platform:
  • License::
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

pelo

Lightning fast server-side rendering with tagged template literals

A tiny library that enables lightning fast server-side rendering with hyperx-like libraries such as bel, yo-yo and choo/html. It replaces the tag function of those libraries and just renders string without creating intermediate objects.

Installing

npm install pelo

Usage

ssr.js: Call pelo.replace(moduleId) before you require any view module, bel in this case.

const pelo = require('pelo')
pelo.replace('bel')
const view = require('./view')

const renderedString = view('pelo').toString()

view.js: You don't need to change your view files at all. You can use them for client-side rendering and server-side rendering.

const html = require('bel')

module.exports = function helloView(name) {
  return html`<p>Hello, ${name}</p>`
}

Benchmark

Rendering a simple view 10,000 times:

node benchmark.js
```, tag, time (ms), ----, ---------, pelo, 219.093, bel, 1982.610, ## Motivation

Server-side rendering with modern JavaScript frameworks is slow. In general, they focus on the client-side, and generate virtual/real DOMs for efficient DOM updates from templates. However, this approach is a bit overkill when we focus on server-side rendering. Because the templates already look like HTML, it should be faster if they directly render HTML strings without creating intermediate object representations.

With [`bel`](https://github.com/shama/bel), we can write HTML with tagged template literals and use them to create declarative views on browser. If we can use the same template also for directly generating HTML string on server-side, it will be a huge win.

## Thanks

Thanks [@yoshuawuyts](https://github.com/yoshuawuyts) for lots of advice!

Main metrics

Overview
Name With Ownershuhei/pelo
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:
所有者活动
Created At2017-04-23 20:59:48
Pushed At2018-01-27 12:39:31
Last Commit At2018-01-27 13:39:18
Release Count6
Last Release Namev0.1.0 (Posted on 2018-01-27 13:36:44)
First Release Namev0.0.1 (Posted on 2017-04-24 23:51:21)
用户参与
Stargazers Count147
Watchers Count3
Fork Count16
Commits Count41
Has Issues Enabled
Issues Count12
Issue Open Count4
Pull Requests Count6
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private