Oli*_*oyd 5 javascript jquery-ui-autocomplete meteor
使用Meteor,我想了解使用大量服务器端数据的JQuery UI自动完成的最有效方法.
我有两个工作建议,希望听到有关差异的意见,以及是否有更好的方法来做同样的事情.
使用pub/sub:
// Server
Meteor.publish("autocompleteData", function (theSearchTerm) {
var query = {
name: { $regex: theSearchTerm, $options: 'i'}
};
return MyData.find(query, options);
});
// Client
Template.myTemplate.rendered = function() {
initAutocomplete($(this.find('.my.autocomplete')));
};
var initAutocomplete = function(element){
element.customAutocomplete({
source: function(request, callback){
var sub = Meteor.subscribe('autocompleteData', request.term, function(){
var results = MyData.find({}, {limit: 50}).fetch();
sub.stop();
callback(results);
});
},
select: function(event, ui){
// Do stuff with selected value
}
});
};
Run Code Online (Sandbox Code Playgroud)
使用远程功能(Meteor.Methods):
// Server
Meteor.methods({
getData: function(theSearchTerm) {
var query = {
name: { $regex: theSearchTerm, $options: 'i'}
};
return MyData.find(query, {limit: 50}).fetch();
});
});
// Client
Template.myTemplate.rendered = function() {
initAutocomplete($(this.find('.my.autocomplete')));
};
var initAutocomplete = function(element){
element.customAutocomplete({
source: function(request, callback){
Meteor.call('getData', request.term, function(err, results){
callback(results);
});
},
select: function(event, ui){
// Do stuff with selected value
}
});
};
Run Code Online (Sandbox Code Playgroud)
哪个(如果有的话)是使用带有大型数据集的Meteor设置服务器端自动完成的最有效方法?
小智 5
对于它的价值,我将提供一些关于这个主题的想法.作为免责声明,我只是一个流星爱好者,而不是专家,所以如果我说错了,请纠正我.
对我来说,似乎这样的情况下pub/sub的潜在优势是数据被缓存.因此,当订阅相同的记录集时,查找将接近即时,因为客户端可以搜索本地缓存而不是再次询问服务器数据(发布足够聪明,不会将重复数据推送到客户端).
但是,由于您正在停止订阅,因此优势在这里丢失,因此每次用户键入相同的搜索词时,数据都会再次推送到客户端(至少,光标的添加事件会再次针对每个文档触发).在这种情况下,我希望pub/sub与Meteor.call几乎相同.
如果要缓存pub/sub的数据,一种方法是取出sub.stop().但除非您的用户倾向于搜索类似的术语,否则缓存数据实际上更糟糕,因为用户键入的每个字母都会将更多数据存储在客户端上,或许再也看不到了(除非搜索在您的搜索中是如此突出的功能)用户可以从中受益的应用程序?).
总的来说,我认为使用pub/sub而不是Meteor方法没有令人信服的优势,尽管我并不熟悉Meteor,足以在两者之间提供更具体的优势/劣势.我个人认为Meteor方法看起来更干净.
如果您正在尝试实现搜索功能,我个人喜欢easy-search软件包,它支持使用自动完成功能的此类服务器端搜索.无论如何,我希望你的问题得到解决!我很想知道答案.
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |