我需要构建一个离线Phonegap应用。但是,我的所有js函数都需要一个Web服务器才能运行良好。 是否可以将本地Web服务器嵌入到phpnegap项目中?
答案 0 :(得分:8)
是的,可以使用Cordova HTTPD插件:
https://github.com/floatinghotpot/cordova-httpd
我还没有使用它,但我可能需要使用我当前的项目。
一个缺点是,如果知道IP地址,其他人将能够浏览托管文件。在我部署之前,我将改变这种行为。
答案 1 :(得分:3)
现在有可能,我创建了一个符合您要求的插件。
首先通过以下方式安装:
cordova plugin add https://github.com/bykof/cordova-plugin-webserver
然后在应用程序的开头描述您的Web服务器
<html>
<head>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
</head>
<body>
<script>
// Wait for device API libraries to load
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
function onDeviceReady() {
webserver.onRequest(
function(request) {
console.log("This is the request: ", request);
webserver.sendResponse(
request.responseId,
{
status: 200,
body: '<html>Hello World</html>',
headers: {
'Content-Type': 'text/html'
}
}
);
}
);
// Starts webserver with default port 8080
webserver.start();
//... after a long long time
// stop the server
webserver.stop();
}
</script>
</head>
</html>
之后,您可以在网络中的其他浏览器上访问您的网络服务器:http://<ip-of-webserver-device-in-local-network>:8080
答案 2 :(得分:0)
嵌入式网络服务器是可能的,在(遥远的)过去,Cordova Android甚至有一个。
但是,对于一般用例,不应该需要它。如果必须从本地服务器提供文件,请参阅Michaels的答案。
loadUrl通过本地webview api不是(最好)在webview的运行时中包含javascript。
默认情况下,您没有理由需要首先与webview本地进行交互。
相反,创建一个index.html并通过 标记包含您想要的javascript,如@frank所述
cordovawebview.loadURL默认加载index.html,不需要修改。
查看Cordova Hello World App中的www / index.html以获取一个简单示例。
- 编辑 - 链接到CDV Hello World中的index.html