用最潮的 java script 盡情開發 kde qt 程式

67
用最潮的 JavaScript 盡情開發 KDE/Qt 程式 Fred Chien

Upload: fred-chien

Post on 18-Dec-2014

7.059 views

Category:

Technology


3 download

DESCRIPTION

過往在一般人的認知當中,開發桌面應用程式不外乎使用 C/C++,尤其在 KDE/Qt 的世界中更是如此。但面對今天日日求新的世界,使用 C/C++ 這類中低階的語言開發應用程式,總有個要命的問題 - 『開發效率太差』,不足因應這個時代對應用的大量需求。因此使用有高生產力的腳本(Script) 語言來開發應用程式,已經慢慢變成一個全世界都在追逐的話題,而在這網路的時代,當仁不讓的就是 JavaScript。 雖然,自 Qt 4.7 開始,提供了 QML 和 JavaScript 的整合,更讓開發者,可以使用極為普遍的 JavaScript 語言開發各式 Qt 應用程式。可是,由於投入的開發者不夠多,相關的 Ecosystem 和資源也不完整和不充足,所以對於一般的 JavaScript 開發者來說,入門門檻仍然相當高。基於前述種種缺點,近來愈來愈潮又同為 JavaScript 解決方案的 Node.js,反而是開發應用程式更好的選擇。在我們為其加上 Qt 的支援後,就可以不費吹灰之力用最潮的 Node.js 寫出原生的 Qt 程式。

TRANSCRIPT

Page 1: 用最潮的 Java script 盡情開發 kde qt 程式

用最潮的 JavaScript

盡情開發 KDE/Qt 程式

Fred Chien

Page 2: 用最潮的 Java script 盡情開發 kde qt 程式

首先聲明

Page 3: 用最潮的 Java script 盡情開發 kde qt 程式

今天我沒有梗了

雖然昨天看了一晚的新聞找靈感

Page 4: 用最潮的 Java script 盡情開發 kde qt 程式

加上是技術議程

Page 5: 用最潮的 Java script 盡情開發 kde qt 程式

肯定無趣

Page 6: 用最潮的 Java script 盡情開發 kde qt 程式

我們何不速戰速決

Page 7: 用最潮的 Java script 盡情開發 kde qt 程式

成為下午茶解放軍

Page 8: 用最潮的 Java script 盡情開發 kde qt 程式

我是誰?

Who Am I

Page 9: 用最潮的 Java script 盡情開發 kde qt 程式

Fred Chien錢逢祥

Page 10: 用最潮的 Java script 盡情開發 kde qt 程式

就是昨天發表退學宣言那位

Page 11: 用最潮的 Java script 盡情開發 kde qt 程式

就是昨天發表退學宣言那位

後來才聽說今年有 Youtube 全球線上直播

Page 12: 用最潮的 Java script 盡情開發 kde qt 程式

不過我現在 R2

Page 13: 用最潮的 Java script 盡情開發 kde qt 程式

無論如何

Page 14: 用最潮的 Java script 盡情開發 kde qt 程式

Businessman奸商現在式

Page 15: 用最潮的 Java script 盡情開發 kde qt 程式

要幹大事業就找我!

Page 16: 用最潮的 Java script 盡情開發 kde qt 程式

cfsghost At gmail.com

Page 17: 用最潮的 Java script 盡情開發 kde qt 程式

Blogfred-zone.blogspot.com

Page 18: 用最潮的 Java script 盡情開發 kde qt 程式

Startup in TaiwanMandice Software.

MANDICE.COM

Page 19: 用最潮的 Java script 盡情開發 kde qt 程式

CEO, Mandice

Page 20: 用最潮的 Java script 盡情開發 kde qt 程式

慣 C

救火 惡搞

創新

StartupMandice Software.

Page 21: 用最潮的 Java script 盡情開發 kde qt 程式

Page 22: 用最潮的 Java script 盡情開發 kde qt 程式

回到今天正題

Page 23: 用最潮的 Java script 盡情開發 kde qt 程式

征服 KDE/Qt

用 Node.js

Page 24: 用最潮的 Java script 盡情開發 kde qt 程式

等等等等等等等等!!

等一下!!!

Page 25: 用最潮的 Java script 盡情開發 kde qt 程式

怎麼又是你!?

Page 26: 用最潮的 Java script 盡情開發 kde qt 程式

你講 GNOME

Page 27: 用最潮的 Java script 盡情開發 kde qt 程式

你搞 LXDE

Page 28: 用最潮的 Java script 盡情開發 kde qt 程式

KDE 的場子還來呀?

到底哪一國的?

Page 29: 用最潮的 Java script 盡情開發 kde qt 程式

...

Page 30: 用最潮的 Java script 盡情開發 kde qt 程式

身為專業的走路工

你知道

Page 31: 用最潮的 Java script 盡情開發 kde qt 程式

正題

Node.js + Qt

Page 32: 用最潮的 Java script 盡情開發 kde qt 程式

Why Don't Use QtQuick?Qt 內建的 JavaScript Solution 不好嗎?

