1

我的应用程序已准备好分发,我决定使用 NodeWebkit。现在,问题是我的应用程序加载了本地文件,为此我需要一个 Web 服务器。如何将 NodeWebkit 和一些 Web 服务器打包在一起?如果无法将 Web 服务器添加到 NodeWebkit,如何将文件(图像、脚本、css)加载到 html 中?谢谢!:)

setTimeout(function() {
var http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs"),
    port = process.argv[2] || 8888;

var server = http.createServer(function(request, response) {

  var uri = url.parse(request.url).pathname
    , filename = path.join(process.cwd(), uri);

  fs.exists(filename, function(exists) {
    if(!exists) {
      response.writeHead(404, {"Content-Type": "text/plain"});
      response.write("404 Not Found\n");
      response.end();
      return;
    }

    if (fs.statSync(filename).isDirectory()) filename += '/index.html';

    fs.readFile(filename, "binary", function(err, file) {
      if(err) {        
        response.writeHead(500, {"Content-Type": "text/plain"});
        response.write(err + "\n");
        response.end();
        return;
      }

      response.writeHead(200);
      response.write(file, "binary");
      response.end();
    });
  });
}).listen(parseInt(port, 10));
}, 1000);
4

1 回答 1

1

Node-webkit 基本上是 node.js 和 chromium 浏览器的组合。如果您想让您的服务器与您的应用程序一起使用,您可以在 node.js 中编写一个服务器。

查看 Node 主要文档

在你的 package.json

{
  "name": "nw-demo",
  "node-main": "index.js",
  "main": "index.html"
}

mode-main基本上是一个在节点上下文中运行并在应用程序启动时启动的脚本。

该脚本将在 Node 的上下文中运行,不会在 Webkit 中的页面导航中被破坏,因此它可以用来编写一些“背景”或“守护进程”之类的代码。

因此,您可以在 127.0.0.1 本地编写和启动您的http服务器并与之通信。


如果您只关心加载资源,您可以通过提供绝对或相对路径直接添加它们。

例如:

<link rel="stylesheet" type="text/css" href="/bower_components/angular-ui-grid/ui-grid.css"/>
<script src="/bower_components/jquery/dist/jquery.min.js"></script>

使用应用协议

此外,app://nw.js 中提供了一个协议,您可以使用它来访问本地文件。请参阅文档

笔记:

path的根是指应用程序的目录,也就是manifest文件所在的目录。

于 2016-01-14T18:07:32.303 回答