客户端渲染的应用,简单来说是不是就打包后是静态 html 网页和 css 和 js,然后比如放到一个 web 服务器上就行
服务端渲染的应用,是不是打包后还需要像在本地开发时候一样,还要再怎么启动吗?这里有点不太清楚
1
imn1 2021-05-13 21:01:13 +08:00
服务端只有数据,不需要界面(界面多数是查看服务状态的),开机启动就是了
其实我没搞清楚你想问什么 |
2
id4alex 2021-05-13 21:17:28 +08:00
客户端渲染的主要问题是 SEO 。
我们普通浏览器访问你的页面, 先获取页面代码,再根据页面代码请求接口获取数据,渲染页面。 你可以把爬虫理解成一个不会执行 js 的浏览器。爬虫获取到的页面,就是只有代码的页面,没有具体数据。这就是问题所在了,爬虫认为这个页面没有有价值的信息,通常不会收录。 现在我们需要一个 "程序" 在客户端(第一次)访问页面的时候,在 “程序" 端就把 渲染数据后的页面 直接返回给客户端。 具体示例你可以参考 nuxtjs 的运行方式,你应该就会明白怎么做了。 |
3
zxCoder OP @imn1 其实我也有点乱,发完又整理了一下。。。就是我理解是客户端渲染是页面已经打包好了,用户直接请求该页面,返回,再由 js 去渲染和获取数据之类的,而服务端渲染,是用户请求的时候,这个“前端的服务端”处理后再把完整的页面返回给用户,这里处理是不是还需要通过“后端的服务端”去获取数据呢?
|
4
0bit 2021-05-13 22:02:21 +08:00
主要区别可以理解为,在初次打开时候 HTML 里是否有内容。
一般来说,客户端渲染的时候,加载的 HTML 的 body 里可能只有一个标签,其他就是一些 script 和 style,然后由 JS 代码去生成 DOM/VirtualDOM,浏览器再渲染出来。 而服务端渲染看起来就像服务器里已经有了一个.html 文件直接返回了一样,但是其实是在请求的时候服务端去生成的内容。 |
5
imn1 2021-05-13 22:10:04 +08:00
@zxCoder #3
如果你说的是 xhr 或者表格提交这些,并不是向服务器传整个页面,而是传少量数据,例如用户名、密码,其他不用传,服务端只认这些它预定格式的数据(多余的会舍弃),进行计算,然后把计算结果嵌入预先写好的 html 代码再传给用户端 用游戏举例子可能会简单一点,游戏的画面是不断变化的,但向游戏服务器提交的数据并非整个游戏画面,可能只是玩家操控的角色移动的座标而已,游戏服务器向客户端发送的数据也不是整个游戏画面,而是角色到达的位置经过计算会出现一个什么怪兽的 id 和这个怪兽的座标,客户端接到这两个数据,自然就在地图上找该座标,从预装的材料库找出这个 id 的材料,画到地图座标处,怪兽就出现了,服务端完全不需要理会游戏画面是怎样的 |
7
mxalbert1996 2021-05-13 22:11:11 +08:00 via Android
是否服务端渲染和是否静态没关系,客户端渲染也可以是动态内容。
|
8
0bit 2021-05-14 07:04:33 +08:00 1
@zxCoder 对 PHP 、JSP 等用操作模版,最后返回 HTML 字符串的都可以认为是服务端渲染,而所谓的 Single-page App 反倒是最近 10 多年才流行的东西吧。
而后来发现纯前端渲染存在 SEO 和首次加载慢等问题,就又开始研究出 SSR 技术了,只是现在的 SSR 更多的是指前后端同构架构,一份业务代码,既可以在前端运行也可以在后端运行。 更常见的用法是,第一页的时候从服务端( Node.js )生成 HTML 回来,浏览器渲染完,后续的页面跳转等逻辑,就纯客户端( Browser )进行,这样综合了两种的优点。 |