资讯详情

nuxt3入门

随着vue3的发布,nuxt它也将迎来vue3版本。到目前为止,nuxt3已经发布了RC版本预计将在今年内发布。所以现在就开始学习吧。nuxt3吧!

拉取脚手架 然后安装依赖

npx nuxi init <您的项目名称> 

由于github不稳定可能会导致失败,需要重复几次,直到提示您安装依赖,然后安装依赖。

公共组件和路由页面

根目录新建components,pages 用于放置公共组件和路由页; 公共组件与路由页面的逻辑相同Nuxt2 声明结束后,将自动注入项目,无需import导入。路由页面自动生成路由配置,无需声明路由配置。

公共组件将自动注册,但自动注册的逻辑是什么? components夹下文件,一级.vue文件的名称是组件的名称。 components如果文件夹中有文件夹,Index.vue 这个index.vue如果有其他文件,例如: components下有一个uploads文件夹,uploads文件夹里有index.vue, file.vue使用两个文件时, index.vue组件的名称是 而file.vue的名字是 当然 也支持-写作,以此类推 下属也是这个逻辑。 所有组件名称前缀都添加了lazy的组件,都会按需加载(就是这么简单粗暴)

公共函数页面

根据目录新建一个composables公共函数存储在目录中,相同components/pages同样,函数会自动注册到全局,可以直接使用,无需引用!

layouts页面布局

根据目录新建一个layouts目录用于放置页面布局文件。 新建一个.vue文件、名称可以随意取,如default 创建一个default.vue文件。 本文件可以编写您的页面布局、公共模块等,也可以编写插槽等自定义内容。 然后在需要页面布局的页面中 声明一个NuxtLayout组件,这个组件是nuxt有一个默认的组件name属性,name的值是layouts文件夹中的文件名默认为default 所以我没写name

<template>   <NuxtLayout></NuxtLayout>   <NuxtPage /> </template> 

页面要求数据处理

由于vue三基本都是用的composition组合写页面逻辑,以前options配置式时nuxt使用asyncData现在没有组合式获取数据asyncData,nuxt内置数据获取数据的几种方法

  • useFetch
  • useAsyncData
  • useLazyAsyncData
  • useLazyFetch

后两个和前两个基本一样。 然而,它会阻塞页面,因此通常使用前两种方法获取数据.。

<script lang="ts" setup> import { 
         ref } from 'vue';  const res = await useFetch("http://121.36.81.61:8000/getTenArticleList"); const list = ref(res.data._rawValue.data); // console.log(res);  </script> 

<script lang="ts" setup>  const res = await useAsyncData("getList", () =>   $fetch("http://121.36.81.61:8000/getTenArticleList") );
console.log(res);
</script>

通过以上方式获取的数据,会在页面构建前就能拿到,然后就能渲染到页面上(相当于在服务端就拿到了数据),所以打开控制台的network 看不到请求记录。而且项目打包时,会去每一个路由页面请求并渲染到构建的页面上。 需要注意的是,做ssr时 如果需要的内容是需要更新的,则需要在api接口更新后重新打包项目,否则页面里的ssr内容还是上一次的ssr内容,没办法更新。要不就不通过上面的方式去获取数据,通过其他xmlhttprequest方式去获取数据(但是无法ssr)。

路由守卫和页面路由守卫

根目录新建一个middleware目录用于放置路由守卫文件。

新建一个default.global.ts文件 .global代表的是全局的意思,所以这个文件,它是全局的路由守卫。

export default defineNuxtRouteMiddleware((to, from) => { 
        
  if (to.name === 'info-id' && from.path !== '/info') { 
        
    console.log('禁止访问该页面!需要先去Info页面')
    abortNavigation(); //停止当前导航,可以使用error进行报错
    return navigateTo('/info')
  }
})

to, from类型与vue-router里的to, from一样,里面的属性也是相同的。 abortNavigation 停止当前导航 navigateTo 导航跳转到指定页面. abortNavigation navigateTo等不需要额外注入,可以直接使用。

新建一个default.ts文件 代码同全局路由守卫

export default defineNuxtRouteMiddleware((to, from) => { 
        
  console.log(to, from)
})

在你需要路由守卫的页面

<script lang="ts" setup>
definePageMeta({ 
        
  middleware: ['default']
})
</script>

这些definePageMeta也不需要额外注入,能直接使用。 配置middleware指定路由守卫文件。

每次访问该页面时 都会触发default.ts文件里的路由守卫方法。

:jspang的nuxt3保姆级入门教程 地址戳这里 ==>

标签: nux光电传感器pnnux光电传感器ps

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台