我正在寻找一个简单的解决方案,当我的项目在共享主机上时,它没有安装nodejs,我想使用react js
(seo friendly)。
我自己想出了一个解决方案:在开发时使用nodeJs
生成静态标记并使用laravel blade
语法,这样我就可以从数据库中获取数据。
var require = require('react');
var fs = require('fs');
var Welcome = require('./react/welcome.js');
var path = __filename.split('\/');
// rendering the component to string
// passing `props` with blade syntax
var reactComponent = React.renderComponentToString(Welcome( {name:"{{$name}}"} ));
// get the name of `jsx` file
filename = path[path.length - 1].split('.')[0];
// rendering the component on the client side
reactComponent += '<script>' +
"React.renderComponent(Welcome({name:'{{$name}}'}), document.getElementById('welcome'));"+
'</script>';
fs.writeFile('app/views/react/'+filename+'.blade.php',
reactComponent,
function (err) {
if(err) throw err;
console.log('All down!');
}
);
从这里开始我只需创建一个master
模板并使用@include('react.welcome')
来获取模拟效果。
我猜这是个坏主意,但为什么呢?
如果不是那么愚蠢,这会给我带来任何性能提升吗?
答案 0 :(得分:0)
这似乎容易受到XSS(跨站脚本)的攻击。通常,通过连接字符串生成JS或任何代码是个坏主意,因为你失去了解释器/编译器/ linter /等提供运行前的安全性和错误处理。
例如,除了你的“错误”之外,你将无法以任何有意义的方式调试你的组件。回调。
此外,随着您添加越来越多的代码,此模式将很快变得难以处理。