首页 > 其他分享 >markdown文档管理工具

markdown文档管理工具

时间:2022-09-07 19:45:23浏览次数:109  
标签:md markdown 管理工具 文件夹 values action 文档

介绍

电脑中存了很多markdown文档,为了管理这些文档,特写了这个md管理工具。

我的想法是,把现有的markdown文件复制到指定文件夹中,自动生成markdown的网页,不仅可以在自己电脑上运行,而且还能把它上传到网站上,供其它人在线使用;多个markdown文档项目可同进行管理,以后只需增删改查markdown文件。

最近花了点时间,完成了这个小巧便㑺的md文档管理应用RsCode.Doc.Web

功能

  1. markdown文档自动生成url,可以通过浏览器访问,方便管理

  2. 自动生成文档目录,并且自定义文档url名称

  3. 可在电脑上直接运行

  4. SEO友好,可部署为网站运行

特点

  1. 不使用任何数据库

  2. 同时管理多个项目文档

  3. 可自定义url,服务端生成html,在线上运行(支持windows和linux),更有利于seo

  4. 可直接在PC端运行,也可以在部署在服务器上运行

下载

下载地址 https://pan.rs888.net/detail/32

下载密码 rscode

使用

  1. 打开Document文件夹

    解压后,先打开项目文件夹,有个名称为Document的文件夹,如果没有就新建一个;

  2. 复制md文件

    把你的md文件或文件夹复制到Document文件夹下,例子中的可以参考,或删除

  3. 双击运行Rswl.Doc.Web.exe

    打开cmd窗口不要关闭,在浏览器中打开 http://localhsot:5000即可访问

以后新增或修改md文件,直接丢到这个文件夹里就行了

提示:如果电脑上没有安装.net ,请打开https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0

windows系统 下载 HostingBundle下载Asp.net Core

macOs系统 下载相安装包

rscode的文档就是用它来运行的,可供参考rscode.cn

配置

项目文件夹下,有个doc.json的文件,节点conig保存的是配置

name 表示真实存在的文件夹名称或文件名(不含扩展名)

tag 表示这个文件夹或文件的别名,值为英文字母或数字,url将显示tag

profile 定义文档简称

title 定义网页标题

description 定义网页描述

keywords 定义网页关键词

cacheTime 缓存时间,以分钟为单位

如果部署为网站,建议对中文的文件夹或文件名设置tag,设置网页的keywordsdescription

如果不对文件或文件夹配置,文件访问地址将变为 http://xx.xx/文件夹名/文件名.html的形式

技术实现

使用asp.net core mvc开发这个应用,用到markdown转html,动态控制器,缓存等技术

一. markdown转html

引用Markdig,对md文件的内容进行html转码

var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
var result = Markdown.ToHtml(txt,pipeline);
二. 动态Controller

使用方法MapDynamicControllerRoute()

实现思路

1.定义路由规则

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
  
    endpoints.MapDynamicControllerRoute<TranslationTransformer>("{project}/{action}.html");
    endpoints.MapDynamicControllerRoute<TranslationTransformer>("{project}/{controller}/{action}.html");
});

2.将符合规则的url,交给指定的Controller/Action进行管理

2.1 注册符合规则的路由数据

​ 将文件夹和文件的tag数据保存,以供url验证

2.2 处理符合规则的路由,接管理请求

​ 自定义TranslationTransformer类继承DynamicRouteValueTransformer,重写TransformAsync()

 //请求将由/doc/detail接管
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
    if (!values.ContainsKey("project")  || !values.ContainsKey("action")) return values;

    var project = (string)values["project"];
    string controller = "";
    if(values["controller"]!=null)
    {
        controller = await _translationDatabase.ResolveController(project, (string)values["controller"]);
        if (controller == null) return values;
    }
    var action = await _translationDatabase.ResolveAction(project, (string)values["action"]);
    if (action == null) return values;

    values["controller"] = "doc";
    values["action"] = "detail";

    values["projectTag"] = project;
    values["dirTag"] = controller;
    values["docTag"]= action;

    return values;
}

values 保存的是符合规则的路由参数,把己注册过的 url 交给doc/detail处理数据

3.指定的Controller/Action负责读取md,转成html

doc/detail 得到参数 projectTag,dirTag,docTag

​ 查找/projectTag/dirTag/docTag.md文件内容

三 缓存

使用RsCode中的缓存,使用内存缓存

使用内存缓存服务

builder.Services.AddMemoryCaches();

注入缓存

ICacheProvider cache;
public DocService(IEnumerable<ICacheProvider>caches)
{
    env = hostEnvironment;
    cache = caches.FirstOrDefault(c => c.CacheName== "memory");
}

public void test()
{
    //cache.Get("key")
    //cache.Set("key","value")    
}

简单的逻辑,解决了我md文档管理的大问题,如果你有疑问,可进群交流

.net技术交流

标签:md,markdown,管理工具,文件夹,values,action,文档
From: https://www.cnblogs.com/kuiyu/p/16667045.html

相关文章

  • markdown学习
    标题:标题:#+空格+标题名字+回车一级标题一个#,二级标题两个#,三级四级五级六级也是一级标题二级标题​字体的设置:粗体:在前后加两个。hello。斜体:两边一个。hello两......
  • MarkDown基础操作
    MarkDown基本操作一、标题1、#+空格=一级标题2、##+空格=二级标题3、###+空格=三级标题(最多到六级标题)二、字体1、**+字体+**=粗体2、*+字体+*=......
  • Markdown编辑器
    @目录欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个......
  • Markdown 图片路径问题
    1.插入图片路径:本地目录1:./images/${filename}.assets  本地目录2:D:\docsify\images/${filename}  ......
  • Markdown学习
    Markdown学习标题三级标题四级标题字体helloworldhelloworldhelloworldhelloworld引用加油努力学习,走向人生巅峰分割线图片超链接点击跳转到我的博......
  • Markdown
    Markdown标题三级四级字体helloWord!helloword!helloword!引用选择超链接点击点击列表1.a2.b表格名字性别生日张三男1992.1......
  • 搭建Docker的图形化管理工具——Portainer
    一、下载Portainer镜像#查询Portainer镜像,这里选择stars最高的,第二个是汉化版,可自行选择dockersearchportainer#拉取镜像dockerpullportainer/portainer二......
  • redis集群部署文档
    1.部署的服务器ip地址172.16.0.151172.16.0.173172.16.0.2202.redis版本wgethttps://download.redis.io/releases/redis-6.2.5.tar.gz3.部署架......
  • 【论文笔记】LayoutLMv2:将视觉信息加入到预训练阶段的跨模态文档预训练模型
    概述LayoutLMv2是对LayoutLM的改进,主要有以下几点区别:将视觉信息加入到了预训练阶段,而不是LayouLM中的微调阶段删除了MDC,添加了text-imagealignment和text-imgaematc......
  • etcd集群部署文档
    1.部署的服务器ip地址172.16.0.151172.16.0.173172.16.0.2202.etcd版本 wgethttps://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-li......