nuxt3项目创建

安装

npx nuxi@latest init <project-name>

此时会出现报错,需要在host文件中加入

185.199.108.133 raw.githubusercontent.com

再次执行命令,进入安装

此处选择npm,出现下图表示安装成功

启动项目 

执行npm run dev,访问http://localhost:3000/出现下入界面

删除app.vue页面内容,页面底部会出现一个按钮

找到nuxt.config.ts文件,将属性设为false即可

 语法介绍

1、配置layouts

新建Header和Footer组件,新建layouts文件夹,新建global.vue,内容如下:

使用布局

新建pages文件夹,新建about页面

效果:可以实现菜单切换

2、添加element-plus

npm install element-plus

npm install @element-plus/nuxt

nuxt.config.ts文件中添加两行代码

3、添加scss,使用变量

npm install sass

新建assets文件夹,新建styles文件夹,新建common.scss文件,加入变量

nuxt.config.ts文件中添加几行代码,即可使用

4、动态tdk、SEO

页面中添加useSeoMeta

const num = Math.random()
useSeoMeta({
  title: '首页'+num,
  ogTitle: '我的神奇网站',
  description: '这是我的神奇网站,让我来告诉你关于它的一切。',
  ogDescription: '这是我的神奇网站,让我来告诉你关于它的一切。',
  ogImage: 'https://example.com/image.png',
  twitterCard: 'summary_large_image',
})

5、添加请求axios

 npm install axios

新建api文件夹,新建request.js文件,其余用法与vue一样,无需配置代理

import axios from 'axios'
import { ElMessage } from "element-plus"
const request = axios.create({
    baseURL:'http://192.168.0.102:48080',//本地使用
})
request.interceptors.request.use(
    config => {
        const token = 'Bearer c4322eded85c4c2a80b56095fdf1b6ac'
        //登录后获取token
        if(token){
            config.headers.authorization = `${token}`
        }
        return config
    },
    err => {
        return Promise.reject(err)
    }
)
request.interceptors.response.use(
    response => {
        if (response.data.code !== 0) {
            return Promise.reject(response.data)
        } else {
            return response.data
        }
    },
    error => {
        // console.log('error:', error)
        if(error.response){
            ElMessage({
                message: '请求错误!请求服务器无响应!',
                type: 'error',
                duration: 2000 //提示持续2秒
            })
        }
        return Promise.reject(error.response)
    }
)
export default request

6、路由

默认根据页面层级结构决定path

嵌套路由

比如user文件夹包含list.vue,该页面路由就是/user/list

使用definePageMeta修改页面路由

//定义页面路由
definePageMeta({
  path:'/user-list'
})

 修改后,访问/user/list则为404

动态路由

pages目录下新建user文件夹,新建[id].vue

// [id].vue
<template>
  <div>动态路由</div>
</template>
<script setup lang="ts">
  const route = useRoute()
  console.log(route.params.id)
</script>
<style scoped>

</style>

 访问路径http://localhost:3000/user/1,输入值为1

7、路由中间件

页面中添加下面代码

definePageMeta({
    // middleware(to, from) {
    //   console.log('匿名中间件,只在当前页面使用',to,from);
    // },
    middleware: ['router']
})

 新建文件夹middleware,新建router.js

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

即可获取路由相关信息 

重新命名router.js为router.global.js,即为全局中间件,页面中无需引入即可执行

可以用于权限判断,路由重定向

export default defineNuxtRouteMiddleware((to, from) => {
    console.log(to,from)
    if(to.path==='/'){
        return navigateTo('/login')
    }
})

return abortNavigation(); // 停止导航 

 8、错误页面处理

根目录下新建error.vue

//error.vue
<template>
  <div>
    <h1>发生错误</h1>
    <p>抱歉,页面无法加载。</p>
    <p>错误代码:{{ error.statusCode }}</p>
  </div>
</template>

<script>
export default {
  props: ['error'],
}
</script>

展示效果

其余待完善。。。

### 创建 Nuxt 3 项目的步骤说明 创建 Nuxt 3 项目可以通过 `pnpm` 或 `npx` 工具完成。以下是具体的方法和配置[^3]: 1. **安装工具**:如果尚未安装 `npx`,可以使用以下命令进行全局安装: ```bash npm install -g npx ``` 推荐使用 `pnpm`,因为它具有更快的依赖解析速度和更小的磁盘占用。 2. **初始化项目**:通过以下命令之一创建新的 Nuxt 3 项目: - 使用 `pnpm`: ```bash pnpm dlx nuxi@latest init <project-name> ``` - 使用 `npx`: ```bash npx nuxi@latest init <project-name> ``` 在执行上述命令时,系统会提示选择项目的基本配置,例如框架版本、样式预处理器等。 3. **进入项目目录**: ```bash cd <project-name> ``` 4. **安装依赖**: 根据所使用的包管理工具,运行以下命令之一: - 使用 `pnpm`: ```bash pnpm install ``` - 使用 `npm`: ```bash npm install ``` 5. **启动开发服务器**: 安装完成后,可以启动开发服务器以验证项目是否正常运行: ```bash npm run dev ``` 或者使用 `pnpm`: ```bash pnpm run dev ``` 6. **配置页面**:在 `pages` 文件夹下创建 `index.vue` 文件,作为首页的内容展示[^1]。例如: ```vue <template> <section class="banner"> <h1 class="page-title">Hello World</h1> <p class="tit-info">创建的第一个 Nuxt 3 项目的首页</p> </section> </template> <script setup lang="ts"> useHead({ title: &#39;Nuxt3 项目首页 - Nuxt&#39;, meta: [ { hid: &#39;keywords&#39;, name: &#39;keywords&#39;, content: &#39;Nuxt3, Vue3, Index&#39; }, { hid: &#39;description&#39;, name: &#39;description&#39;, content: &#39;Nuxt3 项目首页&#39; } ] }) </script> <style lang="scss" scoped> .banner { padding-top: 150px; width: 93%; max-width: 1300px; margin: 0 auto 100px; } .page-title { font-size: 50px; text-align: center; } .tit-info { text-align: center; margin-top: 15px; font-size: 18px; } </style> ``` 7. **中间件配置**(可选):如果需要自定义路由中间件,可以在 `middleware` 文件夹下创建文件,例如 `router.js`[^2]: ```javascript export default defineNuxtRouteMiddleware((to, from) => { console.log(to, from) }) ``` ### 注意事项 - 确保 Node.js 版本符合 Nuxt 3 的要求,通常建议使用 LTS 版本。 - 如果遇到权限问题,尝试以管理员身份运行命令或检查 `.nvmrc` 文件中的 Node.js 版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值