如果你不了解Firebase,可以看一下之前的报道。简单的你可以说通过引入Firebase,你可以通过api去构建实时性的应用,和Meteor相比Firebase是如此的简单。
Firebase和绝大多数云服务一样,不需要额外的服务器硬件设备,并且是可以随时扩展的,对数据存储容量没有限制,Firebase 最高能处理百万级的并发和 TB 级的数据传输,数据发生更改,同步敏感颗粒度基本达到 10 毫秒级别。另外通过简单的api,你仅需要10几行代码,就可以写一个实时性聊天室。
总结一下Firebase有以下几个优点:
- 云服务,随时扩展,高性能,无需部署管理自己的服务器,数据库,大大减少工作量
- api简单,使用起来非常的方便,可大大减少代码量
- 可通过网页对数据进行管理,很方便
经过这段时间的使用,也发现几个缺点:
- 数据结构和数据库存储方式不一致(由于想支持REST方式读取数据)
- 不能部署自己的数据库(很多项目都需要自己维护数据库的)
- 目前数据操作能力较弱(有很多需求(稍微复杂点的查询)目前Firebase很难支持)
- 数据分析功能很弱,只能查看流量和当前在线人数(独立数据库的话,这部分很容易做的更强大)
- 不支持离线开发(废话。。)
总结一下就是Firebase弱化了数据库的存在,看起来很酷,但是现实情况下出于安全、数据分析等考虑,自己维护数据库才是更合适的。
如果既想使用Firebase的便捷,又想自己维护数据库,那么End.js或许是个好选择。End.js学习了Firebase的api,同时基于socket.io和MongoDB,提供了类似Firebase的功能。End.js是Node.js的一个package,所以很方便的和其他package一起使用。
简单的入门使用
1:安装
npm install end -g
2: 服务器端使用
End.init(mongo_config,sio_config);
3: 客户端使用
var chat = new End('chat','http://localhost:8080'),
chatRoom = chat.child(window.location.search.split('?')[1]),
chatMsgs = chatRoom.child('msgs');
chatMsgs.on('child_added',function(msg){
$('.msgs').append('<div class="msg">'+msg.value.name+' : '+msg.value.text+'</div>');
});
$('#btn_send').click(function(){
var name = $('.txt_send_name').val();
var text = $('.txt_send_text').val();
chatMsgs.push({name:name,text:text});
});
这样通过End.js,十几行代码就可以写一个实时聊天室,查一查,聊天的数据都存放在Mongo数据库里面了。
目前End.js核心功能已经完成,当然还存在很多问题,希望大家能够加入,一起完善起来。:)
更多详细内容,请进入End.js项目了解