狠狠撸

狠狠撸Share a Scribd company logo
Koa 正在等一個人
Koa Is Just Waiting For You
Fred Chien
Fred Chien
錢逢祥
cfsghost
At Github
fred-zone
blogspot.com
Open Source Developer
HanGee
蕃薯哥
HanGee
蕃薯哥
Koa?
苦啊?
討論 Koa 之前
最近什麼最潮
?
Node.js v.s. io.js
0.12 的抢先释出大战
ECMAScript 6
Generator
Node.js 0.11.9+
Generator
使用 ES6 的方法
node --harmony
Koa 正在等一個人
初入 Generator
How to write a generator?
Generator 的使用流程
1. 宣告 Generator 函數
2. 建立 Generator 物件
3. 執行 Generator 內部流程
Generator 的使用方法
function* myGenerator() {
console.log('My Generator!');
}
var generator = myGenerator();
generator.next();
設計流程
With Generator
Generator 的基本流程設計
function* myGenerator() {
console.log('My Generator!');
yield
console.log('My Generator! Again!');
yield
console.log('My Generator! Again! Again!');
}
Generator 的回傳與代入值
function* myGenerator() {
console.log( 'My Generator!' );
yield
console.log( 'My Generator! Again!' );
var input = yield 123;
console.log(input);
}
var generator = myGenerator();
generator.next();
var ret123 = generator.next();
console.log(ret123);
generator.next( ':-D');
Generator 的回傳與代入值
function* myGenerator() {
console.log( 'My Generator!' );
yield
console.log( 'My Generator! Again!' );
var input = yield 123;
console.log(input);
}
var generator = myGenerator();
generator.next();
var ret123 = generator.next();
console.log(ret123);
generator.next( ':-D');
Generator 的回傳與代入值
function* myGenerator() {
console.log( 'My Generator!' );
yield
console.log( 'My Generator! Again!' );
var input = yield 123;
console.log(input);
}
var generator = myGenerator();
generator.next();
var ret123 = generator.next();
console.log(ret123);
generator.next( ':-D');
想像這是
setImediate()
setTimeout()
長得 Sync 樣
卻有 Async 骨
Generator
Koa 正在等一個人
Koa 起手式
npm install koa
First Example
var koa = require( 'koa');
// 建立一個網站伺服器
var app = koa();
// 當有瀏覽器要求頁面時,進行處理
app.use(function *() {
// 回應文字內容給瀏覽器
this.body = 'My First Koa Web' ;
});
// 監聽 3000
app.listen(3000);
Koa 正在等一個人
Routing
npm install koa-route
Routing
var koa = require( 'koa');
var route = require( 'koa-route');
// 建立一個網站伺服器
var app = koa();
// 當有瀏覽器要求 /test 頁面時,進行處理
app.use(route.get( '/test', function *() {
// 回應文字內容給瀏覽器
this.body = 'Testing Page!' ;
}));
// 監聽 3000
app.listen(3000);
Koa 正在等一個人
Data Transfer
Query String, body, parameters
Query String
var koa = require( 'koa');
var route = require( 'koa-route');
// 建立一個網站伺服器
var app = koa();
// 當有瀏覽器要求 /test 頁面時,進行處理
app.use(route.get( '/test', function *() {
// 回應 Query String 的 hackathon 欄位內容給瀏覽器
this.body = this.query.hackathon;
}));
// 監聽 3000
app.listen(3000);
Body Parser
npm install koa-bodyparser
Body
var koa = require('koa');
var route = require('koa-route');
var bodyParser = require('koa-bodyparser');
// 建立一個網站伺服器
var app = koa();
app.use(bodyParser());
// 當有瀏覽器使用 POST 方法要求 /test 頁面時,進行處理
app.use(route.post('/test', function *() {
// 回應 BODY 的 hackathon 欄位內容給瀏覽器
this.body = this.request.body.hackathon;
}));
// 監聽 3000
app.listen(3000);
Parameters
var koa = require( 'koa');
var route = require( 'koa-route');
// 建立一個網站伺服器
var app = koa();
// 當有瀏覽器要求 /test 頁面時,進行處理
app.use(route.get( '/test/:hackathon' , function *(hackathon) {
// 回應 hackathon parameter 內容給瀏覽器
this.body = hackathon;
}));
// 監聽 3000
app.listen(3000);
Koa 正在等一個人
靜態頁面支援
npm install koa-static
Static
var koa = require( 'koa');
var serve = require( 'koa-static');
// 建立一個網站伺服器
var app = koa();
app.use(serve( './public'));
// 監聽 3000
app.listen(3000);
Koa 正在等一個人
模板引擎
npm install co-views
Template Engine
var koa = require( 'koa');
var views = require( 'co-views');
// 建立模板渲染器,指定模板目錄及格式(以 jade 為例)
var render = views(__dirname + '/views', { ext: 'jade' });
// 建立一個網站伺服器
var app = koa();
// 找到 home.jade ,畫出並輸出頁面給瀏覽器
app.use(function *() {
this.body = yield render( 'home', { message: 'Koa is great!' });
});
// 監聽 3000
app.listen(3000);
Jade Template (home.jade)
p #{message}
Koa 正在等一個人
Session
npm install koa-session
Session Mechanism Initializing
var koa = require( 'koa');
var session = require( 'koa-session');
// 建立一個網站伺服器
var app = koa();
// 自訂或以亂數設定一組加密金鑰
app.keys = [ 'asdfghjkl!@#$%ASDFGHJ' ];
// 初始化 Session
app.use(session());
Session Usage
app.use(function *() {
// 將 Session 中 count 屬性的數字累加
var n = this.session.count || 0;
n++;
this.session.count = n;
// 將 Session 中 count 屬性內容回傳給客戶端
this.body = this.session.count;
});
Koa 正在等一個人
Questions?
Thanks

