知乎这种纯前端渲染真的没问题么?

2017-07-03 14:34:30 +08:00
 autoxbc
类似专栏页面这种,body 里就是空标签和 json
https://zhuanlan.zhihu.com/p/26644788

我就不说禁用 js 会怎样了
就是那大几万行的脚本,随便抛出个错误就会导致页面白板
Web 设计第一课,老师说要 "平稳退化,渐进增强"
是不是知乎的高逼格导致他们的前端也很吊?
17697 次点击
所在节点    前端开发
103 条回复
coolzjy
2017-07-04 10:25:10 +08:00
@coolzjy 顺便说一下,虽然没有去看,但生产环境的 js 难道不是始终是一行?
silentsora
2017-07-04 10:42:06 +08:00
直接去知乎提问不好吗,说不定就有官方回答
chemzqm
2017-07-04 10:48:43 +08:00
八成是专栏的前端只会 angular 这种东西,初次加载一大坨的 JS 才能看到文章,要不是知乎的 CDN 给力,估计这帮人早被骂死了吧
zhaoyulee
2017-07-04 11:40:23 +08:00
如果更换 UA 为 googlebot 确实渲染会变
xiaody
2017-07-04 11:50:55 +08:00
专栏会给蜘蛛类的 UA 做完整 server 端渲染 /baidu|google|w3m|pocket|instapaper|bot|crawler|spider/i.test(userAgent) 。
给人类用户的就只有数据,然后在浏览器端渲染。一般用户几乎没有人会去禁用 JS,所以没处理这种情况。
bk201
2017-07-04 12:01:48 +08:00
google 做法真的不能和国内公司比。
Dzinlife
2017-07-04 12:36:19 +08:00
一群人没一个答到点子上的。

知乎这种做法有点类似 BigRender,但又结合了 react 这种现代前端框架。

首先正文内容已在服务端渲染好,但放进了 textarea,这样既可以 SEO,又不会被渲染进 DOM 树阻塞进程影响 js 加载速度。同时放进 textarea 的还有 react 的初始状态。

js 加载执行,react 立即从 textarea 中取得状态数据完成渲染,接管处理各种交互行为。
全程只有 html 和静态文件的下载,不产生 ajax,速度很快。

总结:是个结合了 SEO,首屏加载优化,和组件化开发模式的良好方案。
hantsy
2017-07-04 14:25:12 +08:00
看标题,以为五年前的老帖子浮起来了。
meepo3927
2017-07-04 17:53:32 +08:00
"就是那大几万行的脚本,随便抛出个错误就会导致页面白板 "

这个认识过于粗浅。
前端项目将 js 合并+压缩,是非常常见的,如果哪个项目大型不这么做,那才是真正的灾难。

至于说抛个错误,
如果是语法错误,那知乎的开发工程师可以扣奖金了;
如果是运行时错误,那么无论是否合并 js,影响都是一样的。

总而言之,po 主对前端应该是一知半解,而不是知乎逼格高。
chengluyu
2017-07-04 18:02:52 +08:00
> 我觉得成本驱动是对的,那么知乎这个级别的站,写一个退化规则,要求专栏可以看见文章,问答可以看见问题和答案,需要多少人月?

知乎都六年了,六年前的页面恰恰就是你说的那个样子“专栏可以看见文章,问答可以看见问题和答案”,这不就是“平稳退化”吗?随着这几年的发展,知乎的需求已经不是原来的需求了,也进化成了现在的样子,这不恰恰就是“渐进增强”?

