Nodejs与Firebase结合,来部署一个自己的应用吧
Nodejs与Firebase结合,来部署一个自己的应用吧
如果你不了解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项目了解
Nodejs与Firebase结合,来部署一个自己的应用吧
如果你还不了解Firebase,可以看看之前的报道。简单来说,通过引入Firebase,你可以通过API去构建实时性的应用,就像Meteor那样,但Firebase更为简单易用。
Firebase和大多数云服务一样,不需要额外的服务器硬件设备,并且可以随时扩展。它对数据存储容量没有限制,最高能处理百万级的并发和TB级别的数据传输。数据发生更改时,同步敏感颗粒度基本达到10毫秒级别。另外,通过简单的API,你仅需十几行代码就可以写一个实时性聊天室。
Firebase的优点
- 云服务:随时扩展,高性能,无需部署和管理自己的服务器或数据库,大大减少工作量。
- API简单:使用起来非常方便,可大大减少代码量。
- 数据管理:可以通过网页对数据进行管理,十分方便。
Firebase的缺点
- 数据结构:数据结构和传统数据库存储方式不一致(因为Firebase为了支持REST方式读取数据)。
- 自定义数据库:不能部署自己的数据库(许多项目需要自己维护数据库)。
- 数据操作能力:目前数据操作能力较弱(复杂查询难以实现)。
- 数据分析功能:数据分析功能较弱,只能查看流量和当前在线人数(独立数据库的话,这部分很容易做得更强大)。
- 离线开发:不支持离线开发。
结合Node.js和Firebase的解决方案
如果你想既享受Firebase的便利,又希望自己维护数据库,那么End.js或许是一个不错的选择。End.js学习了Firebase的API,同时基于Socket.IO和MongoDB,提供了类似Firebase的功能。End.js是Node.js的一个包,因此很容易与其他包一起使用。
使用步骤
-
安装
npm install end -g
-
服务器端使用
End.init(mongo_config, sio_config);
-
客户端使用
<script src="/path/to/end.js"></script> <script> 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(), text = $('.txt_send_text').val(); chatMsgs.push({name: name, text: text}); }); </script>
这样通过End.js,你只需要十几行代码就可以写一个实时聊天室。聊天的数据会存放在MongoDB数据库中。
总结
尽管End.js还存在一些问题,但它提供了一个很好的起点,可以帮助你快速搭建实时应用。更多详细内容,请访问End.js项目页面。
还不错
Firebase 是一个由 Google 提供的后端服务平台,支持实时数据库和云存储等功能,可以让开发者快速构建应用而无需管理自己的服务器。通过结合 Node.js 和 Firebase,你可以构建出高效、可扩展的应用。
以下是如何结合 Node.js 和 Firebase 的步骤:
安装依赖
首先,在你的项目中安装 Firebase SDK:
npm install firebase-admin
初始化 Firebase
创建一个新的文件 firebase.js
来初始化 Firebase Admin SDK:
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: 'https://your-app.firebaseio.com'
});
const db = admin.database();
const ref = db.ref('messages'); // 创建一个指向消息的引用
保存数据到 Firebase
下面是一个简单的示例,展示如何将消息保存到 Firebase 数据库中:
const express = require('express');
const app = express();
app.post('/message', (req, res) => {
const { name, text } = req.body;
ref.push().set({ name, text }, error => {
if (error) {
res.status(500).send(error);
} else {
res.send('Message saved');
}
});
});
app.listen(3000, () => console.log('Server running on port 3000'));
获取数据
为了从 Firebase 实时数据库获取消息,你可以使用以下代码:
app.get('/messages', (req, res) => {
ref.on('value', snapshot => {
const messages = snapshot.val();
res.json(messages);
});
});
结论
通过结合 Node.js 和 Firebase,你可以构建出实时应用,如聊天室、通知系统等。这种方式的好处在于无需管理服务器,并且具有很高的扩展性和性能。
希望这可以帮助你开始使用 Node.js 和 Firebase 开发应用!