SlideShare a Scribd company logo
1 of 26
Download to read offline
Frontend 设计与实现
Mokoversity / Julie Huang
WoT
• IoT 的 Application Layer
• 使⽤用 Web 技術來打造 Application
WoT 关键技术
• Application Framework
• Application Frontend 的 Composition Layer 設計
⼀一个轻量级的 Composition Layer 实作
AutomationJS
• AutomationJS 是⼀一个轻量级的 MVVM
• 利⽤用 Virtual DOM 技术,来进⾏行 UI Boundary
Composition
• 使⽤用 Backbone 做为 Model-View 的基础
• 未来也将接轨 HTML 5 的新技术标准-Shadow
DOM
Single Page Web Apps
来源: http://apievangelist.com/2013/05/23/ember-
angular-backbone-single- page-applications-and-apis/
URL Router
来源: http://msdn.microsoft.com/en-us/magazine/hh288078.aspx
REST API
来源: http://apievangelist.com/2013/05/23/ember-
angular-backbone-single- page-applications-and-apis/
MVC
View
Controller Model
MVC
View
Controller Model
MVC
View
Controller Model
MVC
View
Controller Model
MVP
View
Presenter Model
MVVM
View
ViewModel Model
MVWhaterver
• MVC
• MVP
• MVVM
• MV*
MVVM vs MVC
MVC
写程式 不⽤用写
Component
Template+
Data Binding
Template+
Control Logic	

!
MVVM MVVM React
来源:http://code.tutsplus.com/tutorials/important- considerations-
when-building-single-page-web-apps-- net-29356	

选择 Full Stack Framework
Backbone
• Backbone 必须与 Underscore 搭配使⽤用
• Backbone 是⼀一个 MVC 框架,⼀一开始先定义 Model 与 View
• Model 就是「表⽰示资料的模型」,也就是将会显⽰示在画⾯面上的
资料
• Model ⾥里的资料,要⽤用 Key-Value Pairs 的格式表⽰示
• View 的部份将负责处理 Template 与 Model 的对应
• View 的部份,也负责处理控制的部份,例如: Button 的
click 事件
Key-Value Pairs
• JSON 资料格式
• 将 JSON「套⽤用」到 Template
{ "name": "julie"}
Underscore &Backbone
• Underscore 会将 Model 的变数与 Template 做对
应,并且⽤用变数值取代,这个对应关系就是
ViewModel 的观念
• Underscore 透过 Template 将 Model ⾥里的资料,显⽰示
到画⾯面上
• 显⽰示资料到画⾯面上,不需要写程式;对设计师来说,
只要修改 Template
Backbone Data Model
• Backbone.Model 除了表⽰示资料外,还提供各种处理模型
• 最重要的处理模型:manage change
• ⼀一但 Model 裡的資料有變動(例如:新增、刪除等),就
透過 Backbone.Model.fetch 重新做 "Data Mapping”
• 使⽤用 Model fetch 的⽅方式,让 Response data 的处理更严
谨
• 使⽤用 Data model 的⽅方式,让 Data 与 API 偶和
(Aggregation)在⼀一起
Backbone 基本框架
/**!
* SETUP!
**/!
var app = app || {};!
!
/**!
* MODELS!
**/!
!
! /**!
* VIEWS! **/!
app.MessageView = Backbone.View.extend({!
events: {!
},!
});!
!
/**!
* BOOTUP!
**/!
$(document).ready(function() {!
app.messageView = new app.MessageView();!
});
!
!
script(type='text/template', id='tmpl-dust')
.col-md-4
a.text-center.btn-mbed-spot-news
img.img-responsive(src!='/images/gallery/timeline-1.jpg')
.info
h2 温度
h2 <%= sensordata %>
template-Jade
22
来取⽤用变数值
Backbone-Model
23
Key-Value Pairs
app.TestUp = Backbone.Model.extend({
url: function() {
return '/1/sandbox/weather/'
+ this.attributes.city;
},
wsUrl: function() {
return 'ws://wot.city/object/smarthome/viewer'
},
defaults: {
success: false,
errors: [],
errfor: {},
!
city: '',
temperature: 0
},
// AutomationJS plugins
parseJSON: function() {
var humidity = this.get('humidity')
, lowpulseoccupancytime = this.get('lowpulseoccupancytime')
, uv = this.get('uv')
, gas = this.get('gas')
, temperature = this.get('temperature');
this.set('result', false);
}
});
取得温度 RESTful
API
app.TemperatureView = Backbone.View.extend({
el: '#test-up',
template: _.template( $('#tmpl-dust').html() ),
events: {
},
initialize: function() {
this.component = new Automation({
el: this.$el,
model: app.TestUp,
template: this.template
});
!
// initialize sub tree
var model = this.component.add({
city: 'Taipei',
country: 'tw',
lowpulseoccupancytime: 0,
temperature:23,
href: 'https://www.mokoversity.com/coders',
img: '/images/gallery/timeline-1.jpg'
});
!
model.bind('notify.change', this.render, model);
},
render: function() {
$('#current div.bottom')
.css('height', '60px')
.animate({
height: this.get('x')
}, 1000);
}
});
Backbone-View
24
Template 的名称
当资料变了画⾯面就
跟着改变
WoT-Frontend
25
獨⽴立
Virtual DOM
说明:资料变动时只会
更新所属的 Virtual DOM
谢谢

