https://www.cnblogs.com/tiedaweishao/p/6644267.html
里面的关键语句为:
"
我们并没有多余的dom元素,就只有一个div,那么页面要怎么呈现呢?答案是js append,对,下面的那些js会负责innerHTML。而js是由浏览器解释执行的,所以呢,我们称之为浏览器渲染,这有几个致命的缺点:
- js放在dom结尾,如果js文件过大,那么必然造成页面阻塞。用户体验明显不好(这也是我我在公司反复被产品逼问的事情)
- 不利于SEO
- 客户端运行在老的JavaScript引擎上
"
vue 浏览器与服务器渲染:
“ssr 有两个入口文件,client.js 和 server.js, 都包含了应用代码,webpack 通过两个入口文件分别打包成给服务端用的 server bundle 和给客户端用的 client bundle. 当服务器接收到了来自客户端的请求之后,会创建一个渲染器 bundleRenderer,这个 bundleRenderer 会读取上面生成的 server bundle 文件,并且执行它的代码, 然后发送一个生成好的 html 到浏览器,等到客户端加载了 client bundle 之后,会和服务端生成的DOM 进行 Hydration(判断这个DOM 和自己即将生成的DOM 是否相同,如果相同就将客户端的vue实例挂载到这个DOM上, 否则会提示警告)。
”
然而,它其实和其他的 SPA (Single Page Application 单页应用)来说没有任何的区别,最终是通过前端的路由去控制页面的显示。单页应用虽然在交互体验上比传统多页更友好,但它也有一个天生的缺陷,就是对搜索引擎不友好,不利于爬虫爬取数据。
正所谓成也萧何,败也萧何。
讲人话就是,搜索引擎搜不到我的博客啊~哭...
那什么对搜索引擎和爬虫友好的哪?答案就是静态页,而非浏览器渲染,这就需要服务器直接渲染,也就 SSR(Server Side Render)。
https://ssr.vuejs.org/zh/
爬虫面临的三个问题, 你知道吗?
https://www.jianshu.com/p/636966f04408
“其实,总结一些,这些弊端归根结底,是因为爬虫程序并非是浏览器,没有javascript解析引擎所致。针对这个问题,目前主要的应对策略就是在爬虫中引入Javascript 引擎,如PhantomJS,但是又有着明显的弊端,如服务器同时有多个爬取任务时,资源占用太大。”
我的理解:
express, 前端无论是用ejs,jade,都是SSR,因为在服务器端解释好了一切,到浏览器,只显示了html元素;
而每一次页面的更新,都需要更新整个页面,但这个时候,对前端要求高的情况下,需要用ajax进行局部的刷新,这个是SEO不喜欢的,但没有办法,不能十全十美。
而用webpack开发的过程中,因为有很多dev的中间件,使得开发过程中,所见即所得,一切的变更都会立马显示在页面上,这些都是这些dev中间件的功能 ,但最后他生成的产物 是一堆:js! 这就直接将这模块,变成了一个SPA,即由浏览器来解释,这对于SEO以及前端的体验也是不好的。
“ 爬虫程序并非是浏览器,没有javascript解析引擎所致”直接决定了通过打包出来的js所形成的SPA,不能被爬虫所SEO。
KOA与express的区别,是架构上的调整,与这个前后端 没有太大的关系。
jsp ,thymleaf ,都是类似于ejs,典型的SSR使用。