开始之前
目前很多Hexo博客都用的Swiftype和Algolia等第三方搜索服务。其实针对无数据库的情况下,Hexo本身也提供了两个插件来生成数据文件作为数据源:
hexo-generator-search生成xml
格式的数据文件。
hexo-generator-json-content 生成json
格式的数据文件。
今天的主角是hexo-generator-json-content,对于 Javascript语言来说还是解析 json 更方便,如果需要用 xml 做数据文件也可以使用已有的atom.xml。
1.安装
1 | $ npm install hexo-generator-json-content@2.2.0 --save |
然后执行hexo generate
时会自动生成content.json
文件,若使用默认设置,生成的数据结构如下
1 | meta: { |
2.配置
hexo-generator-json-content默认生成的json数据内容非常全,默认配置如下:
1 | jsonContent: |
因为默认生成了很多我们不需要的数据,所以我们要对其进行配置让它只生成我们想要的内容,在hexo/_config.yml
中加入:
1 | jsonContent: |
这样,就只生成每篇文章的标题,日期,路径,标签和文本字段,同时也减小了文件的大小。
例如:
1 | { |
3.JavaScript实现代码
接下来就是用JS实现查询方法并把结果渲染到页面。
3.1 xhr加载数据
1 | var searchData; |
3.2 匹配文章内容返回结果
1 | function matcher(post, regExp) { |
3.3 结果渲染到页面
1 | function render(data) { |
3.3 查询匹配
1 | function search(key) { |