包NodeWebkit和Web服务器

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

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

查看Node主文档

在你的package.json中

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

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

该脚本将在Node的上下文中运行,在Webkit的页面导航中不会被销毁,所以它可以用来编写像代码一样的“背景”或“守护进程”。

所以你可以在127.0.0.1本地编写和启动你的http服务器并与之通信。


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

例如:

 <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://协议,您可以使用该协议在本地访问文件。 请参阅文档 。

注意:

path的根是指应用程序的目录,它是清单文件所在的目录。