Markdown 转换为 HTML 的golang开源项目

在 Go 语言生态中,有不少优秀的开源项目可以将 Markdown 转换为 HTML。下面整理几款常见的工具和库,供选型参考。

GitHub:https://github.com/yuin/goldmark

特点:

  • 高性能,完全符合 CommonMark 标准。
  • 原生支持扩展(如表格、任务列表、删除线、脚注、数学公式等)。
  • 被许多知名项目采用,Hugo 自 v0.60.0 起将其作为默认 Markdown 渲染器。
  • 仅依赖标准库,API 简洁,易于集成。
  • 提供 Playground:https://yuin.github.io/goldmark/playground/
import (
    "bytes"

    "github.com/yuin/goldmark"
)

md := goldmark.New()
var buf bytes.Buffer
if err := md.Convert([]byte("# Hello"), &buf); err != nil {
    panic(err)
}
html := buf.String()

GitHub:https://github.com/russross/blackfriday

Pug:高性能 JavaScript 模板引擎入门

Pug 是一款用 JavaScript 实现的高性能模板引擎(template engine),同时支持 Node.js 与浏览器环境,语法深受 Haml 启发。它通过缩进(indentation)而非闭合标签来组织 HTML 结构,让模板代码更简洁、更具可读性。官方仓库 pugjs/pug 的描述是「robust, elegant, feature rich template engine for Node.js」,目前最新稳定版本为 3.0.x,采用 MIT 协议开源。

基于 boost.asio 的 WebSocket 类库:WebSocket++ 实践要点

在 C++ 项目中接入 WebSocket(RFC 6455)时,如果团队已经在使用 Boost,那么基于 boost::asio 的类库是阻力最小的选择。本文记录笔者在实际项目中使用 WebSocket++(仓库命名 websocketpp)的一些关键特性与踩坑点,重点关注协程环境下的线程模型,以及多连接场景下的正确用法。

boost.asio 网络编程

在 C++ 后端开发领域,Boost.Asio(Asynchronous Input/Output)几乎是事实上的网络与底层 I/O 标准库。它不仅支撑了大量开源项目(如 websocketpp、cpp-httplib 的部分实现思路),也是 C++ 标准委员会 Networking TS 的原型基础。本文整理 Asio 的核心概念、设计模式以及实战要点,帮助你在写第一个高并发服务端时不踩坑。

HTML5 语义化标签

在 [HTML5] 标准中,新增了若干用于增强页面语义的标签,常见的有 articlesectionnavasidemain 等。与大多数普通标签不同,浏览器在渲染这些标签时仅仅把它们当作普通的 div 块级元素处理,不会添加任何额外的展现逻辑;也就是说,这些标签的作用仅在于增强语义。对 Web 开发者而言,使用这些标签的实际意义主要有两点:搜索引擎优化(SEO),以及提升页面的可访问性(accessibility)。

trpc微服务寻址方案设计

tRPC 在服务命名上定义了以下 3 个维度信息:

  • app 名(应用名):表示某个业务系统的名称,用于标识某个业务下不同服务模块的一个集合。
  • server 名(模块名):表示具体服务模块的名称,一般也称为模块的进程名称。
  • service 名:表示具体服务提供者的名称,一般使用 proto 文件定义的 Service 名称。

其中 app.server 的组合在全局上要具备唯一性。