3.0.2 • Published 3 years ago

mithril-node-render v3.0.2

Weekly downloads
691
License
MIT
Repository
github
Last release
3 years ago

mithril-node-render

Gitter Build Status rethink.js Dependency Status devDependency Status

Use mithril views to render server side

Demo

Usage Example

Installation

npm install mithril-node-render

Usage

// Make Mithril happy
if (!global.window) {
  global.window = global.document = global.requestAnimationFrame = undefined
}

var m = require('mithril')
var render = require('mithril-node-render')

render(m('span', 'huhu')).then(function (html) {
  // html === '<span>huhu</span>'
})

var html = render.sync(m('span', 'huhu'))
// html === '<span>huhu</span>'

Async components

As you see the rendering is asynchronous. It lets you await certain data from within oninit hooks.

var myAsyncComponent = {
  oninit: function (node, waitFor) {
    waitFor(new Promise(function (resolve) {
      node.state.foo = 'bar'
      resolve()
    }))
  },
  view: function (node) {
    return m('div', node.state.foo)
  }
}

render(myAsyncComponent).then(function (html) {
  // html === '<div>bar</div>'
})

Sync rendering

You can also render synchronously. You just don't get the waitFor callback.

var myAsyncComponent = {
  oninit: function (node, waitFor) {
    // waitFor === undefined
    new Promise(function (resolve) {
      node.state.foo = 'bar'
      resolve()
    })
  },
  view: function (node) {
    return m('div', node.state.foo)
  }
}

var html = render.sync(myAsyncComponent)
// html === '<div>bar</div>'

Options

Optionally pass in options as an object: render(component, options).

The following options are supported:

escapeAttribute(value) Default: render.escapeAttribute A filter function for attribute values. Receives value, returns what is printed.

escapeText(value) Default: render.escapeText A filter function for string nodes. Receives value, returns what is printed.

strict Default: false Set this to true to close all empty tags automatically. Default is standard HTML mode where tags like <br> and <meta> are allowed to implicitly close themselves. This should be set to true if you're rendering XML-compatible HTML documents.

xml Default: false Set this to true to render as generic XML instead of (possibly XML-compatible) HTML. Default is HTML mode, where children of void elements are ignored. This implies strict: true.

See also

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

4 years ago

2.3.2

5 years ago

2.3.1

6 years ago

2.3.0

7 years ago

2.2.0

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.1-8

7 years ago

1.0.1-7

7 years ago

1.0.1-6

7 years ago

1.0.1-5

7 years ago

1.0.1-4

7 years ago

1.0.1-3

7 years ago

1.0.1-2

7 years ago

1.0.1-1

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

1.0.1-0

7 years ago

1.0.0

7 years ago

0.5.0

8 years ago

0.4.2

8 years ago

0.4.1

9 years ago

0.4.0

9 years ago

0.3.3

9 years ago

0.3.2

9 years ago

0.3.1

9 years ago

0.3.0

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.8

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago