公司的网站重构,要求支持SEO,必须用服务端渲染。听到这个消息的时候,我开始兴奋起来了,由于ssr这个东西出来了这么久可是我尚未亲手实践过,此次借助技术调研这个机会搞一下服务端渲染。php
服务端渲染,顾名思义是将html模版拼接在服务端的模版上,在调用服务的时候,从服务端吐出页面。能够直接在浏览器查看网站源码中看到,页面是否有内容。这两年流行的spa单页面技术,因为数据是异步获取的,爬虫爬不到异步数据,因此SEO不好,服务端渲染的话,请求的内容直接在服务端就渲染好了,因此对提升网站的搜索质量有很大帮助。css
像java的jsp,php的模版都是服务端渲染。可是对于前端工程化来讲,服务端渲染都是在nodejs服务上进行的,网上调研了下经常使用的服务端渲染解决方案,有vue-cli3脚手架搭配使用,有nuxt。各自调研了下,发现nuxt对于我来讲可能更加适合。有专门的脚手架工具,按照指令安装便可,文档也很是友好,模版语法在vue上加了几个新的钩子,用来处理服务端渲染的部分。html
安装好了之后目录是这样一个结构:前端
根vue.js应用
实例化以前须要运行的 Javascript 插件。我存放的有axios,elementui的东西。static
用于存放应用的静态文件,此类文件不会被 Nuxt.js 调用 Webpack 进行构建编译处理。 服务器启动的时候,该目录下的文件会映射至应用的根路径 /
下,不可更改。store
目录用于组织应用的 Vuex 状态树 文件。 Nuxt.js 框架集成了 Vuex 状态树 的相关功能配置,在 store
目录下建立一个 index.js
文件可激活这些配置,不可更改,我用来存放封装的axios和vuex。nuxt.config.js
文件用于组织Nuxt.js 应用的个性化配置,以便覆盖默认配置,这个是核心文件,里面能够自定义配置nuxt 。服务端渲染请求的异步内容放在asyncData这个钩子方法里来作,切记!要想给爬虫爬到异步数据或者组件,加载方法必定要放到created钩子里面写,不能放mounted里。以下图:vue
带参数跳转用: this.$router.push({name: ‘map-mapView’, query: {id: xxx}}这种目录名-目录详情的方式,若是想定制化url,好比 http://www.xxx.com/id/3 ,这样history模式的url,能够在目录底下新建一个_id.vue 文件夹,用这样java
this.$router.push({node
})的方式跳转就能够啦。ios
其余的方式就跟vue同样的正常使用便可。vuex
参考文章:zh.nuxtjs.org/guide#%E9%9…vue-cli