Nodejs与Firebase结合,来部署一个自己的应用吧

Nodejs与Firebase结合,来部署一个自己的应用吧

如果你不了解Firebase,可以看一下之前的报道。简单的你可以说通过引入Firebase,你可以通过api去构建实时性的应用,和Meteor相比Firebase是如此的简单。

Firebase和绝大多数云服务一样,不需要额外的服务器硬件设备,并且是可以随时扩展的,对数据存储容量没有限制,Firebase 最高能处理百万级的并发和 TB 级的数据传输,数据发生更改,同步敏感颗粒度基本达到 10 毫秒级别。另外通过简单的api,你仅需要10几行代码,就可以写一个实时性聊天室。
总结一下Firebase有以下几个优点:

  1. 云服务,随时扩展,高性能,无需部署管理自己的服务器,数据库,大大减少工作量
  2. api简单,使用起来非常的方便,可大大减少代码量
  3. 可通过网页对数据进行管理,很方便

经过这段时间的使用,也发现几个缺点:

  1. 数据结构和数据库存储方式不一致(由于想支持REST方式读取数据)
  2. 不能部署自己的数据库(很多项目都需要自己维护数据库的)
  3. 目前数据操作能力较弱(有很多需求(稍微复杂点的查询)目前Firebase很难支持)
  4. 数据分析功能很弱,只能查看流量和当前在线人数(独立数据库的话,这部分很容易做的更强大)
  5. 不支持离线开发(废话。。)
    总结一下就是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项目了解


3 回复

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的一个包,因此很容易与其他包一起使用。

使用步骤

  1. 安装

    npm install end -g
    
  2. 服务器端使用

    End.init(mongo_config, sio_config);
    
  3. 客户端使用

    <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 开发应用!

回到顶部