• 首页
  • nodejs
  • node.js webkit 项目 开启node.js 桌面应用

node.js webkit 项目 开启node.js 桌面应用

html5-node-webkit-retina-preview.png

为什么是 node.js 桌面应用

准确的说,这只是一个浏览器, node-webkit 项目是 chromium 和 node.js 搭建起来的本地运行时环境.

  1. 我们知道node.js 是javascript 在服务器端通过强大的 V8 引擎实现的.

  2. chromium 内置了 V8 引擎

所以 node-webkit 就这样结合起来了.

回到刚才的问题,为什么说是桌面应用


Node支持的与操作系统交互的功能,文件系统,网络 , 操作系统资源等, 以及Node之上的第三方库都可以在node-webkit中进行使用


所以他很像是一个桌面级应用,但是又有区别

和传统桌面应用不同地方是

它的UI 完全是 html + css 来实现,就如我们上面说的它就是一个浏览器,但是它要高于我们普通浏览网页用的浏览器,原因是 node-webkit 项目,由于内部集成 node.js ,所以可以方便访问本地系统,操作本地资源.

如何使用

以 mac 为例:

首先要下载 node-webkit

https://github.com/rogerwang/node-webkit

我选择了 Mac 10.7 64位

下载解压后,我把 node-webkit 目录copy 到了 应用列表文件夹中

nw.png

然后我们设置一个别名,方便调用 node-webkit 工具

alias nw="/Applications/nwjs-v0.12.3-osx-x64/nwjs.app/Contents/MacOS/nwjs"

我把 应用列表中的 node-webkit 目录下的 nwjs 工具路径设置了一个别名 nw 然后把这个别名设置 copy 到 .bash_profile (使用 bash ) 和 .zshrc (使用 zsh ) 然后 source 配置文件,立刻生效.

玩转我们的第一个 node-webkit 项目吧

我本地创建了一个文件夹 webkit


├── index.html
├── package.json
├── script
│       ├── app.js
│      └── jquery.min.js
└── style
        └── style.css

webkit.png

如何创建node-webkit项目 package.json 文件 请点击查看另外一篇博文

package.json 中各项的配置的意义请查看上面的链接,这里不再说明.

脚本文件夹 scripts ,样式文件夹 css ,index.html 就是一个简单的登录页面

如何启动 node-webkit 项目

方法一:

刚才不是创建了一个 node-webkit 应用 nw 的别名吗,这里我们就要用到了.

➜  /Users/zhangzhi/code  >nw webkit/

用上面的工具直接运行起来了 node-webkit 项目 login.png


看上去和浏览器打开一个 登录页没有任何区别


方法二:

直接将 webkit 目录压缩到 node-webkit 项目中

首先 CD 进入 webkit 项目目录下:

➜  /Users/zhangzhi/code/webkit  >zip -r ${PWD##*/}.nw *

指向上面命令把 当前目录的所有一切打包压缩到 ${PWD##*/}.nw 文件中

nw 文件就是 node-webkit 应用的缩写,此扩展名应用会直接使用 node-webkit 应用打开.

${PWD##*/} 是读取系统文件目录名作为 nw 文件的文件名

ys1.png

运行后,你会发现你的项目当前目录中多了一个 webkit.nw 的文件

ys2.png

然后双击打开 webkit.nw

login.png

最后附上上面测试用的几个文件的源码:

index.html


<html>

<head>

    <title>服务管理</title>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="css/main.css" rel="stylesheet" type="text/css" />

</head>

<body>

<form id="login" action="login" method="post">
    <h1>Log In</h1>
    <fieldset id="inputs">
        <input id="username" name="userName" type="text" placeholder="Username" autofocus required>
        <input id="password" name="passWorld" type="password" placeholder="Password" required>
    </fieldset>
    <fieldset id="actions">
        <input type="submit" id="submit" value="Log in">

    </fieldset>

</form>


    <script>

        // Load native UI library

        var gui = require('nw.gui');


        var win = gui.Window.get();


    </script> 

</body>

</html>

package.json


{
  "name": "ServerManage",
  "main": "index.html",
  "nodejs": true,
  "window": {
    "title": "Server Manage",
    "toolbar": false,
    "width": 480,
    "height": 350,
    "resizable": true,
    "show_in_taskbar": true,
    "frame": true,
    "kiosk": false,
    "position": "center"
  },
  "webkit": {
    "plugin": true
  },
  "chromium-args": "--enable-threaded-compositing"
}

```<p style="color:white;">出自:<a style="color:white;" href="http://yijiebuyi.com/blog/d1e5620d1a980fe24316d3d4ab929a53.html" >node.js webkit 项目 开启node.js 桌面应用</a></p>


回到顶部