包NodeWebkit和Web服务器

时间:2016-01-11 17:32:00

标签: html node.js webserver node-webkit embeddedwebserver

我的应用已准备好发布,我已决定要使用NodeWebkit。现在,问题是我的应用程序加载本地文件,我需要一个Web服务器。如何将NodeWebkit和某些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);

1 个答案:

答案 0 :(得分:1)

Node-webkit基本上是node.js和chrome浏览器的组合。如果您希望将服务器与您的应用程序一起使用,则可以在节点中编写服务器。

查看节点主documentation

在你的package.json

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

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

  

该脚本将在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>

使用应用协议

此外,nw.js中提供了app://协议,您可以使用该协议在本地访问文件。请参阅documentation

注意:

  

路径根指的是应用程序的目录,即   清单文件所在的目录。