共享桌面和基于Web的Javascript REST / Ajax

我正在运行一个基于Web的JavaScript客户端的node.js后端发送AJAX请求。

现在,我想使用纯Javascript,即Google的V8做一个小型桌面版的JavaScript客户端。

在这种情况下,我怎样才能启用对桌面版本的AJAX支持,因为没有窗口/文档对象? 在一个完美的世界中,Web和桌面版本将共享相同的代码?

或者我需要在js代码之外编写AJAX或REST API,即作为本机代码并从js中调用它?

正如Brad所说,即使在http://www.w3.org/TR/XMLHttpRequest/上有一个工作草案来将XMLHttpRequest集成到这些Web服务器上,目前还没有办法从ECMAScript非Web实现发出http请求实现以及(我猜通过外部绑定)。

我所做的就是创build一个全局函数,并在Web版本中实现它,如下所示:

function SendBackendRequest( url, parameters, func ) { var request=new ajaxRequest(); request.onreadystatechange=function() { if (request.readyState == 4) { if ( request.status == 200 || window.location.href.indexOf("http") ==-1 ) { func.call( this, request.responseText ); } else { func.call( this, "" ); } } } request.open( "POST", "http://localhost" + url, true ); request.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" ); request.send( parameters ); }; ajaxRequest=function() { var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; if ( window.ActiveXObject ) { // --- IE for (var i=0; i<activexmodes.length; i++) { try { return new ActiveXObject(activexmodes[i]) } catch(e) { //suppress error } } } else { if (window.XMLHttpRequest) // --- Mozilla, Safari etc return new XMLHttpRequest(); else return false; } }; 

在桌面方面,我也实现了SendBackendRequest(),并且在我的客户端代码中可以使用相同的代码与后端进行通信。