nuxt3:我们开始吧-开发-配置-部署(二)

简介: nuxt3:我们开始吧-开发-配置-部署(二)

6.6、layouts

6.6.1、理解:布局、页面布局、公共布局、基础布局

6.6.2、根目录创建layouts目录,/layouts/default.vue

<template>
    <div>
        snow-default-layout
    </div>
    <slot />
</template>
<script setup lang="ts">
</script>
<style scoped>
</style>

6.6.3、app.vue

<template>
  <NuxtLayout>
    <NuxtPage/>
  </NuxtLayout>
  <!-- <div>
    <NuxtWelcome />
  </div> -->
</template>

6.6.4、

6.6.5、某页面不想使用layout:

definePageMeta({
    layout: false
})

6.6.6、某页面使用指定layout

definePageMeta({
    layout: 'layout-snow'
})

 6.6.7、动态设置layout

const router = useRoute()
function enableLayout () {
    router.meta.layout = "layout-snow"
}

6.6.8、全局设置,指定layout

<template>
  <NuxtLayout :name="layoutSnow">
    <NuxtPage/>
  </NuxtLayout>
  <!-- <div>
    <NuxtWelcome />
  </div> -->
</template>
<script setup lang="ts">
const layoutSnow = ref("layout-snow")
</script>

6.7、plugins

/plugins/index.ts

export default defineNuxtPlugin(()=>{
    return {
        provide: {
            hello: (msg: string) => `hello ${msg}`
        }
    }
})

/pages/plugin.vue

<template>
    <div>
        snow-plugin
    </div>
</template>
<script setup lang="ts">
const { $hello } = useNuxtApp()
console.log('9', $hello('world'))
</script>
<style scoped>
</style>

6.8、middleware

/middleware/auth.ts

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

/middleware/snow.ts

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

/pages/plugin.vue

<template>
    <div>
        snow-plugin
    </div>
</template>
<script setup lang="ts">
definePageMeta({
    middleware: ["auth", "snow"]
})
</script>
<style scoped>
</style>

如图:

6.9、server

6.9.1、目录

6.9.2、server/api/hello.ts

export default defineEventHandler((event) => {
    return {
        api: "works"
    }
})

6.9.3、server/api/test.get.ts

export default defineEventHandler((event) => {
    return `test get ts`
})

6.9.4、server/api/test.post.ts

export default defineEventHandler((event) => {
    return `test post ts`
})

post请求需要使用postman工具:

6.9.5、 server/api/foo/[...].ts

可以带有参数

export default defineEventHandler(() => `default api handle`)

6.9.6、server/api/submit.post.ts

export default defineEventHandler (async (event) => {
    const body = await readBody(event);
    return { body }
})

6.9.7、server/api/query.get.ts

export default defineEventHandler((event) => {
  const query = getQuery(event)
  return { a: query.param1, b: query.param2 }
})

6.10、使用element-plus

6.10.1、安装

pnpm install element-plus

pnpm add  sass sass-loader -D

pnpm add unplugin-auto-import unplugin-icons unplugin-vue-components -D

6.10.2、package.json

{
    "private":true,
    "scripts":{
        "build":"nuxt build",
        "dev":"nuxt dev",
        "generate":"nuxt generate",
        "preview":"nuxt preview",
        "postinstall":"nuxt prepare"
    },
    "devDependencies":{
        "nuxt":"3.0.0",
        "sass":"1.57.1",
        "sass-loader":"13.2.8",
        "unplugin-auto-import":".12.1",
        "unplugin-icons":".14.15",
        "unplugin-vue-components":".22.12"
    },
    "dependencies":{
        "element-plus":"^2 .2.27"
    }
}

6.10.3、assets/scss/index.scss

@use "element-plus/dist/index.css";

6.10.4、tsconfig.json

{
  // https://nuxt.com/docs/guide/concepts/typescript
  "extends": "./.nuxt/tsconfig.json",
  "compilerOptions": {
    "types": ["element-plus/global"]
  }
}

6.10.5、 nuxt.config.ts

import AutoImport from 'unplugin-auto-import/vite'
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import IconsResolver from "unplugin-icons/resolver";
const lifecycle = process.env.npm_lifecycle_event;
export default defineNuxtConfig({
    vite: {
        plugins: [
            AutoImport({
                resolvers: [
                    ElementPlusResolver(
                    ),
                    IconsResolver()]
            }),
            Components({
                dts: true,
                resolvers: [ElementPlusResolver(
                    {
                        importStyle: false
                    }
                )]
            }),
        ],
    },
    components: true,
    css: ["~/assets/scss/index.scss"],
    transpile: ["element-plus"],
    build: {
        transpile: lifecycle === "build" ? ["element-plus"] : [],
    },
})

6.10.6、plugins/element-plus.ts

import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
    // Doing something with nuxtApp
    nuxtApp.vueApp.provide(ID_INJECTION_KEY,{
        prefix: Math.floor(Math.random() * 10000),
        current: 0,
    })
  })

6.10.7、pages/index.vue

<el-button> ElButton </el-button>

6.10.8、成功实现效果

相关文章
|
存储 应用服务中间件 nginx
nuxt3:我们开始吧-开发-配置-部署(三)
nuxt3:我们开始吧-开发-配置-部署(三)
2571 0
|
算法 Unix Linux
Linux命令之gzip
linux命令之gzip
564 1
|
JavaScript 中间件 API
nuxt3:我们开始吧-开发-配置-部署(一)
nuxt3:我们开始吧-开发-配置-部署(一)
1714 0
|
定位技术
Echarts使用geojson地理坐标地图地名label标签位置不居中调整的解决方案
Echarts使用geojson地理坐标地图地名label标签位置不居中调整的解决方案
1093 0
|
7月前
|
网络协议 前端开发 JavaScript
HTTP/2 特点解析,从 HTTP/1.1 的痛点到新一代协议的进化
HTTP/2 解决 HTTP/1.1 队头阻塞、低效传输等痛点,通过多路复用、二进制帧、头部压缩等技术大幅提升加载速度,支持服务器推送与流优先级,优化用户体验。虽仍受制于 TCP 丢包问题,但已是当前主流高性能协议,为迈向 HTTP/3 奠定基础。
960 159
|
缓存 UED
什么是Expires字段
【8月更文挑战第18天】什么是Expires字段
1416 1
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
544 16
|
运维 安全 数据建模
阿里云免费SSL证书和收费版SSL证书有什么区别?
阿里云提供免费与收费SSL证书,前者有效期仅3个月,适合个人网站或测试使用;后者有效期至少1年,具备更高安全等级、良好兼容性及OCSP验证稳定性等优势,适用于企业网站,尤其政府、金融等领域建议选用OV或EV型证书以确保数据与身份认证安全。详细了解与报价请访问SSL证书官方页面。
2507 2
|
前端开发 测试技术 API
NuxtJS3配置多环境变量
OK,配置完成~~~~~~
594 4
|
JavaScript Go
VUE3+vite项目中动态引入组件和异步组件
VUE3+vite项目中动态引入组件和异步组件
2027 1