腾讯这个网页刷新技术怎么实现的?

2021-06-02 09:58:37 +08:00
 balabalaguguji

请看: https://work.weixin.qq.com/api/doc/90001/90144/92388

切换文档时顶部和左边的菜单都不会刷新,只有文档内容区域刷新了,表现很像 vue 的单页应用,局部刷新内容。

但是右键查看网页源码又可以看到所有的内容,这样对搜索引擎就很友好。

这种可以做到局部刷新,但是又可以查看到源码的是怎么实现的?有人知道吗?

另外我看他切换文档时接口请求回来的数据有 html 的,有 md 格式的,还有 text 格式的,这是为什么

10620 次点击
所在节点    程序员
55 条回复
mekingname
2021-06-02 10:29:32 +08:00
1. 当你直接访问任何一个 URL 的时候,它都会直接给出后端渲染的完整页面
2. 当你在网页里面点击某个连接的时候,它通过 Ajax 请求增加的 html 代码并替换现有的部分。

而查看源代码,`view-source:网址`这种形式,本质上还是会发起新的请求,所以这里对应的`网址`会使用后端渲染的页面。于是就会给你造成这种错觉。

有一种很简单的办法来证明我所说的:你首先访问任何一个页面,例如: https://work.weixin.qq.com/api/doc/90001/90144/92392
然后,复制里面一段文字。

然后,你再单独访问另外一个页面,例如: https://work.weixin.qq.com/api/doc/90001/90144/92394 你可以看到,如果你查看这后一个页面的源代码,你是无法找到前一个页面的文字的。这就说明只有你当前直接输入网址访问的这个页面是后端渲染,你通过点击连接打开的其它页面是异步加载。
balabalaguguji
2021-06-02 10:29:47 +08:00
@akatquas #18 感谢认真的分析
xz410236056
2021-06-02 10:38:40 +08:00
hexo 博客用的 Pjax
C603H6r18Q1mSP9N
2021-06-02 10:48:53 +08:00
点击菜单有 ajax 请求啊。。。就是一个简单的 ajax 而已
myCupOfTea
2021-06-02 10:49:09 +08:00
ssr+csr 都是这个效果
比如 react 这边的 Nextjs
我估计 vue 的 Nust.js 应该也差不多
Kininaru
2021-06-02 10:49:36 +08:00
服务端渲染。点了另一篇文章,浏览器发了个请求,能看出来服务端把渲染好的内容用 json 返回过来了
![请求]( https://my.files.chromium.link/images/%7DRR~U0BY0H(H7@2@JJ4I[LP.png)
wowbaby
2021-06-02 10:51:28 +08:00
它这个是 ajax + history.pushState(),而且每个页面应该是生成的静态页面
yunyuyuan
2021-06-02 10:57:47 +08:00
就是 pjax 的效果。ajax 请求数据或者网页,处理后直接插到 innerHTML,然后 pushState 修改 url,偷樑换柱。
balabalaguguji
2021-06-02 10:57:54 +08:00
@xz410236056 #23 感谢,看了下,确实好像是效果上是这类东西,但是腾讯这个没用到你这个库
um1ng
2021-06-02 11:22:55 +08:00
Next.js or Nuxt.js
mscb
2021-06-02 11:25:27 +08:00
带服务端渲染功能的单页面程序
balabalaguguji
2021-06-02 11:25:46 +08:00
@mekingname #21 嗯,懂了,感谢
luqingliang
2021-06-02 11:26:39 +08:00
经典 vue
balabalaguguji
2021-06-02 11:26:49 +08:00
@AoEiuV020 #13 感谢,之前还以为查看源码是不会重新请求的,懂了
cw2k13as
2021-06-02 11:27:26 +08:00
看了下这个网站就是拿 vue 写的,如果说搜索引擎可以搜索就是用了 ssr
balabalaguguji
2021-06-02 11:28:35 +08:00
@eason1874 #15 是这样!感谢,学习到了。
balabalaguguji
2021-06-02 11:29:52 +08:00
@wowbaby #27 嗯,是的
balabalaguguji
2021-06-02 11:30:15 +08:00
@yunyuyuan #28 嗯,已经懂了,是这样的
lscho
2021-06-02 11:33:52 +08:00
这随便用哪种技术都可以实现,用 jquery 都可以。

但看腾讯这个,就是简单的服务端渲染。首次加载的话,整个页面都渲染。用户点击的话,只渲染文档区域,然后修改 url 就行了。
jkmf
2021-06-02 11:38:54 +08:00
chrome 装个 wappalyzer 插件就可以看到用的什么技术栈了

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

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

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

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

© 2021 V2EX