玩转 JAE - Nodejs 应用实践探讨

玩转 JAE - Nodejs 应用实践探讨

博客: http://liteneo.com/2014/07/29/play-with-jae/

京东云擎(JAE)目前的的限制实在是太宽松了,留给我们很大的玩(zhe)耍(teng)空间,在此我用几行 Node.js 代码抛砖引玉

Web Console(网络控制台)

Web Console 允许直接通过浏览器执行服务器 shell 命令,使用 console-io 模块只需要几行代码即可搭建:

var webconsole = require('console-io');
var http = require('http');
var express = require('express');

var app = express(); var server = http.createServer(app);

webconsole(server); app.use(express.static(’./node_modules/console-io’)); server.listen(process.env.PORT || 1337);

部署在 JAE 上的地址:http://terminal.jd-app.com/ ,大家想可以把它当作一个只有控制台的 Linux 系统,想怎么玩就怎么玩,不过由于 JAE 的限制,用户只对 $HOME 文件夹有写入权限,无法执行 bash 文件等等,但是也是很高的可玩性的,在此我就不多说了

Web Filesystem(网络文件管理器)

Web Filesystem 可以通过浏览器管理服务器上的文件系统,使用 Express 团队的开发的模块 serve-index 就可以轻松实现:

var express = require('express');
var serveIndex = require('serve-index');

var app = express(); app.use(serveIndex(’/’, {‘icons’: true, hidden: true})) app.use(express.static(’/’));

app.listen(process.env.PORT || 1337);

使用 serve-index 列出根目录的文件系统,再通过 express.static 将所有根目录下的文件变成资源文件,就可以查看和下载所有文件了 部署地址:http://filesystem.jd-app.com/

让 JAE 支持 Koa.js

其实就是让 JAE 支持 0.11.9 以上的 Node 版本,因为 Koa.js 使用了只有 0.11.9 以上版本 Node 的新特性 generator,以解决 callback hell 问题

JAE 提供的 Node 版本号为 0.10.15,显然是无法部署基于 Koa.js 框架的应用的。其实让 JAE 支持最新版本的 Node 也很简单,那就是自己提供最新版本的 Node ,Node.js 官网提供了编译好的各平台的二进制文件,而且除去 npm 就只有一个单个文件,部署非常方便,比如我下载了最新版本的 Node (v0.11.13) for linux-x64 ,解压出 Node 文件放在应用的 vendor 文件夹,然后修改 Procfile 文件为 web: ./vendor/node --harmony app.js ,然后像普通的 Node 应用一样部署即可,测试代码如下:

var koa = require('koa');
var app = koa();

app.use(function *(){ this.body = ‘Hello Koa’; });

app.listen(process.env.PORT || 1337);

部署地址:http://koatest.jd-app.com/ 这个没什么好说的,仅仅只是一个测试


5 回复

玩转 JAE - Nodejs 应用实践探讨

Web Console(网络控制台)

Web Console 允许我们直接通过浏览器执行服务器上的 shell 命令。利用 console-io 模块,我们可以快速搭建一个这样的控制台。

示例代码:

var webconsole = require('console-io');
var http = require('http');
var express = require('express');

var app = express();
var server = http.createServer(app);

// 集成 webconsole 中间件到 express 应用
webconsole(server);
app.use(express.static('./node_modules/console-io'));

// 监听指定端口或默认端口 1337
server.listen(process.env.PORT || 1337, function() {
    console.log('Web Console is running on port', process.env.PORT || 1337);
});

部署地址:

在这个控制台中,你可以像操作 Linux 系统一样执行各种命令。不过需要注意的是,由于 JAE 的限制,你只能对 $HOME 文件夹有写入权限,并且不能执行 bash 脚本等。

Web Filesystem(网络文件管理器)

Web Filesystem 可以让你通过浏览器管理服务器上的文件系统。使用 serve-index 模块可以轻松实现这一功能。

示例代码:

var express = require('express');
var serveIndex = require('serve-index');

var app = express();

// 使用 serve-index 来列出根目录的文件系统
app.use(serveIndex('/', {'icons': true, hidden: true}));

// 将根目录下的所有文件作为静态资源处理
app.use(express.static('/'));

// 监听指定端口或默认端口 1337
app.listen(process.env.PORT || 1337, function() {
    console.log('Filesystem Manager is running on port', process.env.PORT || 1337);
});

部署地址:

通过上述代码,你可以查看和下载服务器上根目录的所有文件。

让 JAE 支持 Koa.js

Koa.js 是一个基于 Generator 的 Node.js 框架,它需要 Node.js 0.11.9 或更高版本。然而,JAE 默认提供的 Node.js 版本为 0.10.15,这使得部署基于 Koa.js 的应用变得不可能。

为了支持 Koa.js,我们需要手动提供最新版本的 Node.js。例如,我们可以下载并解压 Node.js v0.11.13 的 Linux x64 版本,并将其放置在应用的 vendor 文件夹中。

修改 Procfile:

web: ./vendor/node --harmony app.js

示例代码:

var koa = require('koa');
var app = koa();

app.use(function *(){
  this.body = 'Hello Koa';
});

app.listen(process.env.PORT || 1337, function() {
    console.log('Koa App is running on port', process.env.PORT || 1337);
});

部署地址:

通过上述步骤,我们成功地在 JAE 上部署了一个基于 Koa.js 的应用。

这些实践展示了如何充分利用 JAE 平台的功能来构建和部署 Node.js 应用。希望这些示例能够帮助你在 JAE 上进行更多有趣的探索!


目测开发测试Koa还是比较有用,感谢分享~

对于“玩转 JAE - Nodejs 应用实践探讨”的帖子,我们可以从以下几个方面进行探讨:

Web Console(网络控制台)

使用console-io模块创建一个可以通过浏览器访问的控制台。以下是简化版的示例代码:

const webconsole = require('console-io');
const http = require('http');
const express = require('express');

const app = express();
const server = http.createServer(app);

webconsole(server);
app.use(express.static('./node_modules/console-io'));
server.listen(process.env.PORT || 1337);

这段代码创建了一个Express服务器,并将其与console-io模块集成,允许用户通过浏览器执行shell命令。

Web Filesystem(网络文件管理器)

利用serve-indexexpress.static来展示和管理服务器文件系统:

const express = require('express');
const serveIndex = require('serve-index');

const app = express();
app.use(serveIndex('/', {'icons': true, hidden: true}));
app.use(express.static('/'));

app.listen(process.env.PORT || 1337);

这段代码设置了一个简单的文件浏览器,用户可以浏览、下载服务器上的文件。

让 JAE 支持 Koa.js

为了支持Koa.js,你需要更新到Node.js的更高版本(如0.11.9及以上)。可以在应用中包含特定版本的Node.js,然后通过Procfile指定启动命令:

假设已下载并解压了Node.js到vendor目录,则Procfile应为:

web: ./vendor/node --harmony app.js

随后可以使用Koa.js编写简单的应用,例如:

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
  ctx.body = 'Hello Koa';
});

app.listen(process.env.PORT || 1337);

这些示例展示了如何在JAE平台上使用Node.js构建不同的服务,从简单的控制台和文件管理器到更复杂的框架应用。

回到顶部