是否可以将本地Web服务器嵌入到phonegap项目中?

时间:2014-07-25 15:15:01

标签: cordova embed local offline

我需要构建一个离线Phonegap应用。但是,我的所有js函数都需要一个Web服务器才能运行良好。 是否可以将本地Web服务器嵌入到phpnegap项目中?

3 个答案:

答案 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

参考: https://github.com/bykof/cordova-plugin-webserver

答案 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