这年头,你只需要懂node webkit

69
这这这 这这这这这 node-webkit @ethanlai http://oklai.name

Upload: lainzq

Post on 10-May-2015

4.485 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: 这年头,你只需要懂Node webkit

这年头,你只需要懂 node-webkit

@ethanlaihttp://oklai.name

Page 2: 这年头,你只需要懂Node webkit

About MeISUX QQ 会员设计中心

Koala 作者Blog: http://oklai.nameGithub: https://github.com/oklai

Page 3: 这年头,你只需要懂Node webkit

Node-webkit 是啥 ?

Page 4: 这年头,你只需要懂Node webkit

现有的桌面开发技术• C++

• VC / VB / C#

• Delphi

• Java

• Python

• Qt

• Adobe AIR

Page 5: 这年头,你只需要懂Node webkit

Hello World

Windows Forms

Page 6: 这年头,你只需要懂Node webkit

QML

Page 7: 这年头,你只需要懂Node webkit

Java GUI

Page 8: 这年头,你只需要懂Node webkit

Delphi

Page 9: 这年头,你只需要懂Node webkit

C++

Page 10: 这年头,你只需要懂Node webkit
Page 11: 这年头,你只需要懂Node webkit

node-webkit

Page 12: 这年头,你只需要懂Node webkit

node-webkit 是什么?项目地址: https://github.com/rogerwang/node-webkit

node-webkit 是一个基于 Chromium 与 node.js的应用程序运行器,你可以使 HTML+JavaScript编写原生应用。在 node-webkit 内部,不紧可以使用浏览器本身的 DOM 对象,还允许你直接调用 Node.js 模块。这是一种新的开发方式,使用 web 技术开发原生应用。

Page 13: 这年头,你只需要懂Node webkit

node-webkit 是什么?

Page 14: 这年头,你只需要懂Node webkit

node-webkit 是什么?node.js 对象与 DOM 对象共存

Page 15: 这年头,你只需要懂Node webkit

特点:• 使用最新技术开发应用, HTML5 、 CSS3 、

JS 、 WebGL 。• 完整支持 Node.js APIs 与其他第三方模块。• 高性能: Node 与 Webkit 运行在同一个进

程中,函数调用简单,可以互相引用。• 轻松打包和分发应用程序。• 跨平台运行,兼容 Linux , Mac OSX 和

Windows 。

Page 16: 这年头,你只需要懂Node webkit

开始 node-webkit

创建 index.html:

创建 package.json:

Page 17: 这年头,你只需要懂Node webkit

开始 node-webkit如何运行:

下载你所属系统对应的 nw 二进制文件;

执行命令:// 指定 app 目录$ nw path_to_app_dir

或者// 把 app 目录压缩成 zip 文件并重命名为 app.nw$ nw path_to_app.nw

Tips :可以直接把 nw 文件放入项目根目录下,运行 nw 文件就能运行程序,开发阶段推荐这种方式。

Page 18: 这年头,你只需要懂Node webkit

开始 node-webkit

Page 19: 这年头,你只需要懂Node webkit

Quick Start – package.json

Page 20: 这年头,你只需要懂Node webkit

Quick Start – package.jsontitle(string)width/height(int)toolbar(boolean)icon(string)position(string)min_width/min_height(int)max_width/max_height(int)as_desktop(boolean)resizable(boolean)always-on-top(boolean)fullscreen(boolean)frame(boolean)show (boolean)......

Page 21: 这年头,你只需要懂Node webkit

Quick Start – Native API获取当前窗口对象:// Load native UI library var gui = require('nw.gui'); var win = gui.Window.get();

最小化窗口:win.minimize();

// 监听最小化事件win.on('minimize', function() { console.log('Window is minimized');});// 取消监听win.removeAllListeners('minimize');

Page 22: 这年头,你只需要懂Node webkit

Quick Start – Native API打开新窗口:var new_win = gui.Window.get( window.open('https://github.com'));

关闭窗口:win.close();

