首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Phodit:打造智能的 Markdown 编辑器

Phodit:打造智能的 Markdown 编辑器

作者头像
Phodal
发布于 2018-08-17 09:56:18
发布于 2018-08-17 09:56:18
9890
举报
文章被收录于专栏:phodalphodal

最近,我在写一个新的 markdown “项目”,过程中发现没有合适的 markdown 客户端。于是,我希望为自己定制一款全新的编辑器,原因有许多吧,大抵是没有一个编辑器能满足我的需求。

竞品分析

我的需求简单的来说,就是可以打开一个 markdown 工程,在这个编辑器里可以做 markdown 相关的事,比如转换成 docx、将 markdown 作为 slide 等等。

  • MacDown 的问题是不能作为工程能管理,也就是说无法同时处理多个文件。
  • Sublime + Markdown 插件,这是我过去来写电子书的工具。尽管加上了插件,但是它在提供不了 markdown 实时预览功能。
  • 在线工具相比就更加麻烦了。

首先,我想要的不再只是一个简单的编辑器,它应该完成 Markdown 相关的功能。

Markdown First

于是,第一部分的 Task 就是作为一个编辑器而存在。而为了降低系统的复杂度,我尝试在项目中使用微前端架构——并且是为了使用而使用。

如下便是示例:

Phodit

对应的技术栈如下:

  • Stencil.js + Web Components 完成了 Terminal 的关闭功能
  • SimpleMDE + CodeMirror 改造了编辑器
  • React.js 完成了左侧导航
  • 基于 xterm.js + node-pty 的 Terminal
  • marked 用于 Markdown Parser
  • Lunr 作为 Search Engine
  • Echoesworks 作为 Slides 引擎
  • Node Jieba 用来作中文分词

目前,总的来说功能还比较简单。基本上整个应用的架构模式是,发布/订阅模式。

比如:触发了左侧的 treeview 点击事件之后,treeview 组件通过 customEvent 告诉 renderer 有点击事件,再由 renderer 告诉 electron 应用执行什么操作。因此 renderer 作为整个应用的中介者存在。

然而,这也导致了整个系统需要重构。事件机制过于复杂,需要进一步优化。但是总的来说,这也是我想遇到的情况——找到一个有意思的问题,然后解决它。

新功能

Slide

将 Markdown 作为分享的 Slide 功能,已经实现了一部分。尽管仍然还有些问题,但是正在进行改进。不过,我猜测应该是我设计有些问题。

总之,在写的过程中,我似乎想到一个方案了。

右键搜索

搜索作为写文章的一个常用功能,便把它集成到了编辑器里了。只需要右键文本:

右键搜索

选中你需要的搜索引擎,即可进行下一步搜索。

走向智能化

对于整个应用来说,我最希望解决的是自动化一些文本操作,比如生成一些语句,但是就目前而言难度比较大。

目前,我实现的第一个功能是找到我相关的文章,然后自动完成——一个相当简单的功能,只是它是离线构建的。只需要输入个 “《 ” 名号就可以了:

文章自动完成

这部分是作为熟悉 CodeMirror 和架构设计的初步。

下一步,则是使用 Web Worker 进行更复杂的计算功能。不过,目前遇到一些 TypeScript 的编译问题,需要进一步解决。

End

不说了,这是项目的 GitHub 地址:https://github.com/phodal/phodit

