给 GitHub-Linguist 添加 Literate CoffeeScript 支持的时候稍稍总结了一下这个问题,即 GitHub 是怎样在前端渲染它的 Markdown 和处理代码高亮的。
大体上似乎是这个流程:
GitHub 在前端用到的一系列工具基本上都是开源的。现简单地整理如下。
1. HTML / CSS / JavaScript
1. 1. HTML 模板
GitHub 的标记 & 模板风格指南:https://github.com/styleguide/templates
1. 2. 样式 & CSS
GitHub 使用的 CSS 替代品是
采用文档框架
GitHub 的样式 & CSS 风格指南:https://github.com/styleguide/css
1. 3. 行为 & JavaScript
GitHub 使用的 JavaScript 替代品是
GitHub 的行为 & JavaScript 风格指南:https://github.com/styleguide/javascript
2. GitHub Flavored Markdown 和渲染引擎
GitHub 使用的 Markdown 是对原标准的一个扩展集:
支持 GitHub Flavored Markdown 的渲染引擎:
RedCarpet 的核心库是用C实现的,叫做 Sundown(RedCarpet 是 Sundown 的 Ruby wrapper):
Sundown 项目已经中止开发。GitHub 正在计划与 Reddit、StackOverflow、Meteor 协作开发一个统一的 Markdown 标准,以及一个相应的轻量级、快速的、高安全性的渲染引擎。发布时间预期为去年年底(或者今年年底?)。关于该替代品的开发状况,目前尚无可靠消息得以确认。
3. 标记语言渲染框架
GitHub 用来渲染各种文本标记语言的框架(支持多种主流的轻量级标记语言,如 Markdown、Textile、RDoc、Org mode、reStructuredText、AsciiDoc 等,依赖于具体的引擎来完成。例如对 Markdown 的渲染依赖于RedCarpet):
4. 代码高亮渲染
基于 Python 的代码高亮工具 Pygments 的一个 Ruby wrapper:
取代了原来的Albino: https://github.com/github/albino
5. 语言识别
GitHub 用它来识别代码库中的语言(属于何种程序语言或文本标记语言):
这个库也决定了 GitHub 的 Top Languages 页面中哪些编程语言将会被展示出来。
对于程序语言,GitHub 将调用Pygments.rb对代码进行高亮处理;
对于文本标记语言,GitHub 将把文件交由GitHub-Markup进行渲染。
6. 在线编辑器
在线代码编辑功能使用的是 Ace(Ajax.org Cloud9 Editor)。这是一个非 GitHub 项目:
7. 基于 Git 的 Wiki 框架
用于托管 GitHub 的项目 Wiki:
8. 数据可视化框架
用于渲染 Contribution graphs / Network graphs 等页面的可视化效果:
9. GitHub Pages / 静态网站生成器
GitHub Pages 托管服务使用的静态网站生成器:
(Jekyll 并非 GitHub 的官方项目,没有使用 GitHub-Markup 作为其渲染框架。在近期的版本中才开始支持使用 RedCarpet 作为其 Markdown 引擎。)
10. 绘文字
GitHub 官方指定绘文字表情(详细列表参见 http://www.emoji-cheat-sheet.com/):
(这一套通用的绘文字同时也被 Campfire 和 Trac 等支持。)
评论加载中...
|
Copyright@ 2011-2017 版权所有:大连仟亿科技有限公司 辽ICP备11013762-1号 google网站地图 百度网站地图 网站地图
公司地址:大连市沙河口区中山路692号辰熙星海国际2215 客服电话:0411-39943997 QQ:2088827823 42286563
法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明