尽管Google没有为他自家的App Engine平台开发JavaScript SDK,但GAE Python SDK的新端口AppengineJS促进了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的命名方式被转换为像“thisIsAName”一样的
JavaScript的命名方式。此外,所有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,表单,配额和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生态系统的一部分,会随着CommonJS版本的升级来更新。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有