监听关闭窗口:win.on(‘close’, function () { //TODO})

Page 23: 这年头,你只需要懂Node webkit

Quick Start – 无框窗口package.json

Index.html

Page 24: 这年头,你只需要懂Node webkit

Quick Start – 无框窗口

Page 25: 这年头,你只需要懂Node webkit

Quick Start – Menus( 菜单 )

Page 26: 这年头,你只需要懂Node webkit

Quick Start – Tray( 系统托盘 )

Page 27: 这年头,你只需要懂Node webkit

Quick Start — 设置 Logo 图标

Package.json :

Inno Setup :勾选创建桌面图标,修改 iss 文件

Mac :修改: Contents/Resources/app.icns

Page 28: 这年头,你只需要懂Node webkit

Quick Start – More Native UI API

• Clipboard( 剪切板 )• File dialogs( 文件对话框 )• Shell– openExternal(URI) 在系统浏览器打开链接– openItem(file_path) 使用默认文件编辑器打

开文件– showItemInFolder(file_path) 在文件管理器中

显示文件

Page 29: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用• 第一步:打包项目文件把项目文件打包成一个 zip 文件,并把后缀重命名为 nw ,如app.zip app.nw 。注意: package.json 文件必须在根目录下。

目录结构参照:app.nw

|-- package.json`-- index.html`-- js`-- css`-- img...

Page 30: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用• 第二步:创建可执行文件

Windows:$ copy /b nw.exe+app.nw app.exe

Linux:$ cat /usr/bin/nw app.nw > app && chmod +x app

Page 31: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用• 第二步:创建可执行文件

Mac OS X:下载 node-webkit.app 文件,使用包管理方式打开,把项目目录整个到 Contents/Resources 目录下,并重命名为app.nw (如果想要更快地启动速度,可以使用 zip 打包后的 app.nw 文件)。

需要修改的文件:– Contents/Resources/app.icns app 图标– Contents/Info.plist 苹果软件包说明文件

Page 32: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用

别忘了 nw.pak 文件。Windows 下还需要 icudt.dll 。

Page 33: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用• 第三步:创建软件安装包

Page 34: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用• 第三步:创建安装包Windows : Inno Setuphttp://www.jrsoftware.org/isinfo.php

Ubuntu/Debian : Debreatehttp://debreate.sourceforge.net

Mac :重命名 node-webkit.app 即可。

Page 35: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用Inno Setup

Page 36: 这年头,你只需要懂Node webkit

Quick Start – 打包你的应用Debreate

Page 37: 这年头,你只需要懂Node webkit

The End!?

Page 38: 这年头,你只需要懂Node webkit
Page 39: 这年头,你只需要懂Node webkit

什么是 Node.js ?Node.js 是一个可以快速构建网络服务及应用的平台。该平台的构建是基于 Chrome's JavaScript runtime ,也就是说,实际上它是对 GoogleV8 引擎(应用于 Google Chrome 浏览器 ) 进行了封装。简单的说, Node.js 是服务器端的 JavaScript ,它允许在后端(脱离浏览器环境)运行 JavaScript 代码。

Node 入门: http://www.nodebeginner.org/index-zh-cn.html

Page 40: 这年头,你只需要懂Node webkit

Node.js API

• HTTP• HTTPS• Net• TLS/SSL• UDP/Datagram• Stream• DNS• Domain

Page 41: 这年头,你只需要懂Node webkit

Node.js API

• Process• Child Processes• C/C++ Addons• OS• File System• Crypto ( 加密 )• ……

Page 42: 这年头,你只需要懂Node webkit

Node.js – 第三方组件安装: npm install <name>https://npmjs.org/

Page 43: 这年头,你只需要懂Node webkit

Node.js – 第三方组件• 公司内网访问不了怎么办?

$ npm config set proxy http://proxy.tencent.com:8080

$ npm config set registry http://registry.npmjs.org

doc: https://npmjs.org/doc/config.html

Page 44: 这年头,你只需要懂Node webkit

NW 中如何使用 Node.js

Page 45: 这年头,你只需要懂Node webkit

NW 中如何使用 Node.js

Page 46: 这年头,你只需要懂Node webkit

在项目中使用第三方组件$ cd /path/to/your/app$ mkdir node_modules$ npm install jade

Page 47: 这年头,你只需要懂Node webkit

编译 C/C++ 原生组件node-gyp: Node.js native addon build toolhttps://github.com/TooTallNate/node-gyp

How to build:$ npm install -g node-gyp$ cd my_node_addon$ node-gyp configure$ node-gyp build

Use: var addon = require('./build/Release/addon');

More: http://nodejs.org/api/addons.html

Page 48: 这年头,你只需要懂Node webkit

run .NET and node.js code in-process

Edge.jshttps://github.com/tjanczuk/edge

An edge connects two nodes. This edge connects node.js and .NET. V8 and CLR. Node.js, Python, and C# - in process.

安装:$ npm install edge

Page 49: 这年头,你只需要懂Node webkit

run .NET and node.js code in-process

sample.js:

Run:

Page 50: 这年头,你只需要懂Node webkit

run .NET and node.js code in-process

// 引入文件var add7 = edge.func(__dirname + '/add7.csx');

// 引入 dllvar clrMethod = edge.func('My.Edge.Samples.dll');

Page 51: 这年头,你只需要懂Node webkit

node-webkit 可以做什么?

Page 52: 这年头,你只需要懂Node webkit

Apps Gallery

• Fawave Desktop

Page 53: 这年头,你只需要懂Node webkit

Apps Gallery

• Reditr - reddit client.

Page 54: 这年头,你只需要懂Node webkit

Apps Gallery

• Docular - an open-source and cross-platform editor for markdown documents!

Page 55: 这年头,你只需要懂Node webkit

Apps Gallery

• CSS Shack - create Layers, and export them into a single CSS file.

Page 56: 这年头,你只需要懂Node webkit

Apps Gallery

• CATS - an IDE for TypeScript developers.

Page 57: 这年头,你只需要懂Node webkit

Apps Gallery

• Koala - a gui tool for less, sass and coffeescript compilation.

Page 58: 这年头,你只需要懂Node webkit
Page 59: 这年头,你只需要懂Node webkit

调查:大家都如何使用 LESS & Sass

• 命令行lessc styles.less > styles.csssass --watch style.scss:style.css

• GUI 图形工具WinLess 、 Simpless 、 Codekit 、 Scout

Page 60: 这年头,你只需要懂Node webkit

Koala介绍koala 是一个图形编译工具,支持Less 、 Sass 、 CoffeeScript 。项目主页: http://koala-app.com/

Page 61: 这年头,你只需要懂Node webkit

功能特性

• 多语言支持:支持 Less 、 Sass 、 CoffeeScript 和 Compass Framework 。

• 实时编译:监听文件,当文件改变时自动执行编译,这一切都在后台运行,无需人工操作。

• 编译选项:可以设置各个语言的编译选项。

• 代码压缩: Less & Sass 支持编译后自动代码压缩 .

• 错误提示:在编译时如果遇到语法的错误, koala将在右下角弹出错误信息,方便开发者定位代码错误位置。

• 跨平台: windows 、 linux 、 mac都能完美运行。

Page 62: 这年头,你只需要懂Node webkit

如何使用?• 添加项目• 编写代码• Done

Page 63: 这年头,你只需要懂Node webkit

Screenshot - 全局设置

Page 64: 这年头,你只需要懂Node webkit

Screenshot – 文件批量设置

Page 65: 这年头,你只需要懂Node webkit

Screenshot – 编译错误提示

Page 66: 这年头,你只需要懂Node webkit

Screenshot – 编译日志

Page 67: 这年头,你只需要懂Node webkit

Github : https://github.com/oklai/koala

Page 68: 这年头,你只需要懂Node webkit

Links

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

Google Group: https://groups.google.com/forum/#!forum/node-webkit

Node.js: http://nodejs.org

Node 入门 : http://www.nodebeginner.org/index-zh-cn.html

Npmjs: https://npmjs.org

Koala: http://koala-app.com

Page 69: 这年头,你只需要懂Node webkit

The End & Thanks