More Related Content

What's hot (20)

CP 值很高的 Gulp
CP 值很高的 GulpCP 值很高的 Gulp
CP 值很高的 Gulp
Yvonne Yu
?
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!
Fred Chien
?
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServ
Ben Lue
?
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
?
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
Fred Chien
?
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
?
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
Chu-Siang Lai
?
Nodejs introduce - using Socket.io
Nodejs introduce - using Socket.ioNodejs introduce - using Socket.io
Nodejs introduce - using Socket.io
Caesar Chi
?
Node js实践
Node js实践Node js实践
Node js实践
jay li
?
webpack 入門
webpack 入門webpack 入門
webpack 入門
Anna Su
?
狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践
longhao
?
Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)
Chu-Siang Lai
?
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
Chu-Siang Lai
?
Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)
Chu-Siang Lai
?
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
Will Huang
?
使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统
使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统
使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统
Hsu Ping Feng
?
從軟體開發角度?談 Docker 的應用
從軟體開發角度?談 Docker 的應用從軟體開發角度?談 Docker 的應用
從軟體開發角度?談 Docker 的應用
謝 宗穎
?
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
昱安 周
?
Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)
Chu-Siang Lai
?
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
?
CP 值很高的 Gulp
CP 值很高的 GulpCP 值很高的 Gulp
CP 值很高的 Gulp
Yvonne Yu
?
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!
Fred Chien
?
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServ
Ben Lue
?
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
?
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
Fred Chien
?
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
?
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
Chu-Siang Lai
?
Nodejs introduce - using Socket.io
Nodejs introduce - using Socket.ioNodejs introduce - using Socket.io
Nodejs introduce - using Socket.io
Caesar Chi
?
Node js实践
Node js实践Node js实践
Node js实践
jay li
?
webpack 入門
webpack 入門webpack 入門
webpack 入門
Anna Su
?
狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践狈辞诲别.箩蝉长连接开发实践
狈辞诲别.箩蝉长连接开发实践
longhao
?
Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)
Chu-Siang Lai
?
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
Chu-Siang Lai
?
Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)
Chu-Siang Lai
?
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
Will Huang
?
使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统
使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统
使用闯补惫补蝉肠谤颈辫迟及贬罢惭尝5打造协同运作系统
Hsu Ping Feng
?
從軟體開發角度?談 Docker 的應用
從軟體開發角度?談 Docker 的應用從軟體開發角度?談 Docker 的應用
從軟體開發角度?談 Docker 的應用
謝 宗穎
?
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
昱安 周
?
Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)
Chu-Siang Lai
?
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
?

Similar to Koa 正在等一個人 (20)

