Nuxt项目asyncData服务端请求数据渲染

或许有些人会比较喜欢在mounted里去请求数据 但在Nuxt项目中是绝对不能这样操作的 因为 mounted的特性也说的比较明白了 当页面挂载完之后执行 但显然 seo只读你页面挂载的内容 如果你在这请求 那么对不起 你请求回来的数据渲染到界面上seo爬虫是看不到的

Nuxt项目请求数据 可以在组件的 asyncData 生命周期中执行
这里 我们先引入axios

如果你的项目直接选了要 axios 那么就不需要引入了
否则 就像我一样 在项目终端执行

npm i axios@0.21.0

这里一定要注意 axios版本不能太高
我这里 启动一下自己java的项目 如果小伙伴没有他接口条件 可以直接访问 https://api.erp.yitiaoma.com/api/admin/Auth/GetPassWordEncryptKey
get请求 不需要参数
在这里插入图片描述

然后 我这里直接实验 访问自己的接口
在这里插入图片描述
可以看到 放回成功的

我们打开 pages 下的 index.vue 编写代码如下

<template>
  <div>
      <ul>
          <li
          >年后</li>
      </ul>
  </div>
</template>

<script>
import axios from "axios";
export default {
      
      
  name: 'IndexPage',
  data() {
      
      
    return {
      
      
      datalist: []
    }
  },
  asyncData(){
      
      
      return axios({
      
      
        url:"http://localhost:8080/pro-api/user/",
        headers:{
      
      
        }
      }).then(res=>{
      
      
        console.log(res.data);
        return {
      
      
            datalist: res.data
        }
      })
  }
}
</script>

运行项目 然后访问项目
在这里插入图片描述
我们请求的数据就被展示在这啦 但一定要注意是 res.data
res这一层 还有其他东西
然后我们这里这个datalist的意思将他复制给 data中的 datalist对象 然后我们来循环遍历这些元素
index.vue 界面模板更改如下

<template>
  <div>
      <ul>
          <li
            v-for = "(itme,indx) in datalist.data"
            :key = "indx"
          >{
   
   { itme.name }}</li>
      </ul>
  </div>
</template>

运行项目 这样 我们的数据就上去了

在这里插入图片描述
然后 我们右键查看源码
在这里插入图片描述
可以看到 我这些东西也是直接连载源码上了 爬虫也能爬到
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/129971376