当前位置: 首页 > news >正文

用vue3写一个好看的wiki前端页面

以下是一个使用 Vue 3 + Element Plus 实现的 Wiki 风格前端页面示例,包含现代设计、响应式布局和常用功能:

<template><div class="wiki-container"><!-- 头部导航 --><el-header class="wiki-header"><div class="header-content"><div class="logo-area"><el-icon :size="30" color="#409EFF"><Document /></el-icon><h1 class="title">TechWiki</h1></div><el-inputv-model="searchQuery"placeholder="搜索文档..."class="search-input"@keyup.enter="performSearch"><template #prefix><el-icon><Search /></el-icon></template></el-input><div class="user-area"><el-avatar :size="36" src="https://avatars.githubusercontent.com/u/12345678" /></div></div></el-header><!-- 主体布局 --><el-container class="main-container"><!-- 侧边栏目录 --><el-aside width="260px" class="wiki-sidebar"><el-scrollbar><el-menudefault-active="1"class="wiki-menu"@select="handleMenuSelect"><el-sub-menu index="1"><template #title><el-icon><Folder /></el-icon><span>开发文档</span></template><el-menu-item index="1-1">快速开始</el-menu-item><el-menu-item index="1-2">API 参考</el-menu-item><el-menu-item index="1-3">部署指南</el-menu-item></el-sub-menu><el-sub-menu index="2"><template #title><el-icon><DataAnalysis /></el-icon><span>数据分析</span></template><el-menu-item index="2-1">数据规范</el-menu-item><el-menu-item index="2-2">可视化指南</el-menu-item></el-sub-menu></el-menu></el-scrollbar></el-aside><!-- 主要内容区域 --><el-main class="wiki-content"><el-page-header :icon="null" class="content-header"><template #content><div class="page-title">{{ currentDoc.title }}<el-tag type="warning" v-if="currentDoc.status === 'draft'">草稿</el-tag></div></template></el-page-header><div class="markdown-content" v-html="compiledMarkdown"></div></el-main></el-container></div>
</template><script setup>
import { ref, reactive, computed } from 'vue'
import { marked } from 'marked'
import DOMPurify from 'dompurify'
import hljs from 'highlight.js'// Markdown 配置
marked.setOptions({highlight: function(code, lang) {return hljs.highlightAuto(code).value}
})// 数据
const searchQuery = ref('')
const currentDoc = reactive({title: '欢迎使用 TechWiki',content: `
# 欢迎来到 TechWiki## 快速开始
\`\`\`javascript
// 示例代码
const demo = () => {console.log('Hello TechWiki!')
}
\`\`\`## 功能特性
- 📚 完善的文档管理
- 🔍 强大的搜索功能
- 📝 Markdown 支持
- 🎨 代码高亮显示`,status: 'published'
})// Markdown 编译
const compiledMarkdown = computed(() => {return DOMPurify.sanitize(marked.parse(currentDoc.value.content))
})// 搜索功能
const performSearch = () => {console.log('执行搜索:', searchQuery.value)// 这里可以添加搜索逻辑
}// 菜单选择
const handleMenuSelect = (index) => {console.log('选择菜单:', index)// 这里可以加载对应文档内容
}
</script><style scoped lang="scss">
.wiki-container {height: 100vh;display: flex;flex-direction: column;.wiki-header {background: #2c3e50;color: white;border-bottom: 1px solid rgba(255,255,255,0.1);.header-content {display: flex;align-items: center;height: 100%;max-width: 1400px;margin: 0 auto;padding: 0 20px;.logo-area {display: flex;align-items: center;gap: 12px;.title {margin: 0;font-size: 1.5rem;font-weight: 500;}}.search-input {flex: 1;margin: 0 40px;max-width: 500px;}.user-area {margin-left: auto;}}}.main-container {flex: 1;max-width: 1400px;margin: 0 auto;width: 100%;.wiki-sidebar {background: #f8f9fa;border-right: 1px solid #e9ecef;.wiki-menu {border-right: none;padding: 10px 0;}}.wiki-content {padding: 30px 40px;background: white;.content-header {margin-bottom: 30px;.page-title {font-size: 1.8rem;font-weight: 600;display: flex;align-items: center;gap: 12px;}}.markdown-content {line-height: 1.6;font-size: 16px;:deep(h1) {font-size: 2em;margin: 1.2em 0 0.6em;border-bottom: 1px solid #eee;}:deep(pre) {background: #f8f9fa;padding: 15px;border-radius: 6px;margin: 1em 0;}:deep(code) {font-family: 'Fira Code', monospace;}}}}
}
</style>

主要特性说明:

1.布局结构:

使用 Element Plus 的容器组件实现经典的三栏布局

响应式设计,自动适应不同屏幕尺寸

固定头部 + 滚动内容区域

2.功能模块:

顶部搜索栏(支持回车搜索)

侧边栏多级目录导航

Markdown 内容渲染

代码语法高亮

用户头像展示

3.样式设计:

现代深色系头部导航

浅色侧边栏与内容区域对比

舒适的阅读排版

代码块美化样式

柔和的阴影和边框分隔

4.技术栈:

Vue 3 Composition API

Element Plus 组件库

Markdown 解析(marked + DOMPurify)

代码高亮(highlight.js)

需要安装的依赖:

npm install element-plus @element-plus/icons-vue marked dompurify highlight.js

使用建议:

1.在 main.js 中引入 Element Plus:

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'highlight.js/styles/github.css'createApp(App).use(ElementPlus).mount('#app')

2.添加字体优化(在 index.html 头部):


<link href="https://fonts.googleapis.com/css2?family=Fira+Code&display=swap" rel="stylesheet">

3.扩展功能建议:

添加目录锚点导航

实现文档版本历史

增加评论功能

添加暗黑模式切换

集成实时协作编辑

这个示例实现了一个现代化的 Wiki 页面基础框架,你可以根据实际需求调整颜色方案、添加更多交互功能或集成后端 API。

相关文章:

用vue3写一个好看的wiki前端页面

以下是一个使用 Vue 3 Element Plus 实现的 Wiki 风格前端页面示例&#xff0c;包含现代设计、响应式布局和常用功能&#xff1a; <template><div class"wiki-container"><!-- 头部导航 --><el-header class"wiki-header"><d…...

瑞芯微烧写工具

文章目录 前言一、安装驱动二、安装烧写工具1.直接解压压缩包2. 如何使用 三、MASKROM 裸机必备四、LOADER 烧写&#xff0c;前提是搞过第三步没问题五、Update.img包的烧录六、linux下烧写总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要…...

说下JVM中一次完整的GC流程?

大家好&#xff0c;我是锋哥。今天分享关于【说下JVM中一次完整的GC流程?】面试题。希望对大家有帮助&#xff1b; 说下JVM中一次完整的GC流程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 JVM中的一次完整的垃圾回收&#xff08;GC&#xff09;流程可以概括为…...

Open FPV VTX开源之OSD使用分类

Open FPV VTX开源之OSD使用分类 1. 源由2. 硬件2.1 【天空端】SigmaStar2.2 【天空端】Raspberry Pi2.3 【地面端】 3. 软件3.1 天空端软件3.2 地面端软件 4. 分类4.1 嵌入式OSD分类A1-嵌入式OSD&#xff1a;SigmaStar Android分类A2-嵌入式OSD&#xff1a;SigmaStar Hi3536分…...

智慧农业-虫害及生长预测

有害生物防控系统是一个综合性的管理体系&#xff0c;旨在预防和控制对人类生活、生产甚至生存产生危害的生物。这些生物可能包括昆虫、动物、植物、微生物乃至病毒等。 一、系统构成 1、监测预警系统&#xff1a;利用智能传感器、无人机、遥感技术等手段&#xff0c;实时监测…...

Python 识别图片和扫描PDF中的文字

目录 工具与设置 Python 识别图片中的文字 Python 识别图片中的文字及其坐标位置 Python 识别扫描PDF中的文字 注意事项 在处理扫描的PDF和图片时&#xff0c;文字信息往往无法直接编辑、搜索或复制&#xff0c;这给信息提取和分析带来了诸多不便。手动录入信息不仅耗时费…...

C语言如何知道当前系统中的编译器数据类型的大小是多少?

在 C 语言中&#xff0c;你可以使用sizeof运算符来确定当前系统中编译器数据类型的大小&#xff0c;该运算符返回一个size_t类型的值&#xff0c;表示所操作对象或数据类型占用的字节数。下面为你详细介绍使用方法&#xff1a; 1. 基本数据类型大小的获取 基本数据类型如char…...

gitlab Webhook 配置jenkins时“触发远程构建 (例如,使用脚本)”报错

报错信息&#xff1a; <html> <head> <meta http-equiv"Content-Type" content"text/html;charsetISO-8859-1"/> <title>Error 403 No valid crumb was included in the request</title> </head> <body><h2…...

Mysql中使用sql语句生成雪花算法Id

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

/etc/profile vs ~/.bashrc:如何正确使用?

在 Linux 或 WSL 环境中&#xff0c;我们经常需要配置环境变量、命令别名、路径等信息。然而&#xff0c;许多人在配置时会纠结&#xff1a;到底应该放在 /etc/profile 还是 ~/.bashrc&#xff1f;本文将全面解析它们的区别&#xff0c;并帮助你做出正确的选择。 1. 什么是 /et…...

SpringBoot实战:高效获取视频资源

文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下&#xff0c;海量内容数据日益增长&#xff0c;每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据&#xff0c;已成为各大平…...

Flutter_学习记录_数据更新的学习

Flutter 如果界面上有数据更新时&#xff0c;目前学习到的有3种&#xff1a; 第一种&#xff1a; 直接用 StatefulWidget组件&#xff0c;然后当数据更新时&#xff0c;调用setState的方法更新数据&#xff0c;页面上的数据会直接更新&#xff1b;第二种&#xff1a; 用 State…...

c++ 多线程知识汇总

一、std::thread std::thread 是 C11 引入的标准库中的线程类&#xff0c;用于创建和管理线程 1. 带参数的构造函数 template <class F, class... Args> std::thread::thread(F&& f, Args&&... args);F&& f&#xff1a;线程要执行的函数&…...

day09_实时类标签/指标

文章目录 day09_实时类标签/指标一、日志数据实时采集2、Flume简介2.3 项目日志数据采集Flume配置2.3.1 涉及的Flume组件和参数2.3.2 Nginx日志采集2.3.3 用户行为日志采集 二、Nginx日志数据统计1、日志格式说明2、数据ETL2.1 日志抽取2.1.1 正则表达式2.1.2 基于Spark实现Ngi…...

【前端开发学习笔记16】Vue_9

文章分类架子 多个页面复用&#xff0c;封装成组件&#xff1a; props 定制标题默认插槽 default 定制内容主体具名插槽 extra 定制按钮 <template><el-card class"page-container"><template #header><div class"header"><s…...

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…...

2025年3月营销灵感日历

2025年的第一场营销大战已经拉开帷幕了&#xff01; 三月可是全年最值钱的营销黄金月——妇女节、植树节、315消费者日三大爆点连击&#xff0c;还有春分、睡眠日、世界诗歌日等20隐藏流量密码。 道叔连夜扒了18个行业数据&#xff0c;整理了这份《2025年3月营销灵感日历》&a…...

MySQL的innoDB引擎

一、逻辑存储结构 表空间:ibd文件,一个MySQL实例可以对应多个表空间,用于存储记录,索引等数据; 段:分为数据段(leaf node segment)、索引段(non-leaf node segment)、回滚段(rollback segment),innodb是索引组织表,数据段就是B+树的非叶子节点。段用来管理多个e…...

HCIA项目实践---OSPF的知识和原理总结

9.5 OSPF 9.5.1 从哪些角度评判一个动态路由协议的好坏&#xff1f; &#xff08;1&#xff09;选路佳&#xff08;是否会出环&#xff09; OSPF 协议采用链路状态算法&#xff0c;通过收集网络拓扑信息来计算最短路径&#xff0c;从根本上避免了路由环路的产生。 &#xff08…...

hexo 魔改 | 修改卡片透明度

hexo 魔改 | 修改卡片透明度 ** 博客食物用更佳 博客地址 ** 这是笔者自己瞎倒腾的。作为前端菜鸡一枚&#xff0c;大佬们随便看看就好~ 我用的主题是 butterfly 4.12.0 分析 通过开发者工具可以看出来卡片的背景和 --card-bg 变量有关 再在 sources 下的 css 文件夹下的…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...