文档管理平台
文档管理平台 doc-manage-platform
场景:包括技术文档,接口文档、需求文档、个人笔记、写作网站
markdown编辑器
参考项目:
bytemd编辑器使用
bytemd是字节开发的一款富文本编辑器,功能强大,而且支持很多掘金内置的主题,可用于vue,react,
- 主题可以使用juejin-markdown-themes,虽然名叫juejin,其它里边有很多风格的css选择,
- 直接引入
@import 'juejin-markdown-themes/dist/juejin.min.css'即可
- 直接引入
引入主题样式之后,会显示和掘金一样的主题,有显示目录、预览等功能
如何自定义工具栏
- 定义一个插件,使用actions
显示目录和定位
参考:https://juejin.cn/post/7055451634561712158
左边区域树
- 右键自定义菜单实现节点增删改
参考:https://blog.csdn.net/Luo_LA/article/details/122470744
文档管理
- js
- html
- css
渲染markdown内容
如何生成锚点目录树
参考:https://blog.csdn.net/plumbiu/article/details/126573568
可以使用marked, 而不是markdown-it, 因为markdown-it无法渲染内容过长的md文件内容
如何生成一个markdown 目录?
1、makdown中的#,##,##组成的标题经过marked等工具转化渲染到网页中会成变成h标签,所以当拿到文章详情页后可以从中抽离出所有的目录标签即h1,h2,h3....
2、拿到这些标题之后就可以进行锚点的设置
①:设置一个锚点链接 <a href="#test">test</a>(注意:href属性的属性值最前面要加#)
②:在页面中需要的位置设置锚点<h1 id="test"></h1>(注意:a标签中要写一个id属性,属性值要与①中的href的属性值一样,不加#)
如何通过文本字符串来生成markdown内容
参考:https://learnku.com/articles/51188
通过文章接口渲染 Markdown 格式的内容
-
通过第三方库,将Markdown 转换为 HTML
-
marked库
-
bytemd
- 编辑就是editor预览就是viewer,编辑的时候你使用editor,存储md数据到数据库,使用viewer渲染你存储的md文件
-
markdown编辑器功能
使用了markdown编辑器,基于第三方库实现,内置了很多功能
- 支持所见即所得编辑模式
需求
1、markdown内容,保存到数据库,
2、获取每个用户下所有文章
3、根据文章进行分类,进行树形结构
创建"users"的表、"articles"的表、"categories"的表
4、文档模式 【阅读, 编辑、发布】
5、登录/注册
6、文章分类
7、如何把文章保存到数据库?
后端需求
-
登录/注册
-
发布接口
-
目录树接口
- 新增/修改/删除
发布接口
数据库
创建文章表
参考:【markdown内容 用text使用文本类型来存储】
CREATE TABLE `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL DEFAULT '',
`content` text NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
id: 文章的唯一标识符,使用自增长整数类型。title: 文章的标题,使用字符串类型。content: 文章的正文内容,使用文本类型。created_at: 文章创建时间,使用日期时间类型。updated_at: 文章更新时间,使用日期时间类型。
遇到问题
1、url参数中文乱码 【文件目录会存在中文】,导致无法跳转路由
- 可通过 encodeURIComponent/decodeURIComponent 来进行编码和解码
路由跳转的时候,通过 encodeURIComponent编码
在接受参数的时候,通过decodeURIComponent解码
const path = decodeURIComponent(path) // path可能为中文,进行编码
router.push(path)
const fullPath = decodeURIComponent(useRoute().fullPath) // 解码
2、当用户存在文档目录时候,默认显示第一个目录下第一个文件
关键技术分析
参考系列
- 掘金官网平台/飞书设计
- 第三方库markdown编辑器:bytemd编辑器
- 空状态图片素材: https://www.zcool.com.cn/work/ZNTg5Nzc5NjA=.html
编辑器参考: