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就可以运行应用。

clipboard.png

使用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>

clipboard.png

注:通过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>

clipboard.png

我们还可以使用通过npm安装的模块


fsrookie
2.9k 声望256 粉丝

目前很多文章都是摘抄记录其他教程。见谅。


引用和评论

0 条评论