在运行计算密集型javascript脚本时显示基于CSS的动画

时间:2014-12-10 13:52:09

标签: javascript twitter-bootstrap progress-bar css-animations client-side-scripting

我使用lunr.js在静态网站上运行客户端搜索。随着内容的增长,lunr.js需要更长的时间来索引所有页面。这很好,但是我希望有一个动画加载栏,以便人们知道页面实际上正在做某事。我尝试添加一个动画twitter bootstrap 3.3.1 progress bar,它在索引完成加载之前是可见的,但在加载索引时似乎没有动画。

以下是实例:http://rosindex.github.io/search/

要在每个要编制索引的文档上运行的代码位于jquery.lunr.search.js#L87

package_search.html#L15

中定义的进度条

这是引导程序渲染动画的方式的限制,还是我可以做的事情可以让它在加载此索引时运行?

1 个答案:

答案 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)