如何在我的机器上设置快速“虚拟”服务器? (Phonegap可访问)

时间:2014-06-11 16:11:45

标签: javascript eclipse rest cordova xmlhttprequest

我正在尝试创建一个可以从服务器请求某些数据的简单PhoneGap应用程序。我对服务器端代码非常陌生,我的目标仅仅是评估使用外部服务器的phonegap的可行性。

我的应用程序已经准备好了phonegap(使用Javascript编写,我正在使用PhoneGap Build并使用AVD来测试应用程序),但我能找到的唯一持久性方法是处理本地存储。所以要将我的问题分解为更明确的组成部分:

  1. 设置一个可以从我的phonegap应用程序访问的简单服务器是否有“快速而肮脏”的方式?

  2. 什么是首选请求方法?我一直在研究Ajax / REST / jQuery,但如果我是诚实的,我很难理解这些类型的请求在我的应用程序(或服务器端)中“存在”的位置?

  3. 我正在使用eclipse keplar,并且更喜欢避免使用命令提示符的方法。

3 个答案:

答案 0 :(得分:1)

您是否更需要更多方法来制作持久性内容?那你可能想要考虑WebSQL: http://docs.phonegap.com/en/3.5.0/cordova_storage_storage.md.html#Storage

但是如果你真的需要一个虚拟服务器(你的问题的第1部分),那么这取决于你迄今为止的经验背景。正如您已经安装了PhoneGap,您可能已经安装了NodeJS,这意味着它是一个轻量级,快速且即时的"服务器

因此,您可以将此脚本保存在文件系统中的某个位置,例如/home/meee/dummy.js

var http = require('http');
http.createServer(function (req, res) {

  var arguments = require('url').parse(req.url, true); 
  var query = arguments['query']; // JS Object with parsed GET string arguments

  var command = '';
  if (typeof query['command'] !== 'undefined') {
    command = query['command'];
  }


  // Here would be the well designed command handler
  var resultFromCommandHandler = "Work result for command: " + command; 
  var statusFromCommandHandler = "OK"; // what a liar


  var response = { "status" : statusFromCommandHandler, "result" : resultFromCommandHandler };

  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end( JSON.stringify(response) );

}).listen(1337, '127.0.0.1');

console.log('Server running at http://127.0.0.1:1337/');

然后从命令行运行:

node /home/meee/dummy.js
> Server running at http://127.0.0.1:1337/

然后启动网络浏览器并输入以下网址:

http://127.0.0.1:1337/?command=getList&page=orders

浏览器会显示服务器的答案。所以你有最小的可思考服务器在运行。通过一些修改,您将在Eclipse中获得运行配置,以使Node与您的虚拟脚本一起运行。我甚至期望Node和Eclipse都有现成的插件,因为这个软件很受欢迎。

现在,从您的PhoneGap应用程序中,只需尝试调用URL并向命令处理程序添加一些有用的东西,然后就可以轻松地在您的应用程序和服务器之间进行交互。

此外,正如我提到您的经验,您可能安装了tomcat服务器,因此请使用此服务器。如果你有一个mac,可能会有一些Apache,只是尝试启动它。随着时间的推移,我开始使用TurnKeyLinux,这是一个在VMware / Fusion图像(http://www.turnkeylinux.org/)中的精彩微型LAMP安装

关于问题的第2部分,如何联系服务器:

  • AJAX是一种方法,而不是某种具体的协议。您可以使用AJAX来获取Webside的一部分,一旦从服务器获取,就可以在Webside中构建它们。您可以使用任何客户端语言进行AJAX调用。
  • REST是一种通信原则,您可以使用定义良好的进行通信。它属于像SOAP这样庞大的Web架构定义领域,但它比SOAP轻得多。
  • jQuery是一个简化编写优秀Javascript客户端的库。它包含一个有用的$ .ajax()方法,您可以使用它。

现在,我建议忘记SOAP / REST等。只需在PhoneGap中用一个按钮编写一个小的HTML框架,然后单击该按钮的事件即可激活某个AJAX调用,使用JQuery实现。使用AJAX成功事件,在PhoneGap应用程序中显示服务器的结果。此设置是您的概念验证,可以轻松调试。

之后,尝试定义应用程序所需的一些用例和CRUD。从这里,您将获得所需的命令和参数,您可以将其实现到虚拟服务器中。

也许你必须做一些进一步的研究,继续这一点,阅读一些开源服务器应用程序,阅读一些定义和概念。请注意,编写Web服务器应用程序时存在许多缺陷,因此不要做出一些艰难的截止日期承诺,它不会在您的第一个应用程序中工作。此外,您将不得不尽快重新设计我们的虚拟HTML框架,以免扼杀意大利面条代码。

答案 1 :(得分:0)

对于已经使用Java但不想安装Node.js的人,我通常使用Spring引导和Java使用近0行代码:https://github.com/alessiop86/dummy-server

依赖关系由Maven管理。如果您不熟悉Maven:EclipseIntelliJ

有很多指南

答案 2 :(得分:0)

您可以尝试使用此代码 -

var express = require("express");

var app = express();

app.get("/", function(req, res){
    res.send("Get methods");

});

app.use(express.static("public")); // put the static data folder name here which contain your UI code.

var server = app.listen(8081, function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log(host +" : "+port);

});

按照https://jsrach.wordpress.com/

中的说明操作