Skip to content

Instantly share code, notes, and snippets.

@bekatom
Last active May 19, 2016 13:12
Show Gist options
  • Save bekatom/f16797e0bd17a75d96dd922e816e70bf to your computer and use it in GitHub Desktop.
Save bekatom/f16797e0bd17a75d96dd922e816e70bf to your computer and use it in GitHub Desktop.
React render as service node application
module.exports = {
renderController : require('./renderController.v1.js')
};
/**
* Created by beka on 4/1/16.
*/
'use strict';
var debug = require('debug')('api');
var config = require('../../../config');
require('babel-core/register');
var React = require('react');
var ReactDOMServer = require('react-dom/server');
var path = require('path');
module.exports = {
ping: ping_render,
get_react: get_react,
// test_react: test_react
};
function ping_render(req, res) {
res.ok(null, null, 'API server for render ReactJS is working');
}
// Get React component , VIEW AS SERVICE
function get_react(req, res) {
try {
var view = path.resolve(config.REACT_DIR + '/' + req.params.package_name + "/" + req.params.view_name);
var component = require(view).default;
var props = req.body || null;
res.status(200).send(
ReactDOMServer.renderToString(
React.createElement(component, props)
)
);
} catch (err) {
console.log("ERR : ",err);
debug(err);
res.badRequest(err);
}
}
var renderController = require('./index').renderController;
module.exports = {
'/v1/render' : {
'/ping' : {
all : renderController.ping
},
// render as service only DOM , than we can pass data from PHP or
// from another resource , we can eat React component from other third party resource
'/get/:package_name/:view_name' : {
all : renderController.get_react
},
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment