mithril-node-render

    3.0.2 • Public • Published

    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

    Install

    npm i mithril-node-render

    DownloadsWeekly Downloads

    1,709

    Version

    3.0.2

    License

    MIT

    Unpacked Size

    31.7 kB

    Total Files

    15

    Last publish

    Collaborators

    • stephan.hoyer