AppengineJS:JavaScript到GAE

尽管Google没有为App Engine平台开发JavaScript SDK,但是一个名为AppengineJS的GAE Python SDK的新端口可以为GAE构建应用程序,这些应用程序是用所有web开发人员都熟悉的语言编写的。该端口在App Engine Java之上使用Rhino(JavaScript的JVM实现),但是该API基于App Engine Python,因为它是JS之类的脚本语言。

在本周的博客中,项目开发人员之一George Moschovitis说,他的项目最近引起了很大的兴趣,他对读者的评论有几个回答。他说,如果你已经知道Python或者Java,那么你应该坚持那些由Google支持的SDK。 App Engine Python文档应该可以有效地用于JavaScript SDK。

AppengineJS文档解释说,他们使用JavaScript编码约定:

像“thisisa_name”这样的Python名称被转换为JavaScript名称,如“thisIsAName”。此外,所有delete()函数都被重命名为.remove()函数,以避免与delete关键字发生冲突(DELETE()别名也被提供,但不建议使用,将来可能会被弃用)。

对于GAE数据存储,支持Python ext/db api,但是api经过了稍微修改,以便与JavaScript更兼容:

var db = require("google/appengine/ext/db");

var Category = db.Model("Category", {
    label: new db.StringProperty(),
    category: new db.ReferenceProperty({referenceClass: Category})
});

var c = new Category({keyName: "news", label: News"});
c.put();
var key = ...
var c1 = Category.get(key);
var c2 = Category.getByKeyName("news");
var categories = Category.all().fetch(3);
...
var comments = Comment.all().ancestor(article).order("-created").withCursor(cursor).fetch(10);

下面是与Blobstore有关的AppengineJS文档的示例:

格式:

var blobstore = require("google/appengine/api/blobstore");

exports.GET = function(env) {
    return {data: {
        uploadURL: blobstore.createUploadUrl("/test")
    }}
}

<form action="{uploadURL}" method="POST" enctype="multipart/form-data">
    <p>
        <input type="file" name="file" />
    </p>
    <p>       
        <button type="submit">Upload</button>
    </p>
</form>

上传:

var blobstore = require("google/appengine/api/blobstore");

exports.GET = function(env) {
    return {data: {
        uploadURL: blobstore.createUploadUrl("/save")
    }}
}

保存:

var blobstore = require("google/appengine/api/blobstore");

exports.POST = function(env) {
    var blobs = blobstore.getUploadedBlobs(env);

    return {
        status : 303,
        headers : {
            "Location": "/serve?key=" + blobs.file.toString()
        }
    };     
}

服务:

var blobstore = require("google/appengine/api/blobstore");

exports.GET = function(env) {
    var params = new Request(env).GET();
    return blobstore.serve(params.key, env);
}

AppengineJS文档中还介绍了URL获取,图像,电子邮件,Memcache缓存,用户,任务队列,XMPP,表单,Quato配额和OAuth协议。库还在开发中,但它现在确实可用。以下是Python API转换级别的细分:

    •google / appengine / api / memcache:90%(可用)

    •google / appengine / api / urlfetch:80%(可用)

    •google / appengine / api / mail:80%(可用)

    •google / appengine / api / images:60%(可用)

    •google / appengine / api / users:90%(可用)

    •google / appengine / api / labs / taskqueue:80%(可用)

    •google/ appengine / ext / db:80%(可用,期望较小的API更改)

    •google / appengine / ext / db / forms:60%(可用,期望API更改)

    •google / appengine / api / xmpp:80%(可用)

    •google / appengine / ext / blobstore:50%(可用)

    •google / appengine / api / oauth:90%(未测试)

你可以在GitHub下载AppengineJS。该SDK是Nitro Ecosystem的一部分,并跟踪CommonJS小组的最新进展。

本文的版权归 bill_bisheng 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏软件开发

前端机试面试题

1、请实现“https://channel.jd.com/fashion.html”超值购部分内容。

1083
来自专栏张善友的专栏

用.NET Framework 2.0创建 Form设计器[翻译]

    这两天赶鸭子上驾,学习Form设计器,下面这篇在Msdn Magazine的文章可谓是经典,这两天学习了感觉还是做个翻译出来,更能够加强理解。对各位同...

1886
来自专栏前端架构

360搜索自动收录功能能否在自己服务器上写脚本提交?

百度收录提交,提供了在服务器上的提交api,而360搜索,只提供 js脚本内置到页面。关键是,这些js非人性。提供一个js,再在你页面写一个js,再在你页面写一...

372
来自专栏杨建荣的学习笔记

Java和Python的Web开发

在Java里面有一种服务端的软件组件技术,叫做Servlet,其实它的定位就是轻巧的小玩意,比如Java里面的applet也是类似的命名。Servlet能够动态...

2814
来自专栏向治洪

android MVP框架

在开发Android应用时,相信很多同学遇到和我一样的情况,虽然项目刚开始构架时自认为MVC层级分的特别明确,但最终往往是一个Activity有好几百行代码,...

1867
来自专栏张善友的专栏

Lightweight Test Automation Framework之旅

Lightweight Test Automation Framework是ASP.NET QA团队开发的自动化集成测试框架,并且应用在ASP.NET QA团队...

1929
来自专栏软件开发 -- 分享 互助 成长

外观模式

一、简介 1、外观模式为子系统中的一组接口提供一个统一的高层接口,这一接口使得子系统更加容易使用。 2、举例 :房间里有3盏灯,每一盏灯都有一个开关控制它的开和...

1876
来自专栏偏前端工程师的驿站

网页优化系列二:使用Cache缓存静态文件、图片(asp.net版)

  网站中存在一些不会经常变更的内容如静态文件、图片等,我们称之为静态资源。针对这些静态资源使用cache缓存到客户端中,以减少用户再次浏览该网页时的请求量,从...

1717
来自专栏文大师的新世界

3. react-redux

react-redux是reactjs官方推荐的state管理器。具体的定义我就不说了,因为有很多地方比我说的好,大家可以Google或参照:redux、中文文...

1072
来自专栏外文翻译

AppengineJS:用JavaScript来搞GAE

尽管Google没有为他自家的App Engine平台开发JavaScript SDK,但GAE Python SDK的新端口AppengineJS促进了GAE...

1978

扫码关注云+社区