使用Swig模板,React和Express进行服务器端渲染

时间:2016-02-26 09:33:53

标签: express reactjs render server-side swig-template

这是我用Express设置的路由器:

var r = require('rethinkdb');
var quotes = require('../model/quotes');
var user = require('../model/users');
var auth = require('../lib/auth');
var React=require('react');
var ReactDOMServer=require('react-dom/server')
var Homepage=React.createFactory(require('../component/index.js').Homepage);

module.exports = function(app, passport) {

    app.get('/', function(req, res) {
        if (req.user) {
            res.redirect('/dashboard');
        } else {
            var HomepageHTML=ReactDOMServer.renderToString(Homepage({}));
            res.render('index',{homepage:HomepageHTML});
        }
    });

}

index.html视图中,用Swig模板引擎编写:

{% extends 'main.html' %}

{% block title %}Homepage{% endblock %}

{% block body %}
    {{homepage}}
{% endblock %}

它使用标签呈现字符串,而不是使用React创建的组件,现在我应该怎么做才能使Swig呈现我写的组件?

1 个答案:

答案 0 :(得分:0)

你试过{{ homepage.toString() }}吗?我认为这将解决问题。