加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Vue处事器端渲染nuxt.js初探

发布时间:2019-01-26 11:05:28 所属栏目:建站 来源:佚名
导读:开头照旧来一段空话: 年关快要,给各人拜个从前,愿各人年会都能抽大奖,来年行大运。 空话不多说,直接进正文。 项目情形: 前端vue项目, 必要将新增的几个路由页面做seo处理赏罚。 在调研 插件 prerender-spa-plugin后,发明无法满意 vuex 以及 plugins 等

必要在 assets/目次下建设 main.css 添加全局样式。

  1. .page-enter-active, .page-leave-active {  
  2. transition: opacity .5s;  
  3. }  
  4. .page-enter, .page-leave-active {  
  5. opacity: 0;  
  6. }  

然后添加到 nuxt.config.js 文件中:

  1. module.exports = {  
  2. css: [  
  3. 'assets/main.css'  
  4. ],  
  5. loading: { color: '#2152F3' },  
  6. }  

更多过渡结果: https://zh.nuxtjs.org/guide/routing#过渡动效

头部信息 (Meta 标签 ,全局样式)

nuxt.config.js 里界说应用所需的全部默认 meta 标签

  1. head: {  
  2. meta: [  
  3. { charset: 'utf-8' },  
  4. { name: 'viewport', content: 'width=device-width, initial-scale=1' }  
  5. { hid: 'description', name: 'description', content: '' }  
  6. ],  
  7. link: [ // 这里可以引用全局的样式,可是会默认走根目次  
  8. { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }  
  9. { rel: 'stylesheet', href: '~/static/common.js' } // 文件一样平常都放在static目次下  
  10. ]  
  11. }  

详细参考:https://zh.nuxtjs.org/api/configuration-head

异步数据 (asyncData要领,限于page页面组件,components中不合用)

这里包罗 asyncData钩子 / fetch 钩子 / 。。。

【fetch】 用于在渲染页眼前添补应用的状态树(store)数据, 与 asyncData 要领相同,差异的是它不会配置组件的数据

【asyncData】 首要用于哀求ajax 添补data中的数据

每次加载之前被挪用。它可以在处事端或路由更新之前被挪用。

  1. asyncData ({ params }) {  
  2. return axios.get(`https://my-api/posts/${params.id}`) 
  3. .then((res) => {  
  4. // 赋值给页面 data中的数据  
  5. return { title: res.data.title }  
  6. })  
  7. }  

可能调动为同步哀求:

  1. async asyncData() {  
  2. let formData = {}  
  3. let ajaxData = await axios({  
  4. method: "post",  
  5. url: url,  
  6. data: qs.stringify(formData),  
  7. retryDelay : 1000,  
  8. withCredentials : true,  
  9. responseType : 'json',  
  10. timeout : 60000,  
  11. 'Content-Type' : 'application/x-www-form-urlencoded'  
  12. })  
  13. }  

留意添加 catch

留意:

这个异步哀求函数, 第一次执行情形为node情形中,也就是处事器端,后续革新页面则执行情形为client 客户端

当地开拓时,假如在客户端直接哀求完备路径时会常常碰着跨域题目,以是必要在 asyncData 中区分情形变量

process.env.VUE_ENV 区分 是server 照旧 client

然后按照差异的情形设置差异的 url , 而且在 client时, 必要做处事器端署理哀求,必要给url增进一层署理标识

譬喻:client情形中

  1. url = '/api' + '/get-user-info';  
  2. nuxt.config.js 中  
  3. /*  
  4. ** 处理赏罚署理跨域题目  
  5. */  
  6. axios: {  
  7. proxy: true,  
  8. prefix: '/api', // 增进哀求标识  
  9. credentials: true,  
  10. },  
  11. proxy: {  
  12. '/api': {  
  13. // 署理地点  
  14. target: (process.env.NODE_ENV == 'production') ?'http://test.' : 'http://www.' ,  
  15. changeOrigin: true,  
  16. pathRewrite: {  
  17. '^/api': '' // 将标识 替代为 ‘’  
  18. },  
  19. },  
  20. }  

错误处理赏罚 :

context中提供了一个 error(params) 要领,你可以通过挪用该要领来表现错误信息页面。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读