nuxt的使用

1.首先创建项目运行命令

vue init nuxt-community/starter-template projectname

若执行命令报错,

请全局执行

npm install -g @vue/cli-init

正常执行命令创建项目之后,查看项目的package.json文件运行

npm install命令下载包

认识目录

.nuxt自动生成的

assets静态资源目录(放些less,sass,javaScript)

layouts用作布局的相当于全局父级,其中的vue页包含<nuxt>相当于将pages页面中的内容全部在此入口展示

middleware是放置中间件的

pages是写的页面全部放到这个里面

plugins放置js插件

static放置静态文件(img等)

store放置vuex

.editorconfig是vscode的默认规则

eslintrc.js 规范代码书写

nuxt.config.js是覆盖原来的配置,相当于配置默认vue项目的index.html

二.

nuxt设置引入全局css在nuxt.config.js

在pages新建的vue文件nuxt会自动分配路由,直接按路径访问即可

其中~波浪线符号是代表根目录

nuxt使用scss

npm install node-sass@4.14.1

npm install  sass-loader@8.0.2 

必须下载两个版本是适应的,如果版本不适用则会报错,以上两个版本是适用的

执行完成后即可在单页面中使用了

<style lang="scss">

</style>

全局使用scss

首先下载

npm i  @nuxtjs/style-resources

修改配置
修改nuxt.config.js文件,添加内容
这里配置,采用的是nuxt 2.0.0版本

modules: [
    '@nuxtjs/style-resources'
],
styleResources: {
    scss: [
        //把全局样式放到这里,同时把css节点中引用的scss删除
        '~assets/my-global.scss'
    ]
}, 


在使用nuxt的2.14.12及以上版本时,配置有不同

//主要就是这里改为了buildModules
buildModules: [
    '@nuxtjs/style-resources'
],
styleResources: {
    scss: [
        '@/assets/my-global.scss'
    ]
},

三.路由配置

1.路由基本用法

//news.vue
//路由使用nuxt-link标签包裹如果所跳转路由名称是index,则对应打开页面时pages下的index.vue
<li><nuxt-link :to="{name:'index'}">HOME</nuxt-link></li>
//如果想跳转路由名称为news则对应打开页面时pages下的news文件夹下的index.vue
//此处由于是传参所以name原来应为news现在加了个-id则是规定所传的params对象名为id
//若传多个参数可以对象的形式用JSON.stringify转成字符串传值
<li><nuxt-link :to="{name:'news-id',params:{id:123}}">new1</nuxt-link></li>

2.路由跳转页面验证,及默认设置为子路由页

(1)在news文件夹下新建一个index.vue,又新建了一个_id.vue页面,
_id.vue页面不可export default中name不能设置删掉

//当前页面是news文件夹下新建的一个index.vue 

<li><nuxt-link :to="{name:'news-id',params:{id:123}}">new1</nuxt-link></li>
<li><nuxt-link :to="{name:'news-id-name',params:{id:'nice'}}">new2</nuxt-link> </li>

(2)在_id.vue必须删掉export default下的name否则会将路由子页面当成子组件来用,就会报错news文件夹下同时新建index.vue及_id.vue是命名规则加下滑线就是默认为index.vue页的子路由页,会根据index.vue传的参数不同通过_id.vue页显示不同结果

//在当前页_id页中作正则验证如果参数都是数字则进入
//当前页,并显示结果,否则进入nuxt.js的默认404页面

//_id.vue

<template>
    <div>
      <h2>News-content</h2>
      <p>NewsId{{$route.params.id}}</p>
      <ul>
        <li><a href="/">HOME</a></li>
      </ul>
    </div>
</template>

<script>
    export default {
      // name: "_id",
      //加校验如果路由参数中包含数字则返回true执行进入此子组件页面,否则会进入404页面
      validate({params}){
        return /^\d+$/.test(params.id);
      },

    }
</script>

3.nuxt.js的路由页在根目录下.nuxt文件夹下的router.js页中配置

三点一.路由动画

(1)路由动画默认配置写法

//normal.css
/*以下是全局页面切换路由渐隐渐显效果,
其中类名的方式enter-active,level-active及
-enter,level-active是固定的搭配写法,为什么不加page是因为page可以自定义*/
//意思是进入激活效果        离开激活效果
.page-enter-active,.page-level-active{
  transition: all 1s;
}
//进入触发效果    离开激活
.page-enter,.page-level-active{
  opacity: 0;
}


(2)路由动画自定义配置写法

https://myjson.com/

//normal.css
/*以下是test自定义路由动画配置写法效果是进入时字体由大到小,离开是字体由小到大*/

.test-enter-active, .test-leave-active{
  transition: all 1s;
  font-size: 12px;
}
.test-enter, .test-leave-active{
  opacity: 0;
  font-size: 40px;
}

 当其他页面使用此自定义动画效果时需要在export default中的transition设置值为‘test’

四.nuxt模板及默认布局

1.模板

在根目录下新建一个app.html

<!DOCTYPE html>
<html lang="en">
<head>
  {{HEAD}} //固定写法
</head>
<body>
  <p>JSPang.com 技术胖博客</p> //在此处添加内容相当于在所有vue上方都会显示此内容
  {{APP}}//其中App位置显示的是所有vue页的内容
</body>
</html>

2.默认布局

在layouts文件中的index.vue设置默认布局

<nuxt/>标签表示所有.vue页的内容可以自定义所有vue页面的外部盒子

五.错误页面配置

1.在layout文件夹中新建error.vue

<template>
    <div>
      <h2 v-if="error.statusCode===404">404页面,你需要的页面没有找到</h2>
      <h2 v-else>500页面,服务器错误</h2>
    </div>
</template>

<script>
    export default {
      /*error是系统自带的值,可以获取网页状态*/
      props:['error']
    }
</script>

配置完后当访问当前域名下的地址无法访问就会自动进入error.vue中 

六。个性meta标签设置

1.默认给某一个vue页设置meta或head内容

 

七。请求接口

<template>
  <div>
    <ul>
      <h2>姓名:{{info.name}}</h2>
      <h2>年龄:{{info.age}}</h2>
      <h2>{{info}}</h2>
    </ul>
  </div>
</template>

<script>
    import axios from 'axios'
    export default {
      data(){
        return{
          name:'Hello World'
        }
      },
      //将json值直接返回给当前方法,在html中可直接使用对象的值
      async asyncData(){
        let {data}=await axios.get('https://api.myjson.com/bins/7g5mb');
        return {info:data}

      }
    }
</script>

八。nuxt打包后静态资源(img,file等)无法显示

打包命令是npm run generate 

打包成dist文件后打开里面的index.html文件发现原来配置的图片没有出现

解决方式:

需要有服务器辅助,可以全局下载liver-server: npm install -g live-server

启动方式直接在生成静态文件的dist文件夹中运行命令live-server即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路光.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值