Javascript 传递Node.js数据以作出反应
我正在重构一个组件的核心以响应代码 之前,我使用Jade编译它,并将i18n文本从Jade全局文件直接传递到HTML。大概是这样的:Javascript 传递Node.js数据以作出反应,javascript,node.js,express,reactjs,Javascript,Node.js,Express,Reactjs,我正在重构一个组件的核心以响应代码 之前,我使用Jade编译它,并将i18n文本从Jade全局文件直接传递到HTML。大概是这样的: // in Node.js / Express const text = require('./assets/texts.json'); app.get('/route', (req, res) => { render('page', text); }); 在翡翠中,我会: h3= text.en.title p= text.en.subtitle
// in Node.js / Express
const text = require('./assets/texts.json');
app.get('/route', (req, res) => {
render('page', text);
});
在翡翠中,我会:
h3= text.en.title
p= text.en.subtitle
现在我正在用React做这件事,我想知道如何将数据传递给它
如果我执行consttext=require('./text.json')代码>在react文件中我得到一个错误
如何从节点传递数据,以与我使用Jade时相同的方式作出反应?是否只有在客户端通过Ajax才有可能实现这一点?好的,所以在这个问题上,我选择了我找到的答案
最后,我将文本信息传递到将接收React组件的DOM元素中。所以在《翡翠》中我做到了:
-
var words = ["calculate_price", "price_info", etc etc... ];
var text = words.reduce(function(obj, word){
return (obj[word] = lang[word], obj);
}, {});
#dialog_wrapper(data-text= JSON.stringify(text))
在我安装组件的文件中:
const dialogWrapper = document.getElementById('dialog_wrapper');
const dialogText = JSON.parse(dialogWrapper.dataset.text);
ReactDOM.render(<BookingDialog text={dialogText}/>, dialogWrapper);
您可以使用json loader
,但也许您的问题更多的是关于express?@Daniel_L在这种情况下,所有语言的整个json文件都将通过JavaScript加载到客户端,对吗?我只想在服务器端添加正确的翻译词,以减少客户端加载的数据。我希望我可以在react将要装载的元素中添加一个带有json字符串的数据文本
属性。。。但是想知道是否还有其他更干净的方法。您可以使用另一个脚本,只从json文件导出您需要的内容。听起来,这是您在装载根组件时从服务器获取的内容
componentDidMount() {
console.log(this.props.text); // all here!
}