Node.js 如何编译ReactJS以在带有命令行参数的服务器上使用?

Node.js 如何编译ReactJS以在带有命令行参数的服务器上使用?,node.js,reactjs,gulp,browserify,react-jsx,Node.js,Reactjs,Gulp,Browserify,React Jsx,我决定试试ReactJS。除此之外,我还决定使用Gulp将.jsx编译为.js,这也是第一次 我可以编译它没有问题的客户端使用browserify。这是我的吞咽任务: browserify("./scripts/main.jsx") .transform( babelify.configure({ presets: ["react"] })) .bundle() .pipe(source('bundle.js')) .pipe(gulp.dest('./scrip

我决定试试ReactJS。除此之外,我还决定使用Gulp将.jsx编译为.js,这也是第一次

我可以编译它没有问题的客户端使用browserify。这是我的吞咽任务:

browserify("./scripts/main.jsx")
.transform(
    babelify.configure({
        presets: ["react"]
    }))
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./scripts/'));
但由于我使用PHP生成数据,所以需要将这些数据发送到节点。如果我使用browserify,它将阻止我在节点中使用process.argv。我可以将数据保存到文件并在节点中读取该文件,因此我不需要将整个状态传递给节点,但我仍然需要传递标识参数,以便节点知道要加载哪个文件


我应该使用什么来代替browserify?

如果需要将React模块编译到es5以在服务器上使用,请使用Babel本身

可以帮助读取和写入文件的模块如下:


您是否考虑过从数据库发布和获取信息?

以下是我的解决方法:

我已经了解到,您可以使用browserify创建独立的捆绑包,因此我将所需的所有服务器代码(组件+渲染)编译为独立捆绑包。然后我创建了一个小节点脚本,它只负责读取参数、加载数据并将其发送到渲染代码

我不确定这是否是一个正确的方法,但它是有效的

以下是“设置”脚本的代码:


这样,我只需要部署两个文件,我仍然可以很容易地将JSX编译成JS.< /P>我确实考虑了DB,但是由于我需要做更多的事情(例如猜测用户的区域),而且我已经在PHP中完成了,所以我不想在两个地方有这个逻辑(我也不想完全切换到节点)。有了Babel,我可以编写规则,让它像browserify一样将所有文件捆绑在一起吗?

var fs = require('fs');
var Server = require('./server.js');

if (process.argv[2]) {
    region = process.argv[2].toLowerCase().replace(/[^a-z0-9]/, '');

    if (region != '') {
        var data = JSON.parse(fs.readFileSync(__dirname + '/../tmp/' + region + '.json', 'utf8'));

        console.log(Server.render(data.deal, data.region));
    }
}