Have ideas to improve npm?Join in the discussion! »

    generic-server-render

    1.0.2 • Public • Published

    generic-server-render

    Render output html at an url.

    Why?

    Easy to use server-side rendering to aid crawlers better "see" your site

    example: Search engine optimization

    Troubleshooting

    Rendering hangs and the callback is never called with an error or the result? Are you running in a headless environment? If so here's the solution

    For other issues, you can add DEBUG=nightmare*,electron:* as an environment variable for your application and submit the log here.


    Install

    npm i --save generic-server-render

    Up to speed:

    const Renderer = require('generic-server-render');
     
    // Full costumization
    const renderer = new Renderer({
      poolSize: 2,
      width: 1000,
      height: 500,
      agent: 'My Awesome Renderer',
      nightmare: {
        webPreferences: {
          images: false
        },
        show: true,
        openDevTools: {
          mode: 'detach'
        }
      },
      filter: {
        options: {
          urls: ['*']
        },
        fn: function(details, cb) {
          //cancel a specific file
     
          const type = details.resourceType;
          const url = details.url;
          if (url.indexOf('chrome-devtools') === 0) return cb({ cancel: false });
     
          switch (type) {
            case "mainFrame" :
              return cb({ cancel: false });
            case "stylesheet":
              return cb({ cancel: true });
            case "script":
              return cb({ cancel: false });
            case "xhr":
              return cb({ cancel: true });
          }
     
          return cb({ cancel: true });
        }
      }
    });
     
    renderer.render(option, function(err, html) {
      if (err) {
          return console.error(err);
      }
     
      console.log(html[0].replace(/\n/g, "").substr(0, 79) + "");
    })
     

    Options

    New render instance

    [Optional]
        - width {Number} : width of the viewport
        - height {Number} : height of the viewport
        - poolSize {Number} : number of opened browsers
        - nightmare {Object} : extra nightmare options, see [nightmare documentation](https://github.com/segmentio/nightmare)
        - filter {Object} : filter requests, see [nightmare-load-filter documentation](https://github.com/rosshinkley/nightmare-load-filter)
            - options : {Object}
                - urls : String[]
            - fn : {function}
    

    Posting a render job

    [Options]
        - querySelector {String} : query to the the element(s) desired (default is 'html')
        - url {String} : website location
        - wait {String|Number|function} : wait for elemnt / time / function to be ready
        - jsAfter {function} : run a function in the context of the browser
        - jsAfterWait {String|Number|function} : wait for jsAfter for finish (if any)
    
    [Callback]
        - Error / null
        - String[]
    

    License

    Code is licensed under MIT

    Install

    npm i generic-server-render

    DownloadsWeekly Downloads

    3

    Version

    1.0.2

    License

    MIT

    Last publish

    Collaborators

    • avatar