张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
zhangsuoyong
?
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
Zhi Zhong
?
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
?
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
?
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
?
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构
裕波 周
?
Ajax Transportation Methods
Ajax Transportation MethodsAjax Transportation Methods
Ajax Transportation Methods
yiditushe
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
?
Browser vs. Node.js Jackson Tian Shanghai
Browser vs. Node.js   Jackson Tian ShanghaiBrowser vs. Node.js   Jackson Tian Shanghai
Browser vs. Node.js Jackson Tian Shanghai
Jackson Tian
?
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
Shengyou Fan
?
以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫
以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫
以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫
Ben Lue
?
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训
lotusprince
?
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
jay li
?
HTML+COIMOTION 開發跨平台 app
HTML+COIMOTION 開發跨平台 appHTML+COIMOTION 開發跨平台 app
HTML+COIMOTION 開發跨平台 app
Ben Lue
?
狈辞诲别.箩蝉开发体验
狈辞诲别.箩蝉开发体验狈辞诲别.箩蝉开发体验
狈辞诲别.箩蝉开发体验
QLeelulu
?
使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會
使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會
使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會
Johnny Sung
?
javascript的分层概念 --- 阿当
javascript的分层概念 --- 阿当javascript的分层概念 --- 阿当
javascript的分层概念 --- 阿当
裕波 周
?
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
鍾誠 陳鍾誠
?
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
zhangsuoyong
?
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
Zhi Zhong
?
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
?
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
?
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
?
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构
裕波 周
?
Ajax Transportation Methods
Ajax Transportation MethodsAjax Transportation Methods
Ajax Transportation Methods
yiditushe
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
?
Browser vs. Node.js Jackson Tian Shanghai
Browser vs. Node.js   Jackson Tian ShanghaiBrowser vs. Node.js   Jackson Tian Shanghai
Browser vs. Node.js Jackson Tian Shanghai
Jackson Tian
?
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
Shengyou Fan
?
以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫
以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫
以贬罢惭尝5和颁翱滨惭翱罢滨翱狈打造跨平台础辫辫
Ben Lue
?
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
jay li
?
HTML+COIMOTION 開發跨平台 app
HTML+COIMOTION 開發跨平台 appHTML+COIMOTION 開發跨平台 app
HTML+COIMOTION 開發跨平台 app
Ben Lue
?
狈辞诲别.箩蝉开发体验
狈辞诲别.箩蝉开发体验狈辞诲别.箩蝉开发体验
狈辞诲别.箩蝉开发体验
QLeelulu
?
使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會
使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會
使用 Kong 與 GitOps 來管理您企業的 API 呼叫 @ 2024 台灣雲端大會
Johnny Sung
?
javascript的分层概念 --- 阿当
javascript的分层概念 --- 阿当javascript的分层概念 --- 阿当
javascript的分层概念 --- 阿当
裕波 周
?
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
鍾誠 陳鍾誠
?

More from Fred Chien (13)

MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 Emulator
Fred Chien
?
Brig:Node.js + QML 華麗大冒險
Brig:Node.js + QML 華麗大冒險Brig:Node.js + QML 華麗大冒險
Brig:Node.js + QML 華麗大冒險
Fred Chien
?
超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門
Fred Chien
?
OwaNEXT
OwaNEXTOwaNEXT
OwaNEXT
Fred Chien
?
QML + Node.js
QML + Node.jsQML + Node.js
QML + Node.js
Fred Chien
?
Stem OS Proposal
Stem OS ProposalStem OS Proposal
Stem OS Proposal
Fred Chien
?
Stem is JavaScript OS
Stem is JavaScript OSStem is JavaScript OS
Stem is JavaScript OS
Fred Chien
?
我編譯故我在:誰說 Node.js 程式不能編成 binary
我編譯故我在:誰說 Node.js 程式不能編成 binary我編譯故我在:誰說 Node.js 程式不能編成 binary
我編譯故我在:誰說 Node.js 程式不能編成 binary
Fred Chien
?
App house
App houseApp house
App house
Fred Chien
?
Enjoy Writing Modern Desktop Application in JavaScript
Enjoy Writing Modern Desktop Application in JavaScriptEnjoy Writing Modern Desktop Application in JavaScript
Enjoy Writing Modern Desktop Application in JavaScript
Fred Chien
?
软体人甘苦谈
软体人甘苦谈软体人甘苦谈
软体人甘苦谈
Fred Chien
?
Let s Enjoy Node.js
Let s Enjoy Node.jsLet s Enjoy Node.js
Let s Enjoy Node.js
Fred Chien
?
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js Module
Fred Chien
?
MakerBoard: MT7688 Emulator
MakerBoard: MT7688 EmulatorMakerBoard: MT7688 Emulator
MakerBoard: MT7688 Emulator
Fred Chien
?
Brig:Node.js + QML 華麗大冒險
Brig:Node.js + QML 華麗大冒險Brig:Node.js + QML 華麗大冒險
Brig:Node.js + QML 華麗大冒險
Fred Chien
?
超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門
Fred Chien
?
Stem is JavaScript OS
Stem is JavaScript OSStem is JavaScript OS
Stem is JavaScript OS
Fred Chien
?
我編譯故我在:誰說 Node.js 程式不能編成 binary
我編譯故我在:誰說 Node.js 程式不能編成 binary我編譯故我在:誰說 Node.js 程式不能編成 binary
我編譯故我在:誰說 Node.js 程式不能編成 binary
Fred Chien
?
Enjoy Writing Modern Desktop Application in JavaScript
Enjoy Writing Modern Desktop Application in JavaScriptEnjoy Writing Modern Desktop Application in JavaScript
Enjoy Writing Modern Desktop Application in JavaScript
Fred Chien
?
软体人甘苦谈
软体人甘苦谈软体人甘苦谈
软体人甘苦谈
Fred Chien
?
Let s Enjoy Node.js
Let s Enjoy Node.jsLet s Enjoy Node.js
Let s Enjoy Node.js
Fred Chien
?
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js Module
Fred Chien
?

Koa 正在等一個人