AppengineJS是個(gè)開(kāi)源的JavaScript程序庫(kù),用于訪問(wèn)Google App Engine Python SDK,開(kāi)發(fā)者可以使用它創(chuàng)建Web應(yīng)用并部署到GAE上,進(jìn)而訪問(wèn)Google的持久化存儲(chǔ)和服務(wù)。
雖然AppengineJS使用JavaScript移植了App Engine Python API,但它實(shí)際上卻運(yùn)行在Rhino(使用Java編寫的Mozilla JavaScript引擎)之上。因此,使用AppengineJS的JavaScript代碼最終是部署在JVM上的。AppengineJS的創(chuàng)建者之所以選擇該方案是因?yàn)樗麄冇X(jué)得“Python API的設(shè)計(jì)與JavaScript更相近”。
Python到JavaScript的移植是通過(guò)JS命名約定實(shí)現(xiàn)的,Python的this_is_a_name標(biāo)識(shí)符變成了thisIsAName,所有的delete()函數(shù)被重命名為remove()以避免與delete關(guān)鍵字沖突。
到目前為止已經(jīng)移植了如下API:
- Datastore (覆蓋率 90%,可以使用,除了少量的API變更)
- Memcache (覆蓋率 : 90%, 可以使用)
- URL Fetch (覆蓋率 : 90%, 可以使用)
- Mail (覆蓋率 : 90%, 可以使用)
- XMPP (覆蓋率 : 90%, 可以使用)
- Images (覆蓋率 : 60%, 可以使用)
- Users (覆蓋率 : 80%, 可以使用)
- OAuth (覆蓋率 : 20%, 處理中)
- Task Queue (覆蓋率 : 80%, 可以使用)
- Blobstore (覆蓋率 : 50%, 可以使用)
- Quota (覆蓋率 : 90%, 可以使用)
- Local Unit Testing (覆蓋率 : 80%, 可以使用,除了一些API變更)
GitHub項(xiàng)目包含了源代碼、文檔鏈接以及使用AppengineJS的兩個(gè)示例鏈接:一個(gè)是使用了Datastore API (tar.gz)的JSGI應(yīng)用,另一個(gè)是由AppengineJS和Nitro開(kāi)發(fā)的博客應(yīng)用(tar.gz)。