是否可以使用 Node.js 或其他一些服务器端 JavaScript 方法开发 Google App Engine 网络应用程序?

Posted

技术标签:

【中文标题】是否可以使用 Node.js 或其他一些服务器端 JavaScript 方法开发 Google App Engine 网络应用程序?【英文标题】:Is it possible to develop a Google App Engine web app using Node.js or some other server side JavaScript approach? 【发布时间】:2011-04-25 00:58:43 【问题描述】:

我一直在关注服务器端 javascript(尤其是 Node.js)的最新发展,并想知道是否有可能使用这种方法来开发 Google App Engine Web 应用程序(单独或结合使用) Python 还是 Java?

【问题讨论】:

看到 Google 为 AppEngine 提供基于 V8 的运行时,我一点也不感到惊讶,但我认为 Node.JS 不会在其上运行,正如 Robert 在下面的回答中指出的那样。苹果一般不长在橘子树上。 【参考方案1】:

虽然与 pure 应用引擎不同(例如,手动缩放且当前处于 alpha 状态),但现在可以使用 Appengine Managed VMs

见:

Appengine NodeJS Quickstart项目 appengine-nodejs图书馆

他们也announced a Node.JS library for working with the google cloud platform。

gcloud-node图书馆

【讨论】:

【参考方案2】:

现在最好的选择是使用 Google Compute Engine 和 Datastore > link here

您可以使用 Google Compute Engine 托管您的 node.js 应用并使用 google-api-nodejs-client 连接到数据存储:

    您需要在Google API Console创建一个项目,并为其激活Compute Engine服务 您必须启用 Google Cloud Datastore API(参见上面的链接) 您需要设置您的 dataset-id(与您的 Google Cloud 项目 ID 相同的标识符)。 您需要连接到具有 datastore 和 userinfo.email 范围的 Compute Engine 实例(尚未实现对基于证书的服务帐户的 node.js 支持)。 您的 Compute Engine 机器中需要一个正常工作的 node.js 环境。 npm install google-api-nodejs-client 在您的管理命令行工具中

你应该准备好了

【讨论】:

您应该在答案中添加更多信息。现在它只是一个链接。如果该链接消失,答案将变得毫无用处。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。【参考方案3】:

您可能还想查看 ApeJS。我写的一个小框架,类似于 AppengineJS,但更简约。

http://lmatteis.github.com/apejs/

【讨论】:

【参考方案4】:

Tornado 可以在应用引擎上运行,类似于 node.js,但使用的是 python,并且也有一个不错的收益方法。但是tornado 在应用程序引擎上的使用存在一些限制,这可能会破坏将它用于您的项目的目标。有关更多信息,请参阅 github 上的龙卷风 我将 node.js 与 connect middelware 和 express.js 一起使用,以使 node 更易于用于简单的 Web 应用程序。

【讨论】:

【参考方案5】:

node.js 使用的事件循环模型与当前的 App Engine 设计不太匹配。

但是,有几个项目将 JavaScript 引入了 App Engine。查看 App Engine issue 35 了解一些解决方案。重点是:Rhino、Rhino For Webapps,如果您喜欢 Python,请查看 AppengineJS。我还听说RingoJS 可能值得研究。

【讨论】:

好答案,罗伯特。我只想补充一点,AppEngine 问题 #35 (code.google.com/p/googleappengine/issues/detail?id=35) 令人心悸,并恳求 Google 为 AppEngine 实施 V8 runtine/Node.JS。优先级为“中”。我不了解 Google,但在我工作的地方,Medium 的优先级意味着“您的请求已被确认并将被忽略”。值得注意的是,关于这个问题的所有 cmets 都没有解决 Robert 的观点,即 Node.js 的事件循环和 AppEngine 的请求方向之间存在阻抗不匹配。 来自 nashorn 的即将到来的 node.jar 怎么样? 看起来 AppengineJS.org 已经不存在了。 我认为这个答案需要更新,现在通过自定义运行时支持 appengine 上的 node.js。 Google 发布了一个名为 gcloud 的 npm 包,它允许您将应用程序部署到 appengine 并从您的节点应用程序中访问云存储和 ndb 等 appengine 服务。 cloud.google.com/solutions/nodejsgooglecloudplatform.github.io/gcloud-node/#

以上是关于是否可以使用 Node.js 或其他一些服务器端 JavaScript 方法开发 Google App Engine 网络应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们为 Node 使用服务器端模板引擎?

是否可以在 node.js 服务器上设置运行(服务器端)的 socket.io 客户端?

在 Node.js / 服务器端 javascript 中使用 .NET DLL

node.js 中的二进制 RPC

从服务端生成Excel电子表格(Node.js+SpreadJS)

node.js中net网络模块TCP服务端与客户端的使用