Day 5:03. 基于Nuxt开发博客项目-页面结构组织

一、前言

接下来我将从项目目录规划入手,逐步讲解布局系统、页面路由、组件化设计等核心概念。我会先大致完成一个博客的基本功能,后续去优化它的界面。

这个是我的示例站点,在这里可以看到我目前的进度,www.csyblog.cn/

本文涉及的所有文档官方地址:
nuxt官网:nuxt.com/
tailwindcss官网:tailwindcss.com/
daisyui官网:daisyui.com/

二、最小配置和目录结构

这里我先列出我项目目录结构,大致可以了解一下,可供参考。随着项目的迭代,这个结构也会有一些调整

csharp 复制代码
csyblog-nuxt4                      
├─ app                             
│  ├─ assets                       
│  │  └─ css                       
│  │     └─ main.css        	# 全局样式配置        
│  ├─ components                   
│  │  ├─ common                    
│  │  │  ├─ AppFooter.vue      	  # 头部组件     
│  │  │  ├─ AppHeader.vue        # 底部组件     
│  │  │  └─ AppSidebar.vue       # 侧边栏组件  
│  │  └─ ui                        
│  │     └─ bg-falling-stars       
│  │        ├─ FallingStarsBg.vue  # UI组件
│  │        └─ index.ts            
│  ├─ layouts                      
│  │  └─ default.vue             # 默认布局          
│  ├─ lib                          
│  │  └─ utils.ts                  
│  ├─ pages                        
│  │  ├─ blog                      
│  │  │  ├─ index.vue            # 博客列表页     
│  │  │  └─ [slug].vue            # 博客详情页   
│  │  ├─ about.vue               # 关于页面  
│  │  └─ index.vue               # 首页    
│  ├─ utils                        
│  └─ app.vue   			        # 根组件               
├─ public                          
│  ├─ favicon.ico                  
│  └─ robots.txt                   
├─ components.json                 
├─ nuxt.config.ts      		        # Nuxt 配置文件          
├─ package.json                    
├─ pnpm-lock.yaml                  
├─ README.md                       
└─ tsconfig.json                   

1. app.vue

如果你一直跟着我的进度来的话,这里先清空原先测试UI时的代码。

vue 复制代码
<template>
  <NuxtLayout>
    <NuxtPage />
  </NuxtLayout>
</template>

2. nuxt.config.ts

typescript 复制代码
import tailwindcss from "@tailwindcss/vite";

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: '2025-07-15',
  devtools: { enabled: true },
  css: ['./app/assets/css/main.css'],
  modules: ['motion-v/nuxt'],
  vite: {
    plugins: [
      tailwindcss(),
    ],
  },
  components: [
    {
      path: '~/components',
      pathPrefix: false,
    },
  ],
  app: {
    head: {
      title: '申阳的博客',
      meta: [
        { charset: 'utf-8' },
        { name: 'viewport', content: 'width=device-width, initial-scale=1' }
      ]
    }
  }
})

3. 布局 layouts/default.vue

vue 复制代码
<script setup lang="ts"></script>

<template>
  <div class="min-h-screen">
    <AppHeader />
    <main class="flex">
      <AppSidebar />
      <slot />
    </main>
    <AppFooter />
  </div>
</template>

三、完善一下页面布局,伪代码

我们先把接下来的开发方向大致定一下,然后逐步的去是实现,每天完善一点。

  • 头部导航
  • 侧边栏
  • 主体显示
  • 底部显示
  • 博客页/详情展示

我们不用考虑细节,先用有色方块占住位置,让我们有个大概认知。

这里我就不赘述了,后续我会将源码公开。

大致就会变成下面这样。

四、引入 daisyUI 组件库

官网地址: daisyui.com/

GitHub:github.com/saadeghi/da...

之前我们引入了Inspira UI 目的在于一些炫酷的动画效果组件,而日常开发使用更多的其实是一些,按钮,表单等等,这个时候daisyui则更为合适,最重要的是它与tailwindcss 高度契合,没有任何使用负担。

1. 安装

bash 复制代码
pnpm add -D daisyui@latest

2. 添加指令

css 复制代码
@plugin "daisyui";

3. 测试

vue 复制代码
<div class="flex justify-center items-center grow">
    <button class="btn btn-neutral">Neutral</button>
    <button class="btn btn-primary">Primary</button>
    <button class="btn btn-secondary">Secondary</button>
    <button class="btn btn-accent">Accent</button>
    <button class="btn btn-info">Info</button>
    <button class="btn btn-success">Success</button>
    <button class="btn btn-warning">Warning</button>
    <button class="btn btn-error">Error</button>
</div>

五、头部组件开发

接下来就是组件开发阶段了,这里我先大致描述一下目标,具体实现,大家可以根据自己情况来,下面我贴几个常见的头部菜单,可供参考。大家也可以去这里找一找有没有顺眼的,参考一下,hexo.io/themes/

六、展示最终效果

  • 吸顶效果
  • 半透明效果
  • 点击按钮跳转到指定路由

千里之行,始于足下。你的"个人公司"从这第一个2小时开始。欢迎在评论区分享你的进展或遇到的卡点,我会逐一查看,尽可能的帮住解决。我们下一篇文章见!

相关推荐
m0_7381207210 小时前
应急响应——知攻善防蓝队靶机Web-1溯源过程
前端·网络·python·安全·web安全·ssh
未来之窗软件服务10 小时前
浏览器开发CEF(二十一)C#浏览器 Promise模式调用——东方仙盟元婴期
前端·javascript·html·仙盟创梦ide·东方仙盟·东方仙盟vos智能浏览器
dyxal10 小时前
块状Bootstrap:让金融时间序列“记忆”不丢失的魔法
前端·金融·bootstrap
华仔啊11 小时前
深入理解 CSS 伪类和伪元素的本质区别
前端·css
HIT_Weston11 小时前
64、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(八)
前端·ubuntu·gitlab
韩立学长11 小时前
【开题答辩实录分享】以《智慧酒店管理——手机预订和住宿管理》为例进行选题答辩实录分享
android·java·后端
何中应11 小时前
【面试题-8】Spring/Spring MVC/Spring Boot/Spring Cloud
java·spring boot·后端·spring·mvc·面试题
余生H11 小时前
前端科技新闻(WTN-3)React v19 引发 Cloudflare 异常事件复盘 - 一次序列化升级,如何影响全球边缘网络?
前端·科技·react.js
HIT_Weston11 小时前
62、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(六)
前端·ubuntu·gitlab
ID_1800790547311 小时前
淘宝关键词搜索 API 系列 数据返回参考(附解析与实战)
java·服务器·前端