More Related Content

What's hot

使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日twMVC
 
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能Edward Kuo
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
Koubei banquet 27
Koubei banquet 27Koubei banquet 27
Koubei banquet 27Koubei UED
 
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3twMVC
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Jollen Chen
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发fangdeng
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicKyle Shen
 
ASP.NET MVC Code Templates實戰開發 -twMVC#4
 ASP.NET MVC Code Templates實戰開發 -twMVC#4 ASP.NET MVC Code Templates實戰開發 -twMVC#4
ASP.NET MVC Code Templates實戰開發 -twMVC#4twMVC
 
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)Bruce Chen
 
Mvc架構說明
Mvc架構說明Mvc架構說明
Mvc架構說明Kemie Lin
 
利用 ASP.NET MVC 提升您的 Web 應用程式
利用 ASP.NET MVC 提升您的 Web 應用程式利用 ASP.NET MVC 提升您的 Web 應用程式
利用 ASP.NET MVC 提升您的 Web 應用程式Chui-Wen Chiu
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2Bruce Chen
 
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型Tom Fan
 
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6twMVC
 
MVC MVVM MVVMC
MVC MVVM MVVMCMVC MVVM MVVMC
MVC MVVM MVVMCNg Hui Qin
 
Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4Kyle Shen
 

What's hot (19)

使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
使用 ASP.NET MVC 開發SPA網站-微軟實戰課程日
 
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
Koubei banquet 27
Koubei banquet 27Koubei banquet 27
Koubei banquet 27
 
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
ASP.NET MVC 新增、查詢、修改、刪除 基本功實戰 -twMVC#3
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
 
Asp.Net Mvc 1.0
Asp.Net Mvc 1.0Asp.Net Mvc 1.0
Asp.Net Mvc 1.0
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
 
ASP.NET MVC Code Templates實戰開發 -twMVC#4
 ASP.NET MVC Code Templates實戰開發 -twMVC#4 ASP.NET MVC Code Templates實戰開發 -twMVC#4
ASP.NET MVC Code Templates實戰開發 -twMVC#4
 
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
 
Mvc架構說明
Mvc架構說明Mvc架構說明
Mvc架構說明
 
利用 ASP.NET MVC 提升您的 Web 應用程式
利用 ASP.NET MVC 提升您的 Web 應用程式利用 ASP.NET MVC 提升您的 Web 應用程式
利用 ASP.NET MVC 提升您的 Web 應用程式
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
 
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
 
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
架構行動式網站(使用 ASP.NET MVC 4.0 -twMVC#6
 
MVC MVVM MVVMC
MVC MVVM MVVMCMVC MVVM MVVMC
MVC MVVM MVVMC
 
Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4
 

Similar to WoT Frotend 的設計與實作

移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发完颜 小卓
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 longMeng-Ru (Raymond) Tsai
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile appsAdam Lu
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web FrameworkFred Chien
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVCjeffz
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日twMVC
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海Shaoning Pan
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabricJohn Chang
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎Gelis Wu
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
淘宝彩票移动项目开发实践
淘宝彩票移动项目开发实践淘宝彩票移动项目开发实践
淘宝彩票移动项目开发实践alvis-m
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
Android 4-app
Android 4-appAndroid 4-app
Android 4-applydiafly
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409zhengyiwuxian
 
App Developer Team Learning Map
App Developer Team Learning MapApp Developer Team Learning Map
App Developer Team Learning MapRyan Chung
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designJackson Tian
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本延胜 黄
 

Similar to WoT Frotend 的設計與實作 (20)

行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海
 
深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric深入研究雲端應用程式平台-AppFabric
深入研究雲端應用程式平台-AppFabric
 
Asp.net mvc 基礎
Asp.net mvc 基礎Asp.net mvc 基礎
Asp.net mvc 基礎
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
淘宝彩票移动项目开发实践
淘宝彩票移动项目开发实践淘宝彩票移动项目开发实践
淘宝彩票移动项目开发实践
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
Android 4-app
Android 4-appAndroid 4-app
Android 4-app
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409
 
App Developer Team Learning Map
App Developer Team Learning MapApp Developer Team Learning Map
App Developer Team Learning Map
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
 
Meteor
MeteorMeteor
Meteor
 

WoT Frotend 的設計與實作