1

所以,我正在使用 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 的角度来看,让预先输入的自动完成需要很长时间是行不通的。显然,谷歌等人的大孩子。有一个窍门:谷歌预加载时间不会太长,并且在自动完成工作的同时搜索速度很快。

那么,你们如何看待我上面概述的想法?你有什么其他的建议?

非常感谢你的帮助。

4

1 回答 1

0

也许让您的后端脚本处理输入查询并返回较短的数据列表。

通过引导程序传递查询输入,服务器代码可以根据目前收到的输入返回一个较短的列表。

于 2013-02-01T00:26:36.620 回答