你根本就不懂知乎的需求,以为知乎就是看个答案、读个文章的 CMS 系统,难怪你有这样的想法。
blingbling55555
2017-07-04 20:24:35 +08:00
才发现 chrome 现在左上角禁用开启各种东西都好方便……(跑题
autoxbc
2017-07-04 20:43:20 +08:00
@libook #69
您的方法论是对的。不过就这个例子来说,成本并不高,相信大家是看得出来的。

@tairan2006 #75 , @leewayhsu #76
这里说的是平稳退化。兼容是产品说了算,退化的话前端还有发言权吧,至少我所见的前端都还在研究 UX,并不是纯码农。

@AntiGameZ #78 , @silentsora #82
我怕知乎的开发说我是用 IE6 的乡民,当然 v2 也有人这么说,还是有点意外。退化和兼容 IE6 是没关系的,反应的是开发者是否务实,是否承认设计可能会以非预期的形式展现,并给出合理安排。

@coolzjy #80
服务器端异常,少见而可控;客户端异常,则难以预计。顺便说一下,我说的是格式化展开的行数。

@meepo3927 #89
您脑补过头了,我的话怎么都看不出有批评合并压缩的意思。

@chengluyu #90
您对"平稳退化,渐进增强"这几个字的理解完全不对,这是讲狭义设计思想的,不是广义运营思想。知乎的需求我也不关心,我说的是他们没有满足用户的需求。
chengluyu
2017-07-05 01:57:13 +08:00
@autoxbc 您单纯讨论设计当然没错,可更多的时候设计要按照运营的思路来,毕竟知乎是商业公司,还要忙着用 Live 等产品赚钱。现有的纯前端渲染,恰好可以满足运营思路多变。
chengluyu
2017-07-05 02:00:33 +08:00
@autoxbc 还有一点,我也不认为知乎满足了用户的需求(有些功能的用户体验确实很差),让我做我也会采用更 clean 的方式。
autoxbc
2017-07-05 03:07:21 +08:00
@chengluyu #93
「 @autoxbc 您单纯讨论设计当然没错,可更多的时候设计要按照运营的思路来,毕竟知乎是商业公司,还要忙着用 Live 等产品赚钱。现有的纯前端渲染,恰好可以满足运营思路多变。 」

可能您研究技术思想升华,开始从更高层面考虑,这也是一个角度。

我个人相信看不见的手,尽量避免充盈同理心,避免从大局考虑,专以自己的私心为出发点,这一刻我只是用户,一个看了白板的用户。
SilentDepth
2017-07-05 10:35:34 +08:00
老板不懂 or 不关心这个,程序员卖命写代码不想处理这种很可能带不来利润的需求,所以没有退化、没有基本内容保证、没有……所以这是个很复杂的问题吗?
DOLLOR
2017-07-05 11:00:58 +08:00
虽然我觉得知乎的体验也是超烂的,但是
他们有底气认为禁用 JS 或者使用原始社会的浏览器的人不是目标客户、不能创造价值,他们当然可以拒绝过度“退化”。
autoxbc
2017-07-05 15:27:43 +08:00
@DOLLOR #97
「 虽然我觉得知乎的体验也是超烂的,但是他们有底气认为禁用 JS 或者使用原始社会的浏览器的人不是目标客户、不能创造价值,他们当然可以拒绝过度“退化”。 」

那请问什么是"过度退化"?

Web 的基石是 html css js,强调 内容、样式、行为 分离,现在前端已经发展到只要行为了吗?还把要看内容的需求叫做"过度退化",我真看不懂了。
DOLLOR
2017-07-05 17:48:20 +08:00
@autoxbc

你说关闭 js 浏览网页的用户能占知乎用户群体的多少比例呢?有万分之一么?
站在产品角度,为了不知多少分之一的人再去额外投入资源开发一个 noscript 页面,能带来多少收益?

知乎页面用得是 React 开发的,React 推崇的不是结构、样式、行为分离,而是组件化,React 的 JSX 语法就是在 js 里写 html 和 css,不存在你所谓“只剩行为”的误解。所谓合久必分,分久必合吧。

你不必因为别人的开发理念与你相悖就这么愤慨,也不必如此对空气开炮。
现在前端的技术发展太快太野蛮,技术周期更新短,我说的也不算数,没准再过三年又是一轮全翻新。像 wasm 要是未来真的成功了,估计前端要大洗牌,你说的 web 三大基石就彻底没了。
AntiGameZ
2017-07-05 18:38:24 +08:00
@autoxbc 我觉得务实的首要在于按时交付产品,这包括但不限于解决用户 /公司 /产品经理丢过来的需求或问题。你后面说的合理安排,也可以归到务实中间去。

问题在于,我们都是局外人,没有办法和手段去评估知乎内部怎么看待这个问题(甚至连他们知道不知道我们都不清楚)。我们每个人,既然可以作为知乎的用户,提意见要说法似乎是现阶段我们可以做的唯一的事情。

我打个不恰当的比方,假若就下一个 24 小时,知乎修复了这个问题,那么知乎是逼格高呢还是屌呢?

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

https://tanronggui.xyz/t/372673

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

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

© 2021 V2EX