GFM and hexo
Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。
- GitHub支持的语法在标准markdown语法的基础上做了修改,称为Github Flavored Markdown,简称GFM。
- We believe that writing is about content, about what you want to say – not about fancy formatting. – 我们坚信写作写的是内容,所思所想,而不是花样格式。
- 标题( #、##、… )。
- 列表( 无序 *、有序 1. )。
- 引用( > )。
- 图片与链接:插入链接与插入图片的语法很像,区别在一个!号。链接为:。
- 粗体与斜体:Markdown 的粗体和斜体也非常简单,用两个 包含一段文本就是粗体的语法,用一个 包含一段文本就是斜体的语法。
- 代码框:如果你是个程序猿,需要在文章里优雅的引用代码框,在 Markdown下实现也非常简单,只需要用两个 ` 把中间的代码包裹起来。(内联的形式)
- 分割线:分割线的语法只需要三个 * 号。
- images下的图片:
![](/images/haha.png)
- Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
- Hexo 支持 GitHub Flavored Markdown 的所有功能。
- Front-matter 是文件最上方以 — 分隔的区域,用于指定个别文件的变量。
- OG协议——OPEN GRAPH PROTOCOL(开放内容协议)。用了Meta Property=og标签,就是你同意了网页内容可以被其他社会化网站引用等,目前这种协议被SNS网站如Fackbook、renren采用。为了提高站外内容的传播效率,2010年F8会议上Facebook公布了一套开放内容协议(Open Graph Protocol),任何网页只要遵守该协议,SNS就能从页面上提取最有效的信息并呈现给用户。
- 参与到Open Graph Protocol的好处:1、能够正确的分享您的内容到SNS网站 2、帮助您的内容更有效的在SNS网络中传播
- Meta Property=og代码的功能并不等同于网页的meta name标签,两者针对的对象不一致,功能不同。
- Gravatar是Globally Recognized Avatar的缩写,是gravatar推出的一项服务,意为”全球通用头像”(已被墙)。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来。
- i18n == internationalization 、 k8s == kubernetes
1
2
3SSH doesn’t like it if your home or ~/.ssh directories have group write permissions. Your home directory should be writable only by you, ~/.ssh should be 700, and authorized_keys should be 600
You can also get around this by adding StrictModes off to your ssh_config file, but I’d advise against it - fixing permissions is the way to go.什么是xinetd:xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。
- hexo自定义页面:执行new page命令
hexo new page "about"
,在hexo\source\下会生成about目录,里面有个index.md,直接编辑就可以了,然后在主题的_config.yml中将其配置显示出来。 - 页面展现的全部逻辑都在每个主题中控制,源代码在hexo\themes\你使用的主题\中。
- 如果您的主题太过于复杂,或是需要生成的文件量太过于庞大,可能会大幅降低性能,除了简化主题外,您可以考虑Hexo 2.7新增的局部缓存(Fragment Caching)功能。它可用于页首、页脚、侧边栏等文件不常变动的位置。
- 主题中,在layout目录下的index.ejs会自动继承layout.ejs,并将其中的内容填入<%- body %>的位置。
- Hexo有三种默认布局:post、page 和 draft,它们分别对应不同的路径。
- Hexo就是把那些 Markdown 文件按照不同的布局模板,填上对应的数据生成 HTML 页面,复制 source 中的文件到生成的 public 文件夹中,中间过程会把需要编译的stylus/less/sass等文件编译。
- 若要建立一个多语种的网站,
$ hexo new "Hello World" --lang tw
,当您建立新文章时,文章会被储存到:source/_posts/tw/Hello-World.md
。 About菜单对应的layout:
1
2
3
4title: About me
date: 2017-12-25 17:44:10
layout: page
comments: false在模板中,透过__辅助函数,即可取得翻译后的字符串。
- 每一个模板文件对应的是一种布局,当你使用hexo new
的时候,其实忽略了一个参数,完整的命令是hexo new [layout] ,这个layout就决定了文章使用何种方式布局,比如创建一个自己简介的About页面,hexo new page “about”其实就是使用了page布局。每种布局对应到我们的模板文件上就是index.ejs(首页),post.ejs(文章),archive.ejs(归档),tag.ejs(标签归档),page.ejs(分页)。 - 制作一个分页器,我们需要知道文章的总数和每页展示的文章数,然后通过循环生成每个link标签,还要根据当前页面判断link标签的active状态,但是在Hexo中这些都不用我们自己来做了!Hexo提供了paginator这一辅助函数帮助我们生成分页器,只需要将文章总数site.posts.length和每页文章数config.per_page传入就可以生成了。
一个模板引擎就是把一个字符串中的变量用model的变量替换掉。
1
2
3// 如果正则匹配成功,则match不为空,match[0]是匹配到的字符串{ template },match[1]是捕获的变量template,match.index是匹配的索引。只要不断地匹配到变量,然后用model的内容替换,就可以得到最终的HTML。
var re = /\{\s*([a-zA-Z\.\_0-9()]+)\s*\}/m
var match = re.exec('a { template } string');JavaScript允许用new Function(‘source’)来通过字符串创建一个函数,这个函数和我们用function ()定义的函数是一模一样的,因此,一个模板引擎的编译过程就是创建一个函数,然后调用该函数就实现了模板渲染。