网站:https://www.phodit.com/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 phodal 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Gorm-数据库连接池管理
Gorm是一个支持多种数据库的ORM框架,因此它在数据库连接池管理方面也提供了一些功能。在Gorm中,连接池是自动管理的,它根据应用程序的需求动态地增加或减少连接数,从而提高数据库访问的效率。
堕落飞鸟
2023/04/24
5.6K0
Gorm-数据库连接池管理示例
在这个示例中,我们创建了一个数据库连接池,然后使用Gorm进行了一些简单的数据库操作。首先,我们创建了一个名为User的结构体,并调用了AutoMigrate方法来创建数据库表。然后,我们插入了两条数据,并使用Find方法查询了所有的数据。
堕落飞鸟
2023/04/24
9050
go-zero 中使用 gorm gen
由于go-zero自带的sqlx太难用, 实在无法忍受写这么多的魔法字符串, 所以这边在go-zero中引入gorm
seth-shi
2023/12/18
1.3K0
gRPC 网关,针对 HTTP 2.0 长连接性能优化,提升吞吐量
简单看下即可,由于含有定制化业务背景,架构图看不懂也没关系,后面我会对里面的核心技术点单独剖析讲解
微观技术
2021/07/05
4.4K0
线上问题分析系列:数据库连接池内存泄漏问题的分析和解决方案
上周五晚上主营出现部分设备掉线,经过查看日志发现是由于缓存系统出现长时间gc导致的。这里的gc日志的特点是:
捡田螺的小男孩
2020/05/17
2.9K0
nginx使用长连接代理grpc流量
Nginx在1.13.10版本支持了对grpc流量的反向代理,恰好业务有需求,要在sidecar容器中代理grpc流量。因此参考指引文档进行了配置。但是并未如预期般顺利运行,按照示例配置后,nginx与后端的grpc服务并非长连接,导致了一系列问题,在此做个记录,也给有需要的读者做一个参考,对具体过程不感兴趣的可直接跳到最后查看完整配置。
我有一只萌妹子
2022/10/09
4.1K3
gRPC 性能测试利器:ghz 工具详解
最近要深入研究下限流器,要研究限流首先要模拟大流量,那就得找一款比较合适好用的压测工具
不做虫子
2025/09/08
1790
gRPC 性能测试利器:ghz 工具详解
gRPC 客户端调用服务端需要连接池吗?
在微服务开发中,gRPC 的应用绝对少不了,一般情况下,内部微服务交互,通常是使用 RPC 进行通信,如果是外部通信的话,会提供 https 接口文档
阿兵云原生
2023/09/01
1.2K0
gRPC 客户端调用服务端需要连接池吗?
Java生态中性能最强数据库连接池HikariCP
字节码精简:优化代码,直到编译后的字节码最少,这样,CPU缓存可以加载更多的程序代码; 优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一; 自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range check,避免调用remove()时的从头到尾的扫描; 自定义集合类型(ConcurrentBag):提高并发读写的效率;
JavaEdge
2020/05/27
1.2K0
Java生态中性能最强数据库连接池HikariCP
为什么我们更喜欢 gRPC 进行微服务开发?
想象一下,有一天你的服务崩溃或突然关闭,以及后果:资源泄漏、交易不完整和整个微服务生态系统的混乱。这个问题的解决方案是什么?
Michel_Rolle
2024/01/18
4.2K0
Go数据库连接池设置不合理导致大量TIME_WAIT连接占满端口问题排查与解决
最近公司内部准备尝试使用下腾讯的TDSQL,因此组内同学写了一段很简单的查询TDSQL的go web程序,使用ab对其进行一个简单压测以获取TDSQL的性能表现,go代码如下:
Orlion
2024/09/02
4270
Go数据库连接池设置不合理导致大量TIME_WAIT连接占满端口问题排查与解决
PGbouncer-轻量级PG连接池管理工具
导言:曾经听说过一句话,用 PostgreSQL 而不用连接池,绝对是坑爹的做法…… 哪怕是像 pgbouncer 这样的“轻量级”连接池,有和没有的区别都不是一般的大。
腾讯云数据库 TencentDB
2021/09/07
3.2K0
HikariPool 连接池问题
问题描述: 腾讯云上 centos7 安装的 mysql 5.7.27,SpringBoot 使用 Hikaricp 连接池连接 MySQL。
全栈程序员站长
2022/09/10
4.6K2
HikariPool 连接池问题
从Java全栈到Vue3实战:一场真实技术面试的深度复盘
一位Java全栈开发工程师在面试中分享了他的技术经验和实战案例,涵盖前后端、数据库、安全、测试与部署等多方面内容。
用魔法才能打败魔法
2025/08/24
1880
从Java全栈到Vue3实战:一场真实技术面试的深度复盘
工作中你会使用到 grpcurl 吗?
导入咱们的 tenant.proto 文件后,可以看到咱们服务端提供的如下两个接口:
阿兵云原生
2023/09/12
5530
工作中你会使用到 grpcurl 吗?
再有谁说不熟悉夜莺( Nightingale )监控系统,就把这个给他扔过去!
夜莺监控( Nightingale )是一款国产、开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体。于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 60 多个版本。从 v5 版本开始与 Prometheus、VictoriaMetrics、Grafana、Telegraf、Datadog 等生态紧密协同集成,提供开箱即用的企业级监控分析和告警能力,已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为使用夜莺监控。
民工哥
2023/11/16
23K1
再有谁说不熟悉夜莺( Nightingale )监控系统,就把这个给他扔过去!
gRPC: 如何添加 API Prometheus 监控拦截器/中间件?
本文将介绍如何在 gRPC 微服务中添加 API Prometheus(普罗米修斯)拦截器/中间件。也就是可以在 Grafana 里做的 API 监控。
尹东勋
2021/10/15
1.9K0
gRPC: 如何添加 API Prometheus 监控拦截器/中间件?
用 Docker 在一台宿主机启动多个 etcd 节点
在学习和开发基于 etcd 的服务和功能时,需要自己在本地部署一套 etcd 集群。
amc
2021/02/22
2.4K0
用 Docker 在一台宿主机启动多个 etcd 节点
Chisel:一款基于HTTP的快速稳定TCPUDP隧道工具
关于Chisel Chisel是一个快速稳定的TCP/UDP隧道工具,该工具基于HTTP实现其功能,并通过SSH保证通信安全。Chisel是一个可执行文件,其中包含了客户端和服务器端,该工具基于Go(golang)语言开发,因此具备较好的跨平台特性。 Chisel主要可以用于绕过防火墙,但也可以用于向网络中提供安全终端节点。 工具的运行机制如下图所示: 功能介绍 易于使用; 高性能; 使用SSH协议对通信连接进行加密(通过crypto/SSH); 连接经过身份验证; 通过用户配置文件进行身份验证的客户端;
FB客服
2023/04/26
1.7K0
Chisel:一款基于HTTP的快速稳定TCPUDP隧道工具
(译)Istio:503、UC 和 TCP
最近 AutoTrader 在调试一个有些复杂的问题,这一过程得到了 Istio 团队的很多帮助。这个问题现在已经基本得到了解决,这一过程中采取的一些措施可能对其他用户有所启发,因此有了本文。
崔秀龙
2019/07/24
3.6K0
推荐阅读
相关推荐
Gorm-数据库连接池管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档