A progressive React serverside-rendering framework.
Clone or download
Latest commit 98b3026 Dec 29, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci fix ci Aug 12, 2018
docs fix #9 Dec 29, 2018
examples remove dependencies Nov 7, 2018
packages bump version Dec 29, 2018
.gitignore add babel 7 Sep 27, 2018
LICENSE Create LICENSE Aug 4, 2018
README.md Update README.md Dec 3, 2018
lerna.json add serlina-koa Aug 12, 2018
package.json add plugins doc Aug 14, 2018

README.md

logo npm downloads CircleCI

A progressive React serverside-rendering framework.

Motivation

I love using Next.js, but most of my projects need to use our own web server framework while Next.js run it own server. So I begin making a SSR framework (core) that like Next.js but open for server implementation. It does all the building, compiling, rendering-to-string things and give the rest render-to-html things to your own web server.

Of course I know Next.js can custom server and routing, but while Next.js handle the whole http context, I cannot use it in a high layer web framework.

Read the announcing post

Integrations

Quick Start

npm i serlina react react-dom --save

Create a folder structure like:

├── index.js
├── pages
│   └── page1.js
// pages/page1.js

export default () => {
  return <div>Hello Serlina!</div>
}

And implement a most simple http server:

// index.js

const { Serlina } = require('serlina')
const path = require('path')

const http = require('http')

const serlina = new Serlina({
  baseDir: path.resolve(__dirname, './')
})

serlina.prepare()
  .then(() => {
    http.createServer(async (req, res) => {
        res.writeHead(200, { 'Content-Type': 'text/html' })
        if (req.url === '/page1') {
          const rendered = await serlina.render('page1')
          res.write(rendered.body)
        } else {
          res.write('works!')
        }
        res.end()
    }).listen(8090)
  })
  .catch(console.error)

Open http://localhost:8090/page1, you will see the page you wrote in React!

Documentation

Visit Full Doc

Who is using?

Please create an issue or PR to tell us you are using Serlina!

Development

npm run bootstrap

npm test # run test

License

MIT License