所以,我正在使用 Twitter Bootstrap 的 Typeahead 启动一个字典网络应用程序。字典对象很大(5000 个条目)。在我当前的代码下
$('#dictionary').typeahead({source: function(query, process){
$.getJSON('dictionary.json', function(data){
dict = data;
var words = _.keys(dict);
process(words);
});
}, minLength: 2});
每次访问 typeahead 元素(#dictionary)时,我都会执行一次。虽然一旦条目出现在搜索框中,这会使查询变得非常快,但它会使 typeahead 几乎太慢而无法工作,因为获取 dictionary.json (1+ MB) 并解析它需要很长时间。
显然这种策略是错误的。
这就是我的想法: 1. 将 get 放入预加载变量中,并在 dictionary.json 加载后接受加载的页面。2. 仅使用 dictionary.json 中的键值创建一个单独的数组,并通过 get 预加载该数组(这会更小更快)。
我很好,负载需要更长的时间。我很好,搜索需要更长的时间。但是从 UI 的角度来看,让预先输入的自动完成需要很长时间是行不通的。显然,谷歌等人的大孩子。有一个窍门:谷歌预加载时间不会太长,并且在自动完成工作的同时搜索速度很快。
那么,你们如何看待我上面概述的想法?你有什么其他的建议?
非常感谢你的帮助。