Firebase的優勢有哪些?

同樣開發web app的話, 人們為什麼要選擇firebase呢? 如果為了節省時間的話不是還有wordpress, drupal?


=====2016-5-19更新=====

如何評價 Google I/O 2016 上公布的 Firebase 的新特性? - Ye Huang 的回答

=====原答案=====

Firebase是一個把後端作為服務的雲平台(BaaS),和wordpress/drupal這樣的傳統CMS不是一類產品。雖然各自有優缺,但單純討論開發效率,wordpress/drupal無法和Firebase相比。

Firebase專為開發者設計,將後端分離,部署在雲端,幫你解決所有後端構架面臨的問題,比如穩定性、安全性、擴張性等。同時提供統一的API和SDK,讓你可以使用多種框架和語言部署應用程序,覆蓋Web、iOS、Android等平台。最重要的是,Firebase提供實時後端數據推送的功能,被許多知名廠商用於開發具有實時特性的功能並整合到自己的平台中。使用Firebase開發應用,可以極大的降低成本,縮短產品發布時間(我用firebase開發過6、7個應用或Demo,開發時間大概幾天到幾周不等。比如這個crabcanon/angularfire-ionic-chat · GitHub,設計開發4天,使用AngularFire和Ionic,託管在Firebase Host)。

現在是跨平台的時代,Firebase這類產品作為開發的中間件,是wordpress/drupal等無法媲美的。Wordpress最大的好處是給非技術人員提供一個友好的GUI方便內容管理和維護,但正因這個原因,不僅需要開發應用本身,還需要定製CMS的GUI,相當於給開發人員分配了雙倍的任務。而且由於技術受限,基本是PHP/MySQL/jQuery的組合,無形中提高了開發成本。更重要的,安全性是wordpress面臨的最大問題,龐大的第三方插件和主題,官方都強調,無法避免插件漏洞被惡意代碼攻擊,只能小心再小心。

目前,國際上的BaaS廠商很多,但最火的應該就是Firebase(Google旗下產品)和Parse(Facebook旗下產品)。其他包括(根據Alexa排名):

  • Appcelerator Cloud -- Mobile App Development Platform
  • Kinvey -- Mobile Backend as a Service (MBaaS) for the Enterprise

  • ShepHertz -- ShepHertz | Complete Cloud Ecosystem for App/Game Developers
  • Stackmob -- StackMob · GitHub
  • Kii Cloud -- Cloud Mobile Application Development Platform
  • Applicasa -- Virtual Store Platform, Complete In-App Purchase Backend Solution
  • GoInstant -- GoInstant · GitHub
  • apiOmat -- apiOmat | Mobile Backend as a Service
  • Kumulos -- Kumulos | Helping hard working Mobile App Agencies
  • Backendless -- Backendless:leading mBaaS and App Development Platform Backend as a Service Platform
  • Cloudmine -- CloudMine | Enterprise Mobile Platform Secure mBaaS
  • Mobeelizer -- - Mobeelizer

  • Wilddog 野狗 -- 野狗 - 國內領先的實時BaaS雲服務
  • Lean Cloud -- LeanCloud
  • Cloudkit - iCloud - Apple Developer
  • 更多 -- BaaS服務平台有哪些? - 移動互聯網

更多文章:

  • BaaS服務的定義、發展以及未來
  • What is Mobile Backend as a Service (MBaaS)?

  • https://azure.microsoft.com/en-us/campaigns/mbaas/

  • What is Backend as a Service?


三個優點

- 實時,實現聊天之類的功能很容易

- 更輕,可以完全不用後端,就是沒有資料庫之類的

- 幫你實現了facebook/google/twitter的一鍵登錄


WildDog和firebase api兼容,國內訪問速度更快。


看到過一篇介紹比較全面的文章 使用Firebase搭建大規模應用

部分內容轉載過來(原文有代碼案例):

Firebase是Google Cloud Platform為應用開發者們(特別是全棧開發)推出的應用後台服務。藉助Firebase,應用開發者們可以快速搭建應用後台,集中注意力在開發client上,並且可以享受到Google Cloud的穩定性和scalability。

Firebase為後台開發提供以下幾個功能:

  • 實時資料庫(Realtime database)
  • 用戶認證(Authentication)
  • 自定義API(Cloud function)
  • 消息推送(Cloud messaging)
  • 靜態網頁Hosting
  • 雲存儲(Cloud storage)

下面分別介紹一下每個功能

實時資料庫(Realtime database)

