<template>
<div>
<NuxtLink to="/about">
关于我们
</NuxtLink>
<NuxtLink to="/lend">
我要投资
</NuxtLink>
<NuxtLink to="/user">
用户中心
</NuxtLink>
<a href="http://atguigu.com" target="_blank">尚硅谷</a>
<h1>Home page</h1>
</div>
</template>
pages/lend/_id.vue
<template>
<div>这个投资产品是:{{ id }}div>
template>
<script>
export default {
data() {
return {
id: null,
}
},
created() {
this.id = this.$route.params.id
},
}
script>
pages/lend/index.vue
<template>
<div>
<h1>投资产品列表</h1>
<NuxtLink to="/lend/1">
产品1
</NuxtLink>
<NuxtLink to="/lend/2">
产品2
</NuxtLink>
</div>
</template>
<template>
<div>
<h1>用户中心</h1>
<!--/user/index.vue-->
<NuxtLink to="/user">个人中心</NuxtLink>
<!--/user/user.vue-->
<NuxtLink to="/user/user">我的投资</NuxtLink>
<!--嵌套路由出口,根据上述模板更改,默认为出现/user/index.vue-->
<NuxtChild />
</div>
</template>
<script>
export default {
layout: 'my',
}
</script>
pages/user/index.vue
<template>
<div>
<h2>我的账户</h2>
</div>
</template>
pages/user/user.vue
<template>
<div>
<h2>我的投资</h2>
</div>
</template>
<template>
<div>
<!--页面布局公共尾部-->
<div>这是网站公共的头部</div>
<!--页面占位符-->
<Nuxt />
<!--页面布局公共尾部-->
<div>这是网站公共的底部</div>
</div>
</template>
<template>
<div>
<!--页面布局公共尾部-->
<div>自定义的头部</div>
<!--页面占位符-->
<Nuxt />
<!--页面布局公共尾部-->
<div>自定义的底部</div>
</div>
</template>
引入自定义布局
<script>
export default {
layout: 'my',
}
</script>
nuxt.config.js
module.exports = {
head: {
title: '尚融宝',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{
hid: 'meta-key-words',
name: 'keywords',
content:
'尚融宝官网_纽交所上市企业,网络借贷平台,解决个人小额借款,短期借款问题, 资金银行存管,安全保障。',
},
{
hid: 'description',
name: 'description',
content:
'尚融宝官网_纽交所上市企业,网络借贷平台,解决个人小额借款、短期借款问题。 资金银行存管,安全保障。',
},
],
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
},
css: [
// CSS file in the project
'~/assets/css/main.css',
],
server: {
port: 3001, // default: 3000
},
}
/assets/css/main.css
body {
background-color: pink;
}
nuxt.config.js中添加配置
modules: [
'@nuxtjs/axios', //引入axios模块
],
//引入基本地址,后面访问直接/
axios: {
// Axios options here
baseURL: 'http://icanhazip.com',
},
//引入axios拦截器
plugins: ['~/plugins/axios'],
/plugins/axios
export default function({ $axios, redirect }) {
$axios.onRequest((config) => {
console.log('执行请求拦截器 ' + config.url)
})
$axios.onResponse((response) => {
console.log('执行响应拦截器')
return response
})
$axios.onError((error) => {
console.log(error) // for debug
})
}
pages\index.vue
<template>
<div>
<NuxtLink to="/about">
关于我们
</NuxtLink>
<NuxtLink to="/lend">
我要投资
</NuxtLink>
<NuxtLink to="/user">
用户中心
</NuxtLink>
<a href="http://atguigu.com" target="_blank">尚硅谷</a>
<h1>主页面e</h1>
<p>您的ip是{{ ip1 }}</p>
</div>
</template>
<script>
export default {
data() {
return {
ip: null,
}
},
//客户端渲染
created() {
//get
// this.$axios.get('http://icanhazip.com').then((response) => {
// console.log(response)
// this.ip = response.data
// })
//$get直接将response.data返回为response
// this.$axios.$get('http://icanhazip.com').then((response) => {
// console.log(response)
// this.ip = response
//})
},
//前端服务器渲染
//实现服务器端的数据渲染(渲染数据到html返回浏览器段),静态方法,在前端的服务器优先执行
//结构的形式
//异步操作
//使用async和await来同步
async asyncData({ $axios }) {
console.log('asyncData')
//异步操作
//加上await变为同步操作
let response = await $axios.$get('/')
return {
ip1: response, //这种写法的问题是:前面的远程调用是异步的,无法在这获取到response
}
},
}
</script>