non-mvc web framework

107
Non-MVC Web Framework 前端工程師也能淡定地開發網站應用程式 Fred Chien

Upload: fred-chien

Post on 18-Dec-2014

7.637 views

Category:

Technology


6 download

DESCRIPTION

JavaScript is a client-side script language, but we can use it on server side programming now. However, it is still difficult to write server-side application for front-end developer.Here we try to find a solution to write server-side script that developer only need to understand and have client-side experience.

TRANSCRIPT

Page 1: Non-MVC Web Framework

Non-MVCWeb Framework

前端工程師也能淡定地開發網站應用程式

Fred Chien

Page 2: Non-MVC Web Framework

我是誰?

Who Am I

Page 3: Non-MVC Web Framework

Fred Chien錢逢祥

Page 4: Non-MVC Web Framework

永遠的大四生

Forever

Page 5: Non-MVC Web Framework

StartupMandice Software.

Page 6: Non-MVC Web Framework

StartupMandice Software.

Page 7: Non-MVC Web Framework

StartupMandice Software.

慣 C

救火 惡搞

創新

Page 8: Non-MVC Web Framework

慣 C

救火 惡搞

創新

JavaScript

Page 9: Non-MVC Web Framework

cfsghost At gmail.com

Page 10: Non-MVC Web Framework

Blogfred-zone.blogspot.com

Page 11: Non-MVC Web Framework

Personal Websitepeople.linux.org.tw/~fred/

Page 12: Non-MVC Web Framework

回到主題

Non-MVC Web Framework

Page 13: Non-MVC Web Framework

正式提到 Non-MVC 之前

Some Stories

Page 14: Non-MVC Web Framework

Web 的故事

Story of Web

Page 15: Non-MVC Web Framework

簡單來說

Page 16: Non-MVC Web Framework

商人眼中的 Web 發展

History of Web

Page 17: Non-MVC Web Framework

Web 1.0做很多網頁來賺錢

Page 18: Non-MVC Web Framework

泡沫化

Page 19: Non-MVC Web Framework

Web 2.0讓用戶自己做很多網頁來賺錢

Page 20: Non-MVC Web Framework

Cloud嗯... 滿出來的錢

Page 21: Non-MVC Web Framework

但是

Page 22: Non-MVC Web Framework

工程師眼中的 Web 發展

As Developer

Page 23: Non-MVC Web Framework

Homepage做很多網頁

Page 24: Non-MVC Web Framework

CGI伺服器有了多功能

Page 25: Non-MVC Web Framework

Homepage + CGI功能好多好開心

Page 26: Non-MVC Web Framework

泡沫化

Page 27: Non-MVC Web Framework

CHomeGpagIe 已經看不懂自己在寫什麼了

Page 28: Non-MVC Web Framework

救星

Page 29: Non-MVC Web Framework

Web Framework 有條理的整理我們的 code

Page 30: Non-MVC Web Framework

因為 MVC 的介入

降世於 Web

Page 31: Non-MVC Web Framework

Web 從此...

Page 32: Non-MVC Web Framework

有臉蛋

View

Page 33: Non-MVC Web Framework

有身材

Model

Page 34: Non-MVC Web Framework

還有神秘的三角地帶

Controller

Page 35: Non-MVC Web Framework

從此 MVC 讓大家過著爽歪歪的日子

Happiness Forever

Page 36: Non-MVC Web Framework

一個星期前

在 Node.js Taiwan 活動

Page 37: Non-MVC Web Framework

發現一個驚人的事實!

Amazing

Page 38: Non-MVC Web Framework

強者都要自幹一套

Web Framework

Page 39: Non-MVC Web Framework

我要當強者!

於是我也自幹了一套 Web 框架

Page 40: Non-MVC Web Framework

RedTea

Page 41: Non-MVC Web Framework

RedTea這不是紅茶!這不是紅茶!

Page 42: Non-MVC Web Framework

RedTea 是什麼?

Page 43: Non-MVC Web Framework

Non-MVC 的嘗試

Experimental

Page 44: Non-MVC Web Framework

githubgithub.com/cfsghost/redtea

Page 45: Non-MVC Web Framework

我沒有因 MVC 爽歪歪

Page 46: Non-MVC Web Framework

我只想要用 JavaScript

Page 47: Non-MVC Web Framework

回到原點思考

Thinking

Page 48: Non-MVC Web Framework

傳統 Web 開發不外乎...

Traditional Web Development

Page 49: Non-MVC Web Framework

HTML Page

Page 50: Non-MVC Web Framework

Front-end JavaScript

Page 51: Non-MVC Web Framework

Server-side ScriptingPHP, Python, RoR, ASP, .Net.....etc

Page 52: Non-MVC Web Framework

Server-sideScripting

Model(Database)

Controller(Handler)

View(Front-end)

User

MVC World

Page 53: Non-MVC Web Framework

Server-sideScripting

Model(Database)

Controller(Handler)

View(Front-end)

User

MVC World

Page 54: Non-MVC Web Framework

對!

Page 55: Non-MVC Web Framework

前端工程師

Page 56: Non-MVC Web Framework

只看臉蛋

