react 号称可以服务端渲染 这个服务端一定要是 nodejs 写的么

2015-09-28 17:41:47 +08:00
 geew
找了好多资料 没看到别的后端实现的

找到一个 https://facebook.github.io/react/blog/2013/08/19/use-react-and-jsx-in-python-applications.html
有人用过吗 谈谈经验咯
19323 次点击
所在节点    React
35 条回复
zythum
2015-09-28 17:50:35 +08:00
有.net, php, rail, python 版本. https://github.com/reactjs
geew
2015-09-28 17:56:50 +08:00
@zythum 额 这货只是 jsx 转 js 的么
YuJianrong
2015-09-28 18:21:29 +08:00
@geew react 只是一段纯 JS ,只要能跑 JS 的环境都可以做渲染,现在什么环境跑一段 JS 都很简单啊……
zythum
2015-09-28 18:31:12 +08:00
@geew 有些用 server render 的部分。 php , rail 有
sox
2015-09-28 19:12:34 +08:00
服务器端渲染也就只是把 component 的初始状态渲染一遍

谁知道除了不用 /#/ 之类的 hash route 还有什么好处
joyee
2015-09-28 20:28:28 +08:00
@sox SEO
zythum
2015-09-29 11:56:05 +08:00
我看了你的 append 。

1. 你的理解些许问题。你直接输出的 html 是没法和 react 的 js component 直接绑定的。应为 react 内部是 vdom 方式做对比然后改变页面的。你看见用 react 生成的 html 上面有很多的 id 没有。哪些都是用来定位和 js component 的关系的。你自己生成的肯定没有。所谓 server rendering ,就是在后端做这个事情。

2. 因为前端是 js 。所以后端也用 js 的话这个 component 是可以重用的。不然就只能在 py 里面跑个 v8.然后 renderToString 把 html 搞出来然后再拼进模版里。

3. 我没有用过 py 。但是按照 2 的思路应该是可以的。

ps>> 其实问题在于为啥你一定要做 server rendering. seo 的话现在的爬虫大部分都有处理 js 的能力。真不行就专为 seo 做个页面让他爬。没必要这么折腾。
YuJianrong
2015-09-29 11:59:59 +08:00
@zythum “现在的爬虫大部分都有处理 js 的能力”——求引用,这个倒是很感兴趣,不知道爬虫怎么做的(在虚拟机沙盒里跑 JS 然后超时就杀掉?)
zythum
2015-09-29 12:09:02 +08:00
@YuJianrong 现在那么多网站都是 angular 什么 mvvm 的。爬虫肯定去想方设法的抓取内容。 js 虚拟机也很很多了。自己用的话 casperjs, phantomjs 什么的都可以。只是慢一点,做批量什么的有些问题, google baidu 专门做搜索引擎的肯定有他们自己的解决方案。不能说全部能够爬到。但是爬到七七八八总是可以的。
转帖一些内容吧:
http://blog.sina.com.cn/s/blog_6b61ed4b0100lfu1.html
http://www.pythontab.com/html/2014/pythonweb_0311/712.html
joyee
2015-09-29 12:40:16 +08:00
@zythum 不是爬虫能爬 JS 生成的内容(何况这个不是一定的),网站就都愿意放弃做这个 SEO 的,不同搜索引擎有不同的策略,而且策略会变,这种东西能优化一点是一点,而且谁知道是不是 JS 生成内容也会影响排名呢(较差的 accesibility )?何况很多大站直到今天都还会考虑用户禁用了 JS 情况下的问题,纯 JS 生成的页面会给出一片空白而不是简单的功能+提示。另外不是所有 screen reader 都能正确执行 JS 生成内容,大站 /有情怀的网站多少要考虑一下这个。

就 Google 而言,他们确实会爬 JS 生成的内容,只不过未必所有网站都愿意冒这个风险。
测试: http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157
Google 的指南: https://developers.google.com/webmasters/ajax-crawling/docs/learn-more
WildCat
2015-09-29 12:46:15 +08:00
@geew React 只是 view 层,如果要写出完整 app ,需要搭配 flux/redux/relay(graphql) ,如果时间紧迫,请慎重考虑。
Server render 在大多数情况下都还是需要 JavaScript 运行时的,你可以把用 node.js 写的 server render 模块用 Python 调用。 但是据我了解,目前还没有这方面的 best practice. 大多数都是放弃了 SEO
ysmood
2015-09-29 12:51:28 +08:00
其实我现在日常生活很少用到搜索引擎了,只有工作时的专业知识需要。如果以后人们不用通用搜索了,只用类似网站内部搜索, SEO 还有意义吗?
zythum
2015-09-29 12:56:12 +08:00
@joyee
我不是说了么,真不行就专为 seo 做个页面让他爬。
但是如果是个小东西,如 po 主说的小需求,那么没有必要专门做 seo ,爬虫会去想方设法的抓取内容。

如果要专业做 seo ,那么还有很多要做的,链接评分加权什么的一堆一堆的东西呢。
zythum
2015-09-29 13:04:07 +08:00
@ysmood 还是用得到的。比如我问

>> 叶良辰 是谁 <<<

如果没有搜索引擎还是挺费劲的. 你去哪个网站的内部找呢。 233333333

我跑题了。
ysmood
2015-09-29 13:55:42 +08:00
@zythum 这种看上去就像某种热门人物的,上微博之类的 sns 上搜索下不行吗?
ysmood
2015-09-29 13:58:43 +08:00
@zythum 再比如上知乎之类的,百度知道什么的,其实很多问题别人都问过了。即便是生活日常很多都被这些解决了,比如什么日子穿什么衣服,上去问问直接就有人问过了。
zythum
2015-09-29 14:12:38 +08:00
良辰,必重谢.
joyee
2015-09-29 14:22:25 +08:00
@ysmood 因为还会有新网站出现啊 0v0 而且不是所有网站都有(能用的)站内搜索(对 说的就是知乎……
geew
2015-09-29 14:26:54 +08:00
@zythum
@WildCat 哈哈 已感谢 顺便再问下 目前单页应用 交互比较多的那种 前端用什么框架实现比较好呢 主要是性能方面 以前一直用 backbone 现在打算用 react 试一下 别的还没用过
joyee
2015-09-29 14:28:09 +08:00
@zythum 我主要是觉得,你不能假设爬虫真的对你那么上心……人家是个黑盒子,还是有多种型号的黑盒子 2333

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/224304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX