brig:node.js + qml 華麗大冒險

74
Brig Node.js + QML 華麗大冒險

Upload: fred-chien

Post on 22-Jan-2018

2.855 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Brig:Node.js + QML 華麗大冒險

Brig Node.js + QML 華麗大冒險

Page 2: Brig:Node.js + QML 華麗大冒險

Fred Chien錢逢祥

Page 3: Brig:Node.js + QML 華麗大冒險

LXDE

Page 4: Brig:Node.js + QML 華麗大冒險

cfsghost At [email protected]

Page 5: Brig:Node.js + QML 華麗大冒險
Page 6: Brig:Node.js + QML 華麗大冒險

Somebody ask me

有人問我

Page 7: Brig:Node.js + QML 華麗大冒險

What Javascript can do for me?

JavaScript 能幹麻?

Page 8: Brig:Node.js + QML 華麗大冒險

I said

我總是說

Page 9: Brig:Node.js + QML 華麗大冒險

You can do everything with it

可以用來做任何事

Page 10: Brig:Node.js + QML 華麗大冒險

...

每次講到這

Page 11: Brig:Node.js + QML 華麗大冒險

Start talking about Java

有很多人就把 Java 掏出來

Page 12: Brig:Node.js + QML 華麗大冒險

They don't know

殊不知

Page 13: Brig:Node.js + QML 華麗大冒險

紅茶拿鐵Black Tea Latte

Page 14: Brig:Node.js + QML 華麗大冒險

紅茶拿鐵Black Tea Latte

奶茶Milk Tea

Page 15: Brig:Node.js + QML 華麗大冒險

紅茶拿鐵Black Tea Latte

奶茶Milk Tea

是不一樣的!

Page 16: Brig:Node.js + QML 華麗大冒險

快把你掏出來的 Java 收回去!

有 S 沒 S 差很多

Page 17: Brig:Node.js + QML 華麗大冒險

不知何年何月才能完全破除迷思和謬誤

Page 18: Brig:Node.js + QML 華麗大冒險
Page 19: Brig:Node.js + QML 華麗大冒險

講到迷思

Page 20: Brig:Node.js + QML 華麗大冒險

on JSDC

這次 JSDC

Page 21: Brig:Node.js + QML 華麗大冒險

Today

今天

Page 22: Brig:Node.js + QML 華麗大冒險

再次脫離一下 WebEscape from Web Again

Page 23: Brig:Node.js + QML 華麗大冒險

沒有 HTML No HTML

Page 24: Brig:Node.js + QML 華麗大冒險

沒有 CSS No CSS

Page 25: Brig:Node.js + QML 華麗大冒險

我們來談談

Let's talk

Page 26: Brig:Node.js + QML 華麗大冒險

新東西

Something New with JavaScript

Page 27: Brig:Node.js + QML 華麗大冒險

不然要幹麻?

來 Conf 就是要聽點新奇的東西

Page 28: Brig:Node.js + QML 華麗大冒險
Page 29: Brig:Node.js + QML 華麗大冒險

Briggithub.com/cfsghost/brig

Page 30: Brig:Node.js + QML 華麗大冒險

$ npm install brig

NPM

Page 31: Brig:Node.js + QML 華麗大冒險

version 5+

Page 32: Brig:Node.js + QML 華麗大冒險
Page 33: Brig:Node.js + QML 華麗大冒險

QMLQt Modeling Language

Page 34: Brig:Node.js + QML 華麗大冒險

http://qt.io/

Page 35: Brig:Node.js + QML 華麗大冒險

簡單的語法

Easy Syntax

Page 36: Brig:Node.js + QML 華麗大冒險

酷炫

Fantastic

Page 37: Brig:Node.js + QML 華麗大冒險

原生的效能

Native

Page 38: Brig:Node.js + QML 華麗大冒險

內建 JavaScript 引擎

Built-in

Page 39: Brig:Node.js + QML 華麗大冒險
Page 40: Brig:Node.js + QML 華麗大冒險
Page 41: Brig:Node.js + QML 華麗大冒險

How Easy Is QML?

QML 有多簡單呢?

Page 42: Brig:Node.js + QML 華麗大冒險

import QtQuick 2.3import QtQuick.Controls 1.3

ApplicationWindow {visible: true;width: 800;height: 600;

}

Make A Window in QML

Page 43: Brig:Node.js + QML 華麗大冒險

import QtQuick 2.3import QtQuick.Controls 1.3

ApplicationWindow {visible: true;width: 800;height: 600;

}

Make A Window in QML

最基本的模組

Page 44: Brig:Node.js + QML 華麗大冒險

import QtQuick 2.3import QtQuick.Controls 1.3

ApplicationWindow {visible: true;width: 800;height: 600;

}

Make A Window in QML

控制相關模組

Page 45: Brig:Node.js + QML 華麗大冒險

import QtQuick 2.3import QtQuick.Controls 1.3

ApplicationWindow {visible: true;width: 800;height: 600;

}

Make A Window in QML

元件類型 {屬性: 參數

...}

Page 46: Brig:Node.js + QML 華麗大冒險

import QtQuick 2.3import QtQuick.Controls 1.3

ApplicationWindow {visible: true;width: 800;height: 600;

}

Make A Window in QML

視窗可顯示

視窗寬度

視窗高度

Page 47: Brig:Node.js + QML 華麗大冒險

A Window You Have Now!

現在我們有一個視窗了!

Page 48: Brig:Node.js + QML 華麗大冒險

$ qmlscene window.qml

Run with Qt Utility

Page 49: Brig:Node.js + QML 華麗大冒險
Page 50: Brig:Node.js + QML 華麗大冒險

Lode QML File with Brig

用 Brig 載入 QML 檔案

Page 51: Brig:Node.js + QML 華麗大冒險

var Brig = require('brig');

var brig = new Brig();

brig.on('ready', function(brig) {

// Load QML file

brig.open('window.qml', function(err, window) {

// Set title property for window

window.setProperty('title', 'Hello');

});

});

Load QML File with Brig

Page 52: Brig:Node.js + QML 華麗大冒險

setProperty()getProperty()getPropertyNames()

Set/Get Property

Page 53: Brig:Node.js + QML 華麗大冒險
Page 54: Brig:Node.js + QML 華麗大冒險

More QML

多學一點 QML 語法吧

Page 55: Brig:Node.js + QML 華麗大冒險

http://github.com/cfsghost/QML-Example

More QML Examples

Page 56: Brig:Node.js + QML 華麗大冒險
Page 57: Brig:Node.js + QML 華麗大冒險

QML + Node.js

Page 58: Brig:Node.js + QML 華麗大冒險
Page 59: Brig:Node.js + QML 華麗大冒險

Countdown Timer

Page 60: Brig:Node.js + QML 華麗大冒險
Page 61: Brig:Node.js + QML 華麗大冒險

IRC

Page 62: Brig:Node.js + QML 華麗大冒險

IRC

Page 63: Brig:Node.js + QML 華麗大冒險

Node.js QMLComponent

Update UIIRC Server

Page 64: Brig:Node.js + QML 華麗大冒險

Node.js QMLComponent

Update UIIRC Server

Trigger Signal

Page 65: Brig:Node.js + QML 華麗大冒險

Hundred thousands NPM Modules You Can Get

你有數十萬個 NPM 模組

Page 66: Brig:Node.js + QML 華麗大冒險

No need C++

不再需要 C++

Page 67: Brig:Node.js + QML 華麗大冒險

ApplicationWindow { …

signal updateMessage(var msg);

onUpdateMessage: { console.log(msg); }}

Define a signal in QML

Page 68: Brig:Node.js + QML 華麗大冒險

var Brig = require('brig');

var brig = new Brig();

brig.on('ready', function(brig) {

// Load QML file

brig.open('window.qml', function(err, window) {

// Trigger signal

window.emit('updateMessage', 'Hey');

});

});

Trigger signal from Node.js

Page 69: Brig:Node.js + QML 華麗大冒險

var Brig = require('brig');

var brig = new Brig();

brig.on('ready', function(brig) {

// Load QML file

brig.open('window.qml', function(err, window) {

// Listen to signal

window.on('updateMessage', function(msg) {

console.log(msg);

});

});

});

Listen to signal in Node.js

Page 70: Brig:Node.js + QML 華麗大冒險
Page 71: Brig:Node.js + QML 華麗大冒險

TODO

Page 72: Brig:Node.js + QML 華麗大冒險

NPM Module

打包 Qt Library

Page 73: Brig:Node.js + QML 華麗大冒險

Any Questions?

Page 74: Brig:Node.js + QML 華麗大冒險

Thanks