Page 57: Non-MVC Web Framework

只專精前端

Page 58: Non-MVC Web Framework

難道就不能得到幸福嗎?

Page 59: Non-MVC Web Framework

郎情妾意劍就教不了

Page 60: Non-MVC Web Framework

Non-MVCWeb Framework

前端工程師的奸夫淫婦劍

Page 61: Non-MVC Web Framework

因為JavaScript只能寫前端

Page 62: Non-MVC Web Framework

然後有了光

Page 63: Non-MVC Web Framework

Node.js我能用 JavaScript 寫後端了!

Page 64: Non-MVC Web Framework

可是碰了壁

前後端開發經驗差好大!

Page 65: Non-MVC Web Framework

要會寫後端程式...

Page 66: Non-MVC Web Framework

學會組裝網頁

把資料塞到網頁中送出去

Page 67: Non-MVC Web Framework

學會 GET/POST 機制

接收各式各樣從 Client 送來的資料

Page 68: Non-MVC Web Framework

學會自定 API 和 Protocol

為了和前端 Ajax 套上

Page 69: Non-MVC Web Framework

JavaScript != JavaScript老子都不老子了

Page 70: Non-MVC Web Framework

為什麼

不能只用前端經驗?

Page 71: Non-MVC Web Framework

為什麼

後端的前戲這麼多?

Page 72: Non-MVC Web Framework

長驅直入才是王道!

Page 73: Non-MVC Web Framework

Non-MVCWeb Framework

前端工程師的奸夫淫婦劍

Page 74: Non-MVC Web Framework

如果

Page 75: Non-MVC Web Framework

你可以直接使用後端 Class

不再需要再學會怎麼用 GET/POST 傳遞資料

Page 76: Non-MVC Web Framework

後端 API 就像

Browser 內建的 API

不再需要設計 API Protocol 和學會 Ajax

Page 77: Non-MVC Web Framework

前端工程師時代

容易上手,開發效率比 MVC 高

Page 78: Non-MVC Web Framework

var c = document.getElementById('content');var chat = RedTea.API.Chat(); chat.conversation.push('Fred: Hello!<br>'); chat.getConversation(function(err, data) { c.innerHTML = data;});c.innerHTML += chat.conversation.join('');

Browser-side JavaScript Code

Page 79: Non-MVC Web Framework

module.exports = { Chat: Chat };function Chat() { var self = this; this.conversation = []; this.getConversation = function(callback) { callback(null, self.conversation); }; ...}

Server-side JavaScript Code

Page 80: Non-MVC Web Framework

一個放上面,一個放下面

Page 81: Non-MVC Web Framework

會寫 JavaScript 就搞定!

這只有 JavaScript 才辦得到!

Page 82: Non-MVC Web Framework

Server-sideJavaScript

Class

Browser-sideJavaScript

Script

RPC

Convert source code to AST

Send AST to client

Compile AST to real Object

Page 83: Non-MVC Web Framework

Server

Caller

Operatechat.getConversation(...);chat.conversation.push(...)

Ajax/Web Socket

Page 84: Non-MVC Web Framework

RedTea 開發四部曲

● 決定 URL Path● 設計 Layout in HTML● 設計前端功能 (In JavaScript)● 設計後端功能 (In JavaScript)

Page 85: Non-MVC Web Framework

RedTea 四大部份

● Route (統一化的 routing 設定)● UI (如同 MVC 的 views)● API (Server-side Script)● Runner (Client-side Script)

Page 86: Non-MVC Web Framework

Routing

Get /index

Runnerindex.js

UIindex.jade Browser

Page 87: Non-MVC Web Framework

But

Page 88: Non-MVC Web Framework

RedTea 只是原型

不支援 Session, Auth......etc

Page 89: Non-MVC Web Framework

某一天在 IRC 上

irc.freenode.net #Node.js-tw

Page 90: Non-MVC Web Framework

和 Caesar 討論

未來可以應用的方向

Page 91: Non-MVC Web Framework

決定以 Express 重新包裝

Page 92: Non-MVC Web Framework

名字千挑萬選

Naming

Page 93: Non-MVC Web Framework

Kamalan葛瑪蘭、嘎媽蘭

Page 94: Non-MVC Web Framework

Kamalan Web Framework台灣味的 Web Framework

Page 95: Non-MVC Web Framework

最重要的是

Page 96: Non-MVC Web Framework

全世界唯一神明認可

我有擲茭杯!

Page 97: Non-MVC Web Framework

githubgithub.com/cfsghost/Kamalan

Page 98: Non-MVC Web Framework

Feature特色

Page 99: Non-MVC Web Framework

Express 有的我們都有

All We Have

Page 100: Non-MVC Web Framework

而且

Page 101: Non-MVC Web Framework

使用方法一樣

Page 102: Non-MVC Web Framework

可是

Page 103: Non-MVC Web Framework

RedTea 的機制還沒移植

Page 104: Non-MVC Web Framework

Coming Soon

Page 105: Non-MVC Web Framework

為了表示歉意

Page 106: Non-MVC Web Framework

Live Demo也歡迎打臉

Page 107: Non-MVC Web Framework

第一個

要求 打臉 的講者