Table of Contents:

mdwiki

使用 mdwiki 可以轻松的搭建个人轻博客、知识库、或文档中心等。
搭建博客时,只需要把markdown文件和mdwiki程序(html+js)部署在一个Web Server上,利用前端技术,在访问md文件时即时解析并渲染成HTML。

实现原理

mdwiki的所有逻辑的实现都放在index.html中,当请求首页时比如请求www.test.com/index.html
代码中会自动在请求url之后添加#!index.md,添加后的url的形式如下

www.test.com/index.html#!index.md

之后再根据#!之后的内容进行ajax请求服务器上的markdown的内容,请求回来之后再把markdown的内容渲染成html网页。

网页中的url也会被替换成以#!开头,当请求时程序会解析#!之后的url,并ajax请求相应的内容并解析。

URL 中的 #! 是什么意思?

URL 中的 # 本来的用途是跳转到页内锚点,一个 URL 中 # 后的值 (hash tag) 不影响所访问网页的内容,所以搜索引擎在处理仅仅 hash tag 不同的多个 URL 时会当做相同内容从而忽略 hash tag。
但近年来 hash tag 越来越多地被用于 AJAX 请求获取数据,不同 hash tag 对应的网页内容也有所不同,为了有效地区别这种情况和过去传统的页内锚点标示,让搜索引擎更好地抓取 AJAX 数据,Google 提出的解决方案 (似乎是在 2009 年) 是用 #! (被称为 hashbang ) 来进行区分,他们将带有 #! 的 URL 称为 pretty AJAX URL。当网页爬虫遇到这样的 URL 就会将带不同 hash tag 的 URL 当做不同内容来进行抓取,从而获得更全的信息。