javascript - 无需编写自己的服务器即可从浏览器应用程序发布数据

标签 javascript web-services single-page-application

我需要用户能够将数据从单页浏览器应用程序 (SPA) 发布给我,但我无法将服务器端代码放在主机上。

是否有我可以使用的网络服务?我看了Amazon SQS (简单的队列服务)但我无法从浏览器中调用他们的 REST API due to cross origin policy .

我现在更喜欢易于开发而不是健壮,所以即使只是收到一封电子邮件也可以。我不确定该网站是否会流行起来。如果是这样,那么我将开发一个服务器端组件并移动主机。

最佳答案

不仅有 Web 服务,而且现在有一些健壮的系统可以为您的应用程序的服务器端某些逻辑提供一种方法。它们被称为 BaaS 或 Backend as a Service提供程序,通常为您的前端应用程序提供一些主干。

虽然它们有多种用途,但我将列出我认为最常见的:

  • 移动应用 - 不必为您编码的每个设备学习 API,您可以使用标准平台来存储应用程序的逻辑和数据。
  • 用于原型(prototype)制作 - 如果您想创建一个漂亮的应用程序,但又不想为数据编写所有后端逻辑 - 无需处理代表的所有操作和系统管理 - 通过 BaaS 提供商,您只需要良好的前端技能编写您可以想象的最简单的 CRUD 应用程序。一些BaaS甚至允许你绑定(bind)一些Reduce algorithms将您的表演调用到他们的 API。
  • 对于 Web 应用程序 - 当 PaaS ( Platform as a Service ) 来到镇上减轻后端开发人员的工作,以避免系统管理和操作的麻烦时,后端也会发生同样的事情,这只是逻辑。有很多clones这展示了这一战略的真正力量。

  • 所有这一切都令人惊叹,但我还没有提到其中任何一个。我将列出我最了解并在项目中实际使用的那些。可能有很多,但据我所知,这个已经满足了我的大部分消息,无论是前面提到的任何一个。

    Parse.com

    Parse 最突出的功能是针对移动设备;然而,如今 Parse 包含大量 API,允许您将其用作 Javascript、Android 甚至 Windows 8 应用程序的全功能后端服务(今年几个月前,Windows 8 SDK 是 introduced)。

    解析代码在 Javascript 中的外观如何?

    Parse 通过类和对象工作(是不是很漂亮?),所以您首先创建一个特定的类(可以通过 Javascript、REST 甚至数据浏览器管理器完成),然后将对象添加到特定的类。

    首先,将 Parse 添加为 javascript 中的脚本标签:
    <script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.1.15.min.js"></script>
    

    然后,通过给定的应用程序 ID 和 Javascript key ,初始化 Parse。
    Parse.initialize("APPLICATION_ID", "JAVASCRIPT_KEY");
    

    从那里开始,一切都是对象操作
    var Person = Parse.Object.extend("Person"); //Person is a class  *cof* uppercase *cof* 
    var personObject = new Person();
      personObject.save({name: "John"}, {
      success: function(object) {
        console.log("The object with the data "+ JSON.stringify(object) + " was saved successfully.");
      },
      error: function(model, error) {
        console.log("There was an error! The following model and error object were provided by the Server");
        console.log(model);
        console.log(error);
      }
    });
    

    身份验证和安全性如何?

    Parse 有一个基于用户的身份验证系统,它几乎允许您存储可以操作数据的用户群。如果将数据与用户信息进行映射,则可以确保只有给定的用户才能操作特定数据。另外,在 Parse 应用程序的设置中,您可以指定不允许客户端创建类,以确保执行不必要的调用。

    您真的在 Web 应用程序中使用过吗?

    是的,它是我中等保真度的首选工具 prototype .

    Firebase.com

    Firebase 的主要功能是能够为您的应用程序提供实时服务,而不会遇到任何麻烦。您不需要 MeteorJS服务器以便将推送通知带入您的软件。如果您了解 Javascript,那么您就已经成功将 Real Time 魔法带给您的用户。

    Firebase 在 Javascript 中的外观如何?

    Firebase 以 REST 方式工作,我认为他们在构建 Glory of REST 方面做得非常出色。 .作为一个很好的例子,请查看 Firebase 中的以下资源结构:
    https://SampleChat.firebaseIO-demo.com/users/fred/name/first
    

    你不需要成为一名火箭科学家就知道你正在检索用户“Fred”的名字,因为至少有一个 - 通常应该有一个 UUID 而不是一个名字,但是嘿,这是一个例子,给我休息一下-。

    为了开始使用 Firebase,就像使用 Parse,添加他们的 CDN Javascript
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>
    

    现在,创建一个允许您使用 Firebase API 的引用对象
    var myRootRef = new Firebase('https://myprojectname.firebaseIO-demo.com/');
    

    从那里,您可以创建一堆整洁的应用程序。
    var USERS_LOCATION = 'https://SampleChat.firebaseIO-demo.com/users';
    var userId = "Fred"; // Username
    
    var usersRef = new Firebase(USERS_LOCATION);
      usersRef.child(userId).once('value', function(snapshot) {
        var exists = (snapshot.val() !== null);
        if (exists) {
            console.log("Username "+userId+" is part of our database");
        } else {
            console.log("We have no register of the username "+userId);
        }
      });
    

    身份验证和安全性如何?

    你很幸运! Firebase released their Security API大约两周前!我还没有探索它,但我相信它填补了大部分空白,允许随机的人使用你的引用来达到他们自己的目的。

    您真的在 Web 应用程序中使用过吗?

    嗯……好吧,不。我在 Chrome Extension 中使用了它!它仍在进行中,但它将是 Chrome 扩展程序中的实时聊天。是不是很酷?美好的。我觉得很酷。无论如何,您可以在他们的 examples page 中浏览更多有关 Firebase 的出色示例。 .

    这些服务有什么神奇之处?如果您阅读您的 Dependency InjectionMock Object Testing ,在某些时候,您可以通过 REST Web 服务提供者完全替换您自己的所有这些服务。

    由于这些服务是为在任何应用程序中使用而创建的,因此它们已准备好 CORS。如前所述,我已经成功地从多个域中使用了它们,没有任何问题(我什至尝试在 Chrome 扩展程序中使用 Firebase,我相信我很快就会成功)。

    Parse 和 Firebase 都有数据浏览器管理器,这意味着您可以通过简单的 Web 浏览器查看正在处理的数据。作为最后的免责声明,除了 James Taplin 的面孔之外,我与任何这些服务没有任何关系。 (Firebase 联合创始人)非常出色,可以借给我一些 Firebase 的 Beta 版访问权限。

    关于javascript - 无需编写自己的服务器即可从浏览器应用程序发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369521/

    相关文章:

    knockout.js - 使用 Durandal 的应用架构

    javascript - 如何拆分我的 Web 应用程序?

    javascript - 在 Controller /指令中观看 meteor 集合

    javascript - FabricJS 设置背景图像大小和位置

    javascript - 列出通过 Google Maps Geocoder API 获取的一组地址

    java - 亚马逊:TopSeller 返回超过前 10 名

    javascript - 如何在我的搜索结果页上放置 adsense 广告?

    javascript - 查找哪个类触发了模糊

    java - 为什么我无法在 Web 服务 'Hello world' 示例中生成客户端代码?

    angularjs - ADFS 3 OAuth 2 CORS 错误