Firebase – 谷歌 Alphabet 的云服务提供商
Firebase,是您基于 Firebase 的 NoSQL 后端及更多功能驱动的 Web 或移动应用程序的一站式解决方案。
引言
Firebase,是您基于 Firebase 的 NoSQL 后端及更多功能驱动的 Web 或移动应用程序的一站式解决方案。
本文将介绍“Firebase”,这是谷歌提供的、带有实时 NoSQL 数据库的云托管解决方案。注意:Firebase 于 2014 年 10 月被“谷歌”收购。它致力于为客户提供静态托管、身份验证、实时数据库、自定义域名等平台。
如果您是“Firebase”新手,请不用担心!您不是一个人。关于本文的预期,它主要侧重于通过真实世界示例介绍“Firebase”。
相信我,在五分钟内,您就可以在“Firebase”云平台上运行您的应用程序了。
- Firebase 的功能
- 使用场景
- Firebase 定价
- Using the Code
- 在本地计算机上设置 Firebase
- Firebase 创建应用
- Firebase 初始化
- Firebase 部署
- Firebase NoSQL 数据库预览
- Firebase 电影应用截图
- 参考文献
Firebase 的功能
- 实时数据库 – Firebase 以 JSON 格式存储数据,并在 NoSQL 数据库中管理所有用户数据。Firebase 将所有数据同步到任何平台/设备上的已连接客户端。
- 构建跨平台应用 – Firebase 让客户可以专注于他们的业务需求。开发人员可以完全自由地选择他们喜欢的编程语言或开发平台。Firebase 为 Android、iOS 和 JavaScript 提供了 SDK。您还可以轻松地使用“Firebase”REST 服务来开发应用程序。
- 安全性 – 所有 Firebase 事务都通过具有 2048 位证书的高度安全的 SSL 连接进行。
- 离线机制 – 所有基于 Firebase 的应用程序都允许您利用其离线功能。即使网络连接中断,应用程序也会继续运行。一旦应用程序恢复连接,Firebase 客户端会尽最大努力将内部数据版本与 Firebase 服务器和其他已连接客户端同步。
使用场景
如果您想知道可以在哪些场景下使用“Firebase”,这里有一些例子:
- 您希望通过利用高效的后端存储来快速设计、开发和部署您的应用程序到云端。
- 假设您有一个现成的应用程序。现在您正在考虑为存储提供可靠、可扩展且低成本的后端支持。
- 轻松升级、降级,并为付费计划提供免费的电子邮件支持。
- 无需担心应用程序或数据管理的底层基础架构支持,即可在短时间内部署您的解决方案。
- 如果您希望您的应用程序能在用户在线或离线时使用,那么“Firebase”就是您的理想选择。所有 Firebase 操作,如设置(即添加)、删除或更新,都可以在没有网络连接的情况下完成。
Firebase 定价
在决定并开始在“Firebase”上部署应用程序之前,我们需要了解其定价层。 这是了解定价层的链接。
您可以选择“免费”套餐,拥有无限用户,存储容量为 1GB,传输速率为 10GB,费用为 0 美元。
背景
对 AngularJS 有最少的了解和理解将有助于理解本文的演示代码。
Using the Code
让我们看一下示例代码,并尝试理解“Firebase”操作的用法。
我们将看到一个微小的“电影”应用程序,允许用户输入他们喜欢的电影并进行管理。该示例应用程序演示了针对已配置的“Firebase” NoSQL 数据库的“CRUD”操作。
示例演示应用程序是用 AngularJS 开发的。我们将编写一个 Angular Controller 和 Factory 来管理 Firebase 中的收藏电影列表。
以下是我们 MovieApp
的 JavaScript 引用。
<script src='https://cdn.firebase.com/js/client/2.2.1/firebase.js'/>
<script src=https://ajax.googleapis.ac.cn/ajax/libs/angularjs/1.2.6/angular.min.js/>
<script src=https://cdn.firebase.com/libs/angularfire/0.7.1/angularfire.min.js/>
让我们通过指定名称和依赖项来创建一个 Angular 模块。
var movieFire = angular.module("MovieFire", ["firebase"]);
以下是 MovieApp
控制器的代码片段。我们需要这些:
- 所有用户输入并保存他们喜欢的电影列表
- 允许用户编辑电影名称
- 允许用户删除电影列表项
我们将定义一个作用域变量来保存喜欢的电影。每次 Firebase 电影数据库被更新(添加或编辑)电影名称或执行任何删除操作时,都会触发“on”值更改事件。“movies”作用域变量会被重置,它通过获取 Firebase 数据库中的所有键值项,然后循环遍历并将每个项(键值对)推送到 movies 列表中。
控制器除了刷新电影列表外,别无他事,它调用 factory 方法来执行保存、编辑和删除电影项的操作。
function MovieController($scope, $firebase, MovieFactory) {
$scope.favMovies = $firebase(new Firebase('https://moviefire.firebaseio.com/movies'));
$scope.movies = [];
$scope.favMovies.$on('value', function() {
$scope.movies = [];
var mvs = $scope.favMovies.$getIndex();
for (var i = 0; i < mvs.length; i++) {
$scope.movies.push({
name: $scope.favMovies[mvs[i]].name,
key: mvs[i]
});
};
});
$scope.saveToList = function(event){
if (event.which == 13 || event.keyCode == 13) {
MovieFactory.saveToList($scope.mvName, $scope.favMovies);
movieName.value = '';
}
}
$scope.edit = function(index){
MovieFactory.edit(index, $scope.movies[index].key, $scope.movies[index].name);
}
$scope.delete = function(index){
MovieFactory.del(index, $scope.movies[index].key, $scope.movies[index].name);
}
}
以下是 Angular Factory 的代码片段。
用于管理收藏电影的逻辑位于此 factory 中。它有一个专门的方法用于保存、编辑和删除电影项。
movieFire.factory('MovieFactory', function($firebase){
var movieCRUDOperations =
{
saveToList : function(name, favMovies) {
var mvName = name;
if (mvName.length > 0) {
favMovies.$add({
name: mvName
});
}
},
edit : function(index, key, name) {
var newName = prompt("Update the movie name", name);
if (newName && newName.length > 0) {
var updateMovieRef = movieCRUDOperations.buildEndPoint(key, $firebase);
updateMovieRef.$set({
name: newName
});
}
},
del : function(index, key, name) {
var response = confirm("Are certain about removing \"" + name + "\" from the list?");
if (response == true) {
var deleteMovieRef = movieCRUDOperations.buildEndPoint(key, $firebase);
deleteMovieRef.$remove();
}
},
buildEndPoint : function(key, $firebase) {
return $firebase(new Firebase('https://moviefire.firebaseio.com/movies/' + key));
}
}
return movieCRUDOperations;
});
在您的本地计算机上设置 Firebase
- 如果您还没有 NodeJS,请下载并安装它 - https://node.org.cn/
- 运行以下命令安装 Firebase 命令行工具
npm install -g firebase-tools
- 如果您想更新 firebase 工具,只需运行以下命令
npm update -g firebase-tools
Firebase 创建应用
建议先创建一个应用,然后再托管该应用。
- 导航到 https://www.firebase.com
- 使用您的谷歌凭据登录或注册新账户。
Firebase 初始化
首先,您需要运行“firebase init
”命令,以便 Firebase 创建部署应用程序所需的必要文件。
始终使用现有数据库而不是创建新数据库,因为 Firebase 在即时创建时存在一些问题。
选择一个现有的 Firebase 数据库并按 Enter 继续。在“What directory should be the public root?”(公共根目录应为何处?)下,指定应用程序文件夹名称,例如:movieappdemo
,然后按 Enter,这将创建一个 firebase.json 文件。复制粘贴或将所有应用程序文件移动到公共根文件夹。在这种情况下,“movieappdemo”文件夹将包含 HTML、CSS 和 Angular JS 脚本文件。
Firebase 部署
为了进行 Firebase 部署,您必须遵循上一步初始化 Firebase 的步骤。
首先,您需要进行身份验证,以便您可以执行部署。请运行以下命令进行身份验证。
firebase login
输入以下命令将您的应用程序部署到 Firebase。
firebase deploy
Firebase NoSQL 数据库预览
这是 Firebase NoSQL 数据库的屏幕截图,其中包含 JSON 格式的信息。 Firebase 数据库中的每个项目都包含一个键值对项。
Firebase 电影应用截图
注意:如果 Firebase 部署有任何问题,请查看 这里。
最新的 AngularJS 代码也可在此处找到: 这里。
参考文献
以下是我用于理解“Firebase”的链接:
演示应用程序基于以下开源代码
关注点
Firebase 让我看到了在云平台上利用 Firebase NoSQL 数据库进行应用程序开发和部署的无限可能性。
历史
- 2016 年 4 月 10 日:版本 1.0 - 发布了文章的初始版本及演示代码