我使用lunr.js在静态网站上运行客户端搜索。随着内容的增长,lunr.js需要更长的时间来索引所有页面。这很好,但是我希望有一个动画加载栏,以便人们知道页面实际上正在做某事。我尝试添加一个动画twitter bootstrap 3.3.1 progress bar,它在索引完成加载之前是可见的,但在加载索引时似乎没有动画。
以下是实例:http://rosindex.github.io/search/
要在每个要编制索引的文档上运行的代码位于jquery.lunr.search.js#L87
中定义的进度条这是引导程序渲染动画的方式的限制,还是我可以做的事情可以让它在加载此索引时运行?
答案 0 :(得分:1)
当lunr正在编制索引时,浏览器无法执行任何其他操作,在您的情况下,包括正确设置进度条的动画。
您可以尝试使用Web工作程序执行主ui线程的索引编制。这就是在Angular docs网站上使用lunr的方法,有一篇很好的文章解释了这里的一些实现http://www.bacondarwin.co.uk/angularjs-docs-performance/
如果您的数据相当静态,您还可以考虑预先构建lunr索引。加载预先构建的索引要快得多,您应该看到索引锁定浏览器没有问题。
您可以使用https://github.com/olivernn/lunr-index-builder从命令行构建索引,然后在浏览器中加载索引,如下所示:
var index = lunr.Index.load(serialised_index)