NW.js可以做什么?
nw.js是基于chromium和node的(Chromium 是 Google 的chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。国内的大部分双核浏览器都采用Chromium内核)。它可以让我们直接从浏览器中调用node模块,而且也可以使用web开发技术在你的应用中。此外,还可以轻松的把web应用打包到本地应用。
获取NW.js
我们可以获取最新的二进制文件,通过官网 http://nwjs.io。或者可以自己编译nw.js二进制文件通过nw.js的指令。
官方推荐选择SDK构建风格来开发应用,这使您可以使用DevTools来调试您的应用程序,查看构建风格的不同之处。
开始你的第一个NW.js应用
通过第一个demo都是hello world,这次也不例外了~首先,创建package.json文件
{
"name" : "我的第一个应用",
"main" : "index.html"
}
package.json是应用的清单文件,书写的格式是json格式。其中main字段指出的是通过nw.js打开的入口文件。name字段指出的是该应用名称且唯一。还有其他的字段,我们以后在了解。
main字段中可以使用html文件或者js文件,如果是js文件的话可以这样去写
nw.Window.open("index.html", {}, function(win) {})
然后创建index.html
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
最后运行你的应用, 本人的开发环境是windows,所以只需要拖动包含package.json的这个文件夹到nw.exe就可以运行应用。
使用NW.js的API
所有的NW.js的APIs都在全部nw对象中,可以直接在js文件中调用。API指南。
下面这个例子展示了如何在你的应用中创建一个自定义菜单。
<!DOCTYPE html>
<html>
<head>
<title>Context Menu</title>
</head>
<body style="width: 100%; height: 100%;">
<button type="button" name="button" id="btn">click me</button>
<script>
// Create an empty context menu
var menu = new nw.Menu();
// Add some items with label
menu.append(new nw.MenuItem({
label: 'Item A',
click: function(){
alert('You have clicked at "Item A"');
}
}));
menu.append(new nw.MenuItem({ label: 'Item B' }));
menu.append(new nw.MenuItem({ type: 'separator' }));
menu.append(new nw.MenuItem({ label: 'Item C' }));
// Hooks the "contextmenu" event
document.getElementById('btn').addEventListener('contextmenu', function(ev) {
// Prevent showing default context menu
ev.preventDefault();
// Popup the native context menu at place you click
menu.popup(ev.x, ev.y);
return false;
}, false);
</script>
</body>
</html>
注:通过require('nw.gui')也可以返回nw对象
使用Node.js API
我们还可以直接从DOM中调用node模块。看下下面例子,使用node的os模块。
<!DOCTYPE html>
<html>
<head>
<title>My OS Platform</title>
</head>
<body>
<script>
// get the system platform using node.js
var os = require('os');
document.write('You are running on ', os.platform());
</script>
</body>
我们还可以使用通过npm安装的模块。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。