若端口号冲突,或想运行在本机ip,在package.json中添加config配置
{
"config":{
"nuxt":{
"host":"127.0.0.1",
"port":"1818"
}
}
}
重启项目即可
根据目录结构自动生层router.js
标签跳转
<nuxt-link to="/">跳转首页</nuxt-link>
<nuxt-link :to="{name: 'news',query:{id:'1'}}">跳转新闻页</nuxt-link>
this.$router.push({
name: 'log-id',
params:{
id:12,
key:value
})
//接受
async asyncData ({ params }) {
// params.id 就是我们传进来的值
}
// 或者
created () {
this.$route.params.xxx
}
this.$router.push({
name: 'log-id',
query:{
id:12,
key:value
})
//接收
async asyncData ({app,query }) {
// pquery.id 就是我们传进来的值
}
// 或者
created () {
this.$route.query.xxx
}
//目录结构:goods文件夹下面动态路由_id文件
--| goods/
-----| _id.vue
-----| index.vue
//index.vue传参
<nuxt-link :to="{name: 'goods-id', params:{id: 1}}">苹果详情</nuxt-link>
<nuxt-link :to=" '/goods/2' ">橘子详情</nuxt-link>
//_id.vue接受参数,并校验参数,若参数不合格,将会跳转到404页面
<script>
export default {
validate({params}){ //params相当于url中的pathname , 而query是路由携带的参数?type=1
return \^\d+$\.test(params.id)
}
}
</script>
//路由结构:如下users.vue是父路由,其子路由需要放在与他同名的文件夹下users/
pages/
--| users/
-----| _id.vue
-----| index.vue
--| users.vue
父组件(.vue文件) 内增加 用于显示子视图内容
module.exports = {
css: [ '@assets/common.css' ]
}
//common.css
.page-enter-active, .page-leave-active {
transition: opacity .5s;
}
.page-enter, .page-leave-active {
opacity: 0;
}
//common.css
.news-enter-active, .news-leave-active {
transition: all .5s;
color:red;
}
.news-enter, .news-leave-active {
opacity: 0;
color:blue;
}
//news.vue
export default {
transition: 'news'
}
<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
<head {{ HEAD_ATTRS }}>
{{ HEAD }} //nuxt.config.js中配置的head
</head>
<body {{ BODY_ATTRS }}>
//可以在这写一段固定的代码,这样机会在每个页面都显示,例如:
<h1>欢迎光临</h1>
{{ APP }} //pages中的页面
</body>
</html>
<template>
//在默认布局中可以定义pc网站的头部和底部,这样就会在每个页面中显示
<nuxt/>
</template>
// layouts/blog.vue
<template>
<div>
<div>我的博客导航栏在这里</div>
<nuxt/>
</div>
</template>
<template>
<!-- Your template -->
</template>
<script>
export default {
layout: 'blog'
// page component definitions
}
</script>
<template>
<div class="container">
<h1 v-if="error.statusCode === 404">页面不存在</h1>
<h1 v-else>应用发生错误异常</h1>
<nuxt-link to="/">首 页</nuxt-link>
</div>
</template>
<script>
export default {
props: ['error'], //nuxt自己传递的error对象(包含statusCode)
layout: 'blog' // 你可以为错误页面指定自定义的布局
}
</script>
<template>
<h1 class="red">Hello {{ name }}!</h1>
</template>
<script>
export default {
data(){
return {
title:this.$route.params.title
}
},
props:['name'],
async asyncData (context) {
// 每次组件加载之前调用,可以在这里调接口,设置组件的数据
const { data } = await axios.get('')
return { initdata:data } //initdata可以像data重数据一样直接使用
},
async fetch ({ store, params }) {
// 在渲染页面前填充应用的状态树(store)数据, 与 asyncData 方法类似,不同的是它不会设置组件的数据。
let { data } = await axios.get('http://my-api/stars')
store.commit('setStars', data)
}
head () {
// 每个页面单独设置meta,title和content
title:this.title,
meta:{
content:'描述',
name:'',
hid:'' //唯一标识,跟原来的一样可以覆盖原来的meta
}
},
// and more functionality to discover
...
}
</script>
<style>
.red {
color: red;
}
</style>