当前位置: 首页 > 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 文件夹下的…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作&#xff1a; 压缩包下载&#xff1a;http://download.redis.io/releases 1. 上传压缩包&#xff0c;并进入压缩包所在目录&#xff0c;解压到目标…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...

spring boot使用HttpServletResponse实现sse后端流式输出消息

1.以前只是看过SSE的相关文章&#xff0c;没有具体实践&#xff0c;这次接入AI大模型使用到了流式输出&#xff0c;涉及到给前端流式返回&#xff0c;所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL&#xff08;Software OpenGL&#xff09;‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式&#xff08;包括几何处理、光栅化、着色等&#xff09;&#xff0c;不依赖GPU硬件加速。这种模式通常性能较低&#xff0c;但兼容性极强&#xff0c;常用于不支持硬件加速…...