• markdown文档管理工具


    介绍

    电脑中存了很多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,设置网页的keywords 和 description

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

    技术实现

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

    一. markdown转html

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

    1. var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
    2. var result = Markdown.ToHtml(txt,pipeline);

    二. 动态Controller

    使用方法MapDynamicControllerRoute()

    实现思路

    1.定义路由规则

    1. app.UseEndpoints(endpoints =>
    2. {
    3. endpoints.MapControllerRoute(
    4. name: "default",
    5. pattern: "{controller=Home}/{action=Index}/{id?}");
    6. endpoints.MapDynamicControllerRoute<TranslationTransformer>("{project}/{action}.html");
    7. endpoints.MapDynamicControllerRoute<TranslationTransformer>("{project}/{controller}/{action}.html");
    8. });

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

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

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

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

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

    1. //请求将由/doc/detail接管
    2. public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
    3. {
    4. if (!values.ContainsKey("project") || !values.ContainsKey("action")) return values;
    5. var project = (string)values["project"];
    6. string controller = "";
    7. if(values["controller"]!=null)
    8. {
    9. controller = await _translationDatabase.ResolveController(project, (string)values["controller"]);
    10. if (controller == null) return values;
    11. }
    12. var action = await _translationDatabase.ResolveAction(project, (string)values["action"]);
    13. if (action == null) return values;
    14. values["controller"] = "doc";
    15. values["action"] = "detail";
    16. values["projectTag"] = project;
    17. values["dirTag"] = controller;
    18. values["docTag"]= action;
    19. return values;
    20. }

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

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

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

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

    三 缓存

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

    使用内存缓存服务

    builder.Services.AddMemoryCaches();
    

    注入缓存

    1. ICacheProvider cache;
    2. public DocService(IEnumerable<ICacheProvider>caches)
    3. {
    4. env = hostEnvironment;
    5. cache = caches.FirstOrDefault(c => c.CacheName== "memory");
    6. }
    7. public void test()
    8. {
    9. //cache.Get("key")
    10. //cache.Set("key","value")
    11. }

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

    好了, 以上是本文所有内容,希望对大家有所帮助,也希望大家对码农之家多多支持,你们的支持是我创作的动力!祝大家生活愉快! 

  • 相关阅读:
    基于RK3568开源鸿蒙的助农金融服务终端设计方案
    剪辑视频时PR播放卡顿不连贯|如何修复Premiere软件中播放太卡问题
    大数据系统架构师的论文如何写
    算法|每日一题|做菜顺序|贪心
    Head First设计模式(阅读笔记)-09.模板方法模式
    【从入门到起飞】IO高级流(1)(缓冲流,转换流,序列化流,反序列化流)
    基于Java毕业设计学籍管理系统源码+系统+mysql+lw文档+部署软件
    DBCO的PEG连接剂1480516-75-3,DBCO-PEG4-Maleimide(MAL)
    Nature子刊|“二代+三代”宏基因组学揭示肠道微生物群的个性化结构变异
    穿越晋商百年-体验非遗文化
  • 原文地址:https://blog.csdn.net/wuxiaopengnihao1/article/details/126754212