我的应用已准备好发布,我已决定要使用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);
答案 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。
注意:的
路径根指的是应用程序的目录,即 清单文件所在的目录。