zoukankan      html  css  js  c++  java
  • Nuxt.js学习笔记

    定义:是一个基于Vue.js的通用应用框架,注重于UI的渲染

    1. 路由:路由无需配置,nuxt会根据pages目录下面的 .vue 文件自动生成路由信息

      1》页面之间跳转使用路由,使用<nuxt-link> 标签。如下所示:

      

    <template>
      <nuxt-link to="/">首页</nuxt-link>
    </template>

      2》 基本路由结构如下:

      

        3》动态路由结构如下:

      

       名称为 users-id 的路由路径带有 :id? 参数,表示该路由是可选的。

       如果你想将它设置为必选的路由,需要在 users/_id 目录内创建一个 index.vue 文件。 

         

      在 pages/users/_id.vue 组件里面需要对路由参数进行基本的校验:校验如下:

      

    export default {
      validate({ params }) {
        // 必须是number类型
        return /^d+$/.test(params.id)
      }
    }

      如果校验失败,将自动加载显示404错误页面或500错误页面

     

    2. 视图:

       1》模板:相当于vue项目的public/index.html文件,定制化默认的 html 模板,只需要在 src 文件夹下(默认是应用根目录)创建一个 app.html 的文件。默认模板代码如下:

      

    <!DOCTYPE html>
    <html {{ HTML_ATTRS }}>
      <head {{ HEAD_ATTRS }}>
        {{ HEAD }}
      </head>
      <body {{ BODY_ATTRS }}>
        {{ APP }}
      </body>
    </html>

      可以在默认模板的基金上进行修改,例如:添加 IE 的条件表达式,代码如下:

      

    <!DOCTYPE html>
    <!--[if IE 9]><html lang="en-US" class="lt-ie9 ie9" {{ HTML_ATTRS }}><![endif]-->
    <!--[if (gt IE 9)|!(IE)]><!--><html {{ HTML_ATTRS }}><!--<![endif]-->
      <head {{ HEAD_ATTRS }}>
        {{ HEAD }}
      </head>
      <body {{ BODY_ATTRS }}>
        {{ APP }}
      </body>
    </html>

      2》布局:layouts:

        《1》默认布局:可通过添加 layouts/default.vue 文件来扩展应用的默认布局。默认布局代码如下:

          

    <template>
      <div>
        <nuxt />
      </div>
    </template>

        《2》自定义布局:

          假设我们要创建一个 博客布局 并将其保存到layouts/blog.vue:

          

    <template>
      <div>
        <div>我的博客导航栏在这里</div>
        <nuxt />
      </div>  
    </template>

      然后我们必须告诉页面 (即pages/posts.vue) 使用您的自定义布局:

        

    <template>
      <!-- Your template -->
    </template>
    <script>
      export default {
        layout: 'blog'
        // page component definitions
      }
    </script>

      3》错误页面:

      你可以通过编辑 layouts/error.vue 文件来定制化错误页面.

        

    <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'],
        layout: 'blog' // 你可以为错误页面指定自定义的布局
      }
    </script>

      4》HTML头部:

      Nuxt.js 使用了 vue-meta 更新应用的 头部标签(Head) and html 属性

      Nuxt.js 使用以下参数配置 vue-meta如下:

        

    {
      keyName: 'head', // 设置 meta 信息的组件对象的字段,vue-meta 会根据这 key 值获取 meta 信息
      attribute: 'n-head', // vue-meta 在监听标签时所添加的属性名
      ssrAttribute: 'n-head-ssr', // 让 vue-meta 获知 meta 信息已完成服务端渲染的属性名
      tagIDKeyName: 'hid' // 让 vue-meta 用来决定是否覆盖还是追加 tag 的属性名
    }

      5》默认 Meta 标签

      Nuxt.js 允许你在 nuxt.config.js 里定义应用所需的所有默认 meta 标签,在 head 字段里配置就可以了:

        

    head: {
      meta: [
        { charset: 'utf-8' },
        { name: 'viewport', content: 'width=device-width, initial-scale=1' }
      ],
      link: [
        { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }
      ]
    }

     3. 异步数据:

      asyncData:设置组件的数据之前能异步获取或处理数据

      asyncData方法会在组件(限于页面组件)每次加载之前被调用。它可以在服务端或路由更新之前被调用。

      在这个方法被调用的时候,第一个参数被设定为当前页面的上下文对象,你可以利用asyncData方法来获取数据。

      由于asyncData方法是在组件初始化前被调用的,所以在方法内是没有办法通过this来引用组件的实例对象。

      具体使用后续再更新。。。。。。

    4. 资源文件

      默认情况下Nuxt使用vue-loader、file-loader以及url-loader这几个Webpack加载器来处理文件的加载和引用。

      对于不需要通过Webpack处理的静态资源文件,可以放置在static目录中。

      Nuxt 服务器启动的时候,该目录下的文件会映射至应用的根路径 / 下,像 robots.txt 或 sitemap.xml 这种类型的文件就很适合放到 static 目录中。

    <!-- 引用 static 目录下的图片 -->
    <img src="/my-image.png" />
    
    <!-- 引用 assets 目录下经过 webpack 构建处理后的图片 -->
    <img src="~/assets/my-image-2.png" />

      assets里面的静态资源文件是需要走webpack的,webpack可以对资源进行压缩、改名、转换等等的操作。

      static文件下面的静态资源文件就不会走webpack,资源文件保持原有的。

    5.插件

      Nuxt.js允许我们在运行vue.js应用程序之前执行js插件

      需要注意的是,在任何Vue组件的生命周期内,只有beforeCreate和created这两个方法会在客户端和服务端被调用

      其他生命周期函数仅在客户端被调用。

      

      1》使用第三方插件就不再多作说明

      2》使用Vue插件

      

        假如我们想使用 vue-notifications 显示应用的通知信息,我们需要在程序运行前配置好这个插件。

        首先增加文件 plugins/vue-notifications.js

          

    import Vue from 'vue'
    import VueNotifications from 'vue-notifications'
    
    Vue.use(VueNotifications)

        然后,在 nuxt.config.js 内配置plugins 如下:

      

    module.exports = {
      plugins: ['~/plugins/vue-notifications']
    }

      3》只在客户端使用的插件

      不支持ssr的系统,插件只在浏览器里使用,这种情况下,你可以用 ssr:false ,使得插件只会在客户端运行

      nuxt.config.js:

    module.exports = {
      plugins: [{ src: '~/plugins/vue-notifications', ssr: false }]
    }

      

      

    <!-- 引用 static 目录下的图片 -->
    <img src="/my-image.png" />
    
    <!-- 引用 assets 目录下经过 webpack 构建处理后的图片 -->
    <img src="~/assets/my-image-2.png" />
  • 相关阅读:
    loadrunner 11安装教程
    测试用例
    软件测试分类
    软件测试模型
    VMware Workstation安装Red hat7.0联网问题总结
    Python网络编程基础pdf
    Python数据可视化编程实战pdf
    Python数据分析实战
    Python数据科学手册
    Python入门经典. 以解决计算问题为导向的Python编程实践
  • 原文地址:https://www.cnblogs.com/pylf/p/14023501.html
Copyright © 2011-2022 走看看