Page 33: 用最潮的 Java script 盡情開發 kde qt 程式

我想答案顯而易見

Page 34: 用最潮的 Java script 盡情開發 kde qt 程式

Node.js 有上萬個 Module

有千軍萬馬支援

Page 35: 用最潮的 Java script 盡情開發 kde qt 程式

QtQuick 開發者是孤軍奮戰

什麼都要自己想辦法

Page 36: 用最潮的 Java script 盡情開發 kde qt 程式

現在更是 孤兒軍 奮戰

Nokia 脫手了 Qt 以後

Page 37: 用最潮的 Java script 盡情開發 kde qt 程式

在 JavaScript 這件事上

Resource, Developer, Documentation...

Page 38: 用最潮的 Java script 盡情開發 kde qt 程式

不是同一個數量級

與 Node.js 相比

Page 39: 用最潮的 Java script 盡情開發 kde qt 程式

不過

不可否認

Page 40: 用最潮的 Java script 盡情開發 kde qt 程式

Qt 仍然很優秀

我們得承認

Page 41: 用最潮的 Java script 盡情開發 kde qt 程式

穩定。跨平台。功能完備。

熱情。臉蛋正。身材火辣。

Page 42: 用最潮的 Java script 盡情開發 kde qt 程式

豈有不染指一下的理由?

Page 43: 用最潮的 Java script 盡情開發 kde qt 程式

Node.js + Qt = ?

Page 44: 用最潮的 Java script 盡情開發 kde qt 程式

Node-Qtgithub.com/arturadib/node-qt

Page 45: 用最潮的 Java script 盡情開發 kde qt 程式

Architecture

Linux

Qt Library Node.js

Node-qt Add-on

JavaScript Application

Page 46: 用最潮的 Java script 盡情開發 kde qt 程式

Qt Works on Several Platforms

MS Windows/Linux/MacOS/...

Qt Library Node.js

Node-qt Add-on

JavaScript Application

Page 47: 用最潮的 Java script 盡情開發 kde qt 程式

Live Demo反正 demo code 不是我寫的

Page 48: 用最潮的 Java script 盡情開發 kde qt 程式

npm install node-qt請記得一定要先裝 Qt Library

Page 49: 用最潮的 Java script 盡情開發 kde qt 程式

var qt = require('node-qt');var app = new qt.Application;var window = new qt.QWidget;

// Prevent objects from being GC'dglobal.app = app;global.window = window;

window.resize(100, 100);window.show();

// Event LoopsetInterval(app.processEvents, 0);

Sample code

Page 50: 用最潮的 Java script 盡情開發 kde qt 程式

Execute Program

Do Something

Exit

Normal Program Flow

Page 51: 用最潮的 Java script 盡情開發 kde qt 程式

Execute Program

Do Something

Exit

Normal Program Flow

Window

Page 52: 用最潮的 Java script 盡情開發 kde qt 程式

Execute Program

Do Something

GUI Application Flow Should Be

Process Events

LOOP

Page 53: 用最潮的 Java script 盡情開發 kde qt 程式

var qt = require('node-qt');var app = new qt.Application;var window = new qt.QWidget;

// Prevent objects from being GC'dglobal.app = app;global.window = window;

window.resize(100, 100);window.show();

// Event Loop

setInterval(app.processEvents, 0);

Sample code

!

Page 54: 用最潮的 Java script 盡情開發 kde qt 程式

Event Handler事件處理

Page 55: 用最潮的 Java script 盡情開發 kde qt 程式

window.paintEvent(function() {

/* Do Something ... */

});

Sample code for PaintEvent

Page 56: 用最潮的 Java script 盡情開發 kde qt 程式

window.paintEvent(function() {

var p = new qt.QPainter();p.begin(window);p.drawText(20, 30, 'Hello Qt!');p.end();

});

Using PaintEvent

Page 57: 用最潮的 Java script 盡情開發 kde qt 程式

mousePressEvent

mouseReleaseEvent

mouseMoveEvent

keyPressEvent

keyReleaseEvent

...

Page 58: 用最潮的 Java script 盡情開發 kde qt 程式

Live DemoAgain

Page 59: 用最潮的 Java script 盡情開發 kde qt 程式

Node-Qtgithub.com/arturadib/node-qt

Page 60: 用最潮的 Java script 盡情開發 kde qt 程式

支援度尚不完整

v0.0.1

Page 61: 用最潮的 Java script 盡情開發 kde qt 程式

肯定有很多問題

v0.0.1

Page 62: 用最潮的 Java script 盡情開發 kde qt 程式

四個月前

v0.0.2

Page 63: 用最潮的 Java script 盡情開發 kde qt 程式

不要太期待

v0.0.2

Page 64: 用最潮的 Java script 盡情開發 kde qt 程式

More Demo?

Page 65: 用最潮的 Java script 盡情開發 kde qt 程式

原作者不會投入太多時間

但我有空會去補完它

Page 66: 用最潮的 Java script 盡情開發 kde qt 程式

Q & A

Page 67: 用最潮的 Java script 盡情開發 kde qt 程式

Thanks