1
zythum 2015-09-28 17:50:35 +08:00
有.net, php, rail, python 版本. https://github.com/reactjs
|
3
YuJianrong 2015-09-28 18:21:29 +08:00
@geew react 只是一段纯 JS ,只要能跑 JS 的环境都可以做渲染,现在什么环境跑一段 JS 都很简单啊……
|
5
sox 2015-09-28 19:12:34 +08:00
服务器端渲染也就只是把 component 的初始状态渲染一遍
谁知道除了不用 /#/ 之类的 hash route 还有什么好处 |
7
zythum 2015-09-29 11:56:05 +08:00 1
我看了你的 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 做个页面让他爬。没必要这么折腾。 |
8
YuJianrong 2015-09-29 11:59:59 +08:00
@zythum “现在的爬虫大部分都有处理 js 的能力”——求引用,这个倒是很感兴趣,不知道爬虫怎么做的(在虚拟机沙盒里跑 JS 然后超时就杀掉?)
|
9
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 |
10
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 |
11
WildCat 2015-09-29 12:46:15 +08:00 via iPhone 3
@geew React 只是 view 层,如果要写出完整 app ,需要搭配 flux/redux/relay(graphql) ,如果时间紧迫,请慎重考虑。
Server render 在大多数情况下都还是需要 JavaScript 运行时的,你可以把用 node.js 写的 server render 模块用 Python 调用。 但是据我了解,目前还没有这方面的 best practice. 大多数都是放弃了 SEO |
12
ysmood 2015-09-29 12:51:28 +08:00
其实我现在日常生活很少用到搜索引擎了,只有工作时的专业知识需要。如果以后人们不用通用搜索了,只用类似网站内部搜索, SEO 还有意义吗?
|
13
zythum 2015-09-29 12:56:12 +08:00
@joyee
我不是说了么,真不行就专为 seo 做个页面让他爬。 但是如果是个小东西,如 po 主说的小需求,那么没有必要专门做 seo ,爬虫会去想方设法的抓取内容。 如果要专业做 seo ,那么还有很多要做的,链接评分加权什么的一堆一堆的东西呢。 |
14
zythum 2015-09-29 13:04:07 +08:00
|
16
ysmood 2015-09-29 13:58:43 +08:00
@zythum 再比如上知乎之类的,百度知道什么的,其实很多问题别人都问过了。即便是生活日常很多都被这些解决了,比如什么日子穿什么衣服,上去问问直接就有人问过了。
|
17
zythum 2015-09-29 14:12:38 +08:00
良辰,必重谢.
|
19
geew OP |
23
YuJianrong 2015-09-29 14:33:42 +08:00
|
24
WildCat 2015-09-29 15:07:02 +08:00 via iPhone
@geew 我的建议是:用你熟悉的。 React 学习成本略高。
自己只是个学生,只用过 Angular 和 react 。 React 的理念和社区反应不错,但是有人说性能可能不见得比其他的 virtual dom 好。因为不打算深究,所以就选个人气高的吧。 |
25
zythum 2015-09-29 15:17:46 +08:00
@YuJianrong
@joyee 朱一的意思是技术上是可行的。但是具体搜索引擎怎么做,是黑盒我们永远不知道。 所以说了么。 如果要做 seo ,最简单就专门给 seo 做个页面让他抓。毕竟 server rendering 要配合起来还是比较麻烦的。 如果不做 seo ,搜索引擎也会抓到一些内容的,爬虫没有那么笨。毕竟做爬虫的都是专家。 @geew 喜欢啥用啥。 backbone 和 react 也能配合使用。 |
26
geew OP @WildCat 对于 react 怎么说呢 感觉它是要全局管理页面上的一切元素 包括元素的生成 以及各种交互等等 就是它要产生 html 的 因此只有在页面加载完毕之后它才能发挥作用 总会有一点的延迟吧 相对而言 backbone 个人感觉更好一些 毕竟 backbone 可以对页面上已经存在的 dom 进行管理 你只要写好对应的交互就行 所以 react 写 web 端的优势在哪 我倒是看不懂
|
28
chloerei 2015-09-29 15:26:09 +08:00
前端阵营的特洛伊木马。
|
29
WildCat 2015-09-29 15:37:44 +08:00 via iPhone
@geew 没有 template engine ,只有 component , UI 构建更加细化,写复杂界面更容易。
现在还有一个重量级优势: React Native |
30
WildCat 2015-09-29 15:41:53 +08:00 via iPhone
@zythum 我觉得朱一大大说的专门做页面让爬虫爬是最好而且是最简单的方案( Server Render 自己实现起来真的不容易),但是之前在坛子里有人说这样算作弊。
|
31
ysmood 2015-09-29 15:54:32 +08:00
@joyee 注意我说的是大部分,不是说全部。如果未来一个普通人一天 100 次搜索,只有 1 次需要用到传统的搜索引擎,那么我们是不是能说只需要投入 1%的精力去处理 SEO 呢?而且这 1%的搜索相较于站内搜索往往效率更低,搜索很容易包含更多垃圾信息。
|
32
zythum 2015-09-29 15:59:52 +08:00 1
@WildCat 如果你认为通过 useragent 判断是否是爬虫是作弊的话。你可以用<noscript>标签判断让禁用了脚本的用户和爬虫看到的一样,总不算作弊了吧。
|
34
Paranoid 2015-09-29 16:54:42 +08:00 1
### react 要解决的是问题是高效的 DOM 操作!!!###
所以 1. 不一样需要 react 呀,看实际情况,如果这是一个联系我们的页面,用啥 逗逼 的 react ? 2. 服务端你真的需要么??? 3. RestFul API + react 视图组件 不过 react 多视图组件,官方是引入了 flux 。至于如果你又引入了其他的东西,学习曲线很高。 现阶段玩玩就可以了,单页面可以考虑,如果整个项目用一个单页面入口(还要引路路由==), AngularJS (我还有数据绑定呢)放哪呢? |
35
itbdw 2017-07-23 14:06:29 +08:00
如果是为了解决 seo 问题,即百度、搜狗、360 全部对 js 支持基本为 0,可以试试针对爬虫提供服务器渲染,这样对正常业务没有任何影响,希望能帮助困惑在 JavaScript 生成的网站收录不佳的同行,https://github.com/itbdw/server-render-javascript
|