實時資料庫是Firebase提供的核心功能。通過為Android, iOS跟Web(JavaScript)提供SDK,前端開發者們可以輕鬆的讀寫Firebase的資料庫(no-SQL,Json)。以下是client Web SDK中讀寫資料庫的代碼例子:

// 更新用戶信息(username, email)記錄到/users表
// userId是為用戶表的"主鍵"
firebase.database().ref("users/" + userId).set({
username: name,
email: email,
});

實時資料庫中的另一個關鍵字是實時。開發者可以利用SDK在client中監聽資料庫的變化,並實時獲得結果:

// /messages表發生變化執行function
firebase.database().ref("messages/").on("value", function(dataSnapshot) {
...
});
// /messages表添加紀錄執行function
firebase.database().ref("messages/").on("child_added", function(childSnapshot, prevChildKey) {
...
});
...

實時資料庫也有Authorization,可以在firebase console中通過一個Json文件輕鬆設置:

// /users表中每個用戶只可以修改自己的信息 (uid來自Firebase另一個功能,下面會介紹)
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}

用戶認證(Authentication)

Firebase提供了基於email的用戶認證。通過client SDK,開發者可以輕鬆的實現賬戶註冊,登陸登出,修改密碼,忘記密碼等常用功能。並且可以輕鬆集成3rd party Authentication方式(Google Signin,Facebook Login,Github,Twitter)以及任何customize的認證服務。支持手機號登陸,簡訊功能。client代碼案例:

// 註冊新賬戶
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
});
// 賬戶登陸
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
});
// 認證信息更新監聽(認證成功,認證失效,密碼更改)
firebase.auth().onAuthStateChanged(function(user) {
});
...

在Firebase server端,可以與Cloud function(下面會詳細介紹)集成,實現例如新用戶註冊後發送verification郵件等功能。Server代碼案例:

// 賬戶創建監聽
exports.sendWelcomeEmail = functions.auth.user().onCreate(event =&> {
});
// 賬戶刪除監聽
exports.sendByeEmail = functions.auth.user().onDelete(event =&> {
});

自定義API(Cloud function)

Cloud function相當於Firebase提供的一個node.js的server附加Firebase與其他功能的集成(例如上面與Authentication集成的案例),與Amazon AWS的lambda有異曲同工之妙。通過Cloud function,開發者可以自己定義cloud API,將原本client的部分功能遷移到server端,輕量化client。該功能在密集迭代中,相信未來會提供更多與Google產品的集成。

消息推送(Cloud messaging)

Firebase提供了消息推送功能。通過client side SDK產生token註冊至firebase伺服器,並自動監聽任何消息推送。開發者或者管理者可以在任何地方(伺服器或者個人電腦)對任何一個device發送推送消息,提高engagement。以下client代碼案例:

// 初次請求用戶允許推送消息
messaging.requestPermission().then(function() {

}).catch(function(err) {

});
// 獲得token並自動註冊至cloud messaging伺服器
messaging.getToken().then(function(currentToken) {
});
// 定期刷新token
messaging.onTokenRefresh(function() {
});

靜態網頁Hosting

顧名思義,Firebase提供了最基本的web hosting功能。對於web應用開發者來說提供了極大的便利,client的代碼不需要另外host,而與Firebase API server共同host在Google Cloud中,提供了效率,降低了成本。Firebase會為web hosting提供一個免費的hostname,允許開發者可以隨意更換為任何自己擁有的hostname。

雲存儲(Cloud storage)

Firebase除了通過實時資料庫對structured數據的支持,還通過雲存儲來提供上傳下載大文件(blob file)。通過下面client代碼案例來說明開發者如何操作雲存儲(上傳為例):

// 上傳文件file到雲存儲的images/rivers.jpg位置
var uploadTask = storageRef.child("images/rivers.jpg").put(file);
// 監聽上傳任務的狀態(進度,完成,異常等)
uploadTask.on("state_changed", function(snapshot){
})
// 暫停上傳
uploadTask.pause();
// 繼續上傳
uploadTask.resume();
// 取消上傳
uploadTask.cancel();


這類bass一定要基於大的平台才能生存


我想知道firebase殺掉app為什麼就收不到消息了呢


主要的還是實時


推薦閱讀:

你見過哪些發人深省的商業故事?
你見過的不靠譜的商業計劃書是什麼樣的?
除了一線城市,哪一個城市最有可能發展好互聯網生態圈?
看準網上的信息靠譜嗎?
Mary Meeker 發布的《2017 年互聯網趨勢報告》中都有哪些亮點?

TAG:互聯網 | 前端開發 | JavaScript | Nodejs | Firebase |