dem*_*mux 8 javascript node.js socket.io sails.js sails.io.js
我非常喜欢Meteor的pub/sub.我想知道是否有办法获得类似的工作流程,一般使用sails.js或只是一个套接字库.
特别是,我希望能够做的是:
// Server-side:
App.publish('myCollection', -> collection.find({}))
// Client-side:
let myCollection = App.subscribe('myCollection')
let bob = myCollection.find({name: 'Bob'})
myCollection.insert({name: 'Amelie'}, callback)
Run Code Online (Sandbox Code Playgroud)
与服务器的所有交互都应该在后台进行.
我非常喜欢Meteor的pub/sub.我想知道是否有办法获得类似的工作流程,一般使用sails.js或只是一个套接字库
基本上是的,至少关于后端和前端之间的实时同步.让我们回顾一下流星的含义并逐点回答.
Sabbir所述的Pub/Sub概念也得到了sails.js的支持.虽然基础知识略有不同:
请注意,默认情况下:
meteor remove autopublish那么你可以处理什么将您的客户端加入了蒙戈请求它接收,如解释在这里.作为服务器端的结论:
find或findOne蓝图默认操作(where无论是否附加一些过滤器),您的套接字将自动订阅有关返回对象的每个事件=>在大多数情况下,您不必在服务器上编写任何代码为Subscribe逻辑.create,update,destroy,add,remove)自动发布到订阅插座=>您不必在服务器上,任何代码,在大多数情况下的Publish逻辑.(但是,如果您发现自己实现了一些手动控制器操作,那么sails API可以帮助您轻松发布和订阅)
因此,对于流星和风帆,客户只能收到他们应该收到的东西.现在是前端的时候了.
哲学基本上,主要区别在于meteor比sails高一级,因为它提供了同步集合和对象的逻辑.
与服务器的所有交互都应该在后台进行.
sails.io.js,官方的前端组件,并不是那么高级别.说到Angular.js.
但是,您可以找到一些社区连接器,旨在提供与mongo数据绑定集合和对象相同的功能.有帆资源,大三角帆或角度资源帆.我试过他们两个,我应该说我很失望.抽象级别是如此之高,以至于它变得烦人,恕我直言.例如,对于非常非常友好的自定义操作(如a)login,根据您的需求调整它变得非常困难.
==>我建议使用低级连接器,例如angularSails或(我的首选)https://github.com/janpantel/angular-sails,如果你不使用,甚至是原始的sails.io.js角.
编辑:由帆的创造者创建一个骨干版本
它只是工作得很好,并且相信我," 保持我的集合与该套接字同步 "代码是如此荒谬,为此找到一个模块是不值得的.
服务器特别是,我希望能够做的是:
流星
# Server-side:
App.publish('myCollection', -> collection.find({}))
Run Code Online (Sandbox Code Playgroud)帆
//Nothing to do, just sails generate api myCollection
Run Code Online (Sandbox Code Playgroud)流星
# Client-side:
myCollection = App.subscribe('myCollection')
Run Code Online (Sandbox Code Playgroud)帆,sails.io.js(为方便起见,使用lodash)
var myCollection;
sails.io.get('/myCollection').then(
function(res) {
myCollection = res.data;
},
function(err) {
//Handle error
}
);
sails.io.on('myCollection').function(msg) {
switch(msg.verb) {
case 'created':
myCollection.push(msg.data);
break;
case 'updated':
_.extend(_.find(myCollection, 'id', msg.id), msg.data);
break;
case 'destroyed':
_.remove(myCollection, 'id', msg.id);
break;
};
});
Run Code Online (Sandbox Code Playgroud)
(我将[文档]留在那里find和create你的想象中)
与服务器的所有交互都应该在后台进行.
我不习惯那个过程,所以我让你在这里或这里读书,但我再一次选择手动.on()方法.
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |