NuxtJs学习笔记

入门

含义

 Nuxt.js 通用Vue.js ssr
    ssr:服务器端 Vue渲染html 返回浏览器
    SEO:VUE SPA(单页) 新闻 搜索引擎
    SPA: 快速
必须用到SSR的地方
    新闻、博客、。。需要搜索引擎提供流量的应用都需要用到ssr 

优点

1.基于VUE
2.自动代码分层
3.强大的路由功能,支持异步数据
4.静态文件服务
5.es6/es7语法支持
6.打包和压缩js和css
7.html头部标签管理
8.本地开发支持热加载
9.集成eslint
10.支持各类样式预处理器:SASS,LESS,STYLUS等等

基础要求

1.html
2.css
3.vue

环境的搭建

  • node.js 安装
  • 全局安装vue-cli
      npm install vue-cli -g
      查看版本
      vue -V
    
  • 指定目录初始化项目
        在指定目录下
        vue init nuxt/starter
        初始化后,更新包文件
        npm install
        启动项目
        npm run dev
    

Nustjs目录结构和配置文件

文件夹的作用

  • .nuxt
一般不需要动,是npm run bulid自动生成的
  • assets
放置less sass javascript 图标什么的
  • components
  自己写的组件
  • layouts
  布局,
  • middleware
放置中间件的位置
  • page
  自己编写的页面
  • plugins
  放js的一些插件,例如弹出插件
  • static
静态文件,例如图片
  • store
  状态管理 vuex的知识

文件的作用

  • .eslintrc.js
eslintrc的配置文件,规范代码编写风格
  • .gitignore
 上传的规则,设置不上传的文件
  • nuxt.config.js
head:所有页面的头部
loading:加载的样式
build:扩展
  • package.json
默认包管理:
  dependencies:生成环境的配置
  devDependencies:产品环境的配置

常用配置项的配置

  • 端口,ip的配置
package.json文件内添加:
"config":{
  "nuxt":{
    "host":"127.0.0.1",//设置的ip
    "port":"1818"//设置的端口
  }
},
  • 配置全局css,全局js
 ~:根目录匹配符
 在nuxt.config下添加
 css:['~assets/css/normailze.css'],
  • 图片url的打包
在nuxt.config文件build下
loaders:[
     {
     test:/\.(png|jpg|gif|svg)$/,
     loader:'url-loader',
     query:{
       limit:10000,
       name:'img/[name].[hash].[ext]'
     }
   }

   ],

路由与参数传递

标签传递路由

  • 1.使用a标签直接跳转,href内是跳转的页面路由(不推荐使用)
<a href="/about">about</a>
  • 2.使用官方推荐标签 nuxt-link,使用params进行传参.
  普通跳转
 <nuxt-link :to="{name:'about'}">about</nuxt-link>
 带参跳转
 <nuxt-link :to="{name:'news',params:{newsId:3306}}">news</nuxt-link>
 接收参数
 this.$route.params.newsId

动态路由和参数校验

  • 动态路由

    • 使用a标签
        动态路由文件名称需要_开头,例_id,id才是文件名称
        具体案例如下:
        news文件(调用动态路由处的文件):
         <div>
            <h2>news index page</h2>
            <ul>
              <li><a href="/">回到首页 {{$route.params.newsId}}</a></li>
              <li><a href="/news/123">news1</a></li>
              <li><nuxt-link :to="{name:'news-id',params:{id:3306}}">nuxt-link</nuxt-link></li>
              <li><a href="/news/789">news3</a></li>
            </ul>
          </div>
         _id文件(动态路由文件):路由中的参数id就是文件名
         <div>
             <h2>News--contents</h2>
             <p>NewsId:{{$route.params.id}}</p>
             <li><nuxt-link :to="{name:'index'}">home</nuxt-link></li>
           </div>
          注:export default中的name需要去除
      
      • 使用nuxt-link
         动态路由文件名称需要_开头,例_id,id才是文件名称
                       具体案例如下:
                       news文件(调用动态路由处的文件):
                        <div>
                           <h2>news index page</h2>
                           <ul>
                             <li><nuxt-link :to="{name:'news-id',params:{id:3306}}">nuxt-link</nuxt-link></li>
                           </ul>
                         </div>
                        _id文件(动态路由文件):路由中的参数id就是文件名
                        <div>
                            <h2>News--contents</h2>
                            <p>NewsId:{{$route.params.id}}</p>
                            <li><nuxt-link :to="{name:'index'}">home</nuxt-link></li>
                          </div>
                         注:export default中的name需要去除
                     
      
  • 路由校验

     在动态路由 export default中定义校验规则,例如:设置只允许参数是数字
     validate({params}){
             return /^\d+$/.test(params.id);
           }
      <a href="/news/123">news1</a>//允许通过,允许渲染
      <a href="/news/456ss">news2</a>//不允许通过,不进行渲染
    

路由动画效果

  • css全局控制
  全局css样式添加
  //进入的动画
  .page-enter-active,.page-leave-active{
      transition: opacity 2s;
  }
  //离开的动画
  .page-enter,.page-leave-active{
    opacity: 0;
  }
  • css单独控制
  css添加动画
  //注意test
.test-enter-active,.test-leave-active{
  transition: all 2s;
  font-size: 12px;
}
.test-enter,.test-leave-active{
  opacity: 0;
  font-size: 40px;
}
单独设置的页面中的export default 中添加
transition:'test' //test 和css中的test类似

默认模板和默认布局

默认模板与默认布局的区别,默认模板的级别最高,且可以改变头部内容,默认布局可以不需要重启服务器就可以生效

默认模板(不常用)

  在根目录下,新建app.html nuxt会默认将其当作模板
  例:
 <!DOCTYPE html>
 <html lang="en">
   <head>
     {{HEAD}}
   </head>
 <body>
   <p>这是公共的模板,每次更改需要重启</p>
 {{APP}}
 </body>
 </html>
 //其中 {{HEAD}}为引入nuxt.config.js中的head内容
 //{{APP}}为真实页面占位

默认布局(常用)

  在layouts文件下的default内进行修改,例如
   <div>
    <div>这是默认布局内的全局内容,不需要重启就可以生效!!!</div>
      <nuxt/>
    </div>

NuxtJS错误页面和个性meta标签设置

错误页面

  • 错误页面设置
  在layouts文件夹下创建error文件
  通过props:['error']用来接收错误代码
  通过error.statusCode来判断错误信息,代码案例如下
  
  <template>
    <div>
      <h2 v-if="error.statusCode == 404">404页面,你需要的页面没有被找到</h2>
      <h2 v-else>500页面,服务器错误</h2>
    </div>
  </template>
  
  <script>
      export default {
          name: "error",
          props:['error']
      }
  </script>
  • 个性meta标签设置
在需要个性化标签设置的页面的export default中使用head(){}设置个性化
例如:
   head(){
          return{
            title:"ssssss",
            meta:[
              {hid:'description',name:'news1',content:'this is new page'}
            ]
          }
        }
    title:头部文字
    meta head标签内的内容,hid需要和nuxt.config.js中的head对象内的hid相同,不然会有问题    

NuxtJS的asyncData方法

  • 异步请求数据
 在页面渲染之前从服务器上获取数据对象,获取后再显示页面内容
  • 配置方式
 //安装axios
 npm install axios --save
 

Nuxt静态资源文件和生产静态文件

Nuxt静态资源文件

1 img引入 使用 ~直接到达根目录
  <img src="~static/img/logo.png">
2 背景映入 也是使用~到达根目录
.div-class-img{
    width: 500px;
    height: 300px;
    background-image: url("~static/img/logo.png");
  }   

生产静态文件

使用 npm run generate 生成静态文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值