SlideShare a Scribd company logo
1 of 30
Download to read offline
单页面开发遇到
的一些问题
钟志
无线事业部
2014-05-25
——SPA在去哪儿Pad Touch上的实践
xunlei sina baidu qunar
钟志
• 热爱前端和新技术
• 爱好摄影和美食
• 去哪儿无线前端工程师
目
录
1 Padtouch概况
2 遇到的一些问题
3 相关资源
4 Q & A
目
录
1
Padtouch概
述
SPA流程图
Browser webserver CDN API
data
data
data
data
html
js/css
SPA和客户端类似
SPA
Native App
Desktop App
REST APIs
Middleware
Lib(s)
Data Store(s)
HTML
JSON
JSON
JSON
RPC or
Websocket
Padtouch前端结构
core
jQuery underscore requirejs
jQuery UI Backbone.js Require-text
Gruntjs
Webserver
Components
本地化组件化
模块化 自动化
一体化页面化
livereload
jshint
autoprefixer
uglify
cssmin
htmlmin
less
urlrewrite
imagemin
imageembed
mocha
r.js
Pad Web App
Modules
…
jquery.ui.qunar.citypicker
jquery.ui.qunar.datepicker
jquery.ui.qunar.message
jquery.ui.qunar.dialog background
$.addPressClass
$.location utils
$.cookie
$.spin
flightcommon hotel user
2
遇到的一些问
题
路由
让每个视图有了自己的门牌号码
Backbone提供的路由
改良版本
支持QueryString的版本
http://pad.qunar.com/#flight/li
st/depCity=北京&arrCity=上海
&goDate=2014-06-01
各视图之间无依赖
自由传递参数
使用requiretext载入模板文件
Requiretext是require的一个插件,它能将模板文件当做
一个字符串引入到js中
https://github.com/requirejs/text
开发时的模板
在JS中使用模板
打包后的模板
让前端模板支持跨域部署
http://pad.qunar.com/api/flight
http://qunarzz.com/xxx.js
• css
• image
• font
• js
• template
减少网络请求,提升网页性能
打包
打包配置
Gruntfile.js中的配置
main.js
flight.js
hotel.js
train.js
user.js
按业务加载不同的js包
• 模拟测试数据
接口数据模拟
基于connect middleware的本地网页服务器
数据模拟流程图
输入网址
匹配
URL
connect
Require本地文件 代理到其他地址 不代理
urlrewrite.js
模拟数据格式1
模拟数据格式2
可编程,可接收参数
3
相关资源
• http://nodejs.org/
• http://gruntjs.com/
• http://yeoman.io/
• http://bower.io/
• http://underscorejs.org/
• http://backbonejs.org/
• http://requirejs.org/
• https://github.com/requirejs/text
• http://jenkins-ci.org/
4
Q & A

More Related Content

What's hot

漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例Kuro Hsu
 
Blazor Component 開發實戰
Blazor Component 開發實戰Blazor Component 開發實戰
Blazor Component 開發實戰Gelis Wu
 
《淘宝客户端 for Android》项目实战
《淘宝客户端 for Android》项目实战《淘宝客户端 for Android》项目实战
《淘宝客户端 for Android》项目实战完颜 小卓
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVCjeffz
 
Html5移动网站开发实践
Html5移动网站开发实践Html5移动网站开发实践
Html5移动网站开发实践Web Zhao
 
淘宝开放产品前端实践
淘宝开放产品前端实践淘宝开放产品前端实践
淘宝开放产品前端实践taobao.com
 

What's hot (6)

漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
 
Blazor Component 開發實戰
Blazor Component 開發實戰Blazor Component 開發實戰
Blazor Component 開發實戰
 
《淘宝客户端 for Android》项目实战
《淘宝客户端 for Android》项目实战《淘宝客户端 for Android》项目实战
《淘宝客户端 for Android》项目实战
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
 
Html5移动网站开发实践
Html5移动网站开发实践Html5移动网站开发实践
Html5移动网站开发实践
 
淘宝开放产品前端实践
淘宝开放产品前端实践淘宝开放产品前端实践
淘宝开放产品前端实践
 

Viewers also liked

iOS 8 and iPhone 6 for web developers and designers
iOS 8 and iPhone 6 for web developers and designersiOS 8 and iPhone 6 for web developers and designers
iOS 8 and iPhone 6 for web developers and designersZhi Zhong
 
2014 Touch RD Summary & Work Report
2014 Touch RD Summary & Work Report2014 Touch RD Summary & Work Report
2014 Touch RD Summary & Work ReportZhi Zhong
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会Zhi Zhong
 
Html5不只是个传说
Html5不只是个传说Html5不只是个传说
Html5不只是个传说Zhi Zhong
 
Touch开发应届生培训
Touch开发应届生培训Touch开发应届生培训
Touch开发应届生培训Zhi Zhong
 
Introduce Fiddler Tips and Tricks
Introduce Fiddler Tips and TricksIntroduce Fiddler Tips and Tricks
Introduce Fiddler Tips and TricksZhi Zhong
 
David Villa, Laduma Hunter
David Villa, Laduma HunterDavid Villa, Laduma Hunter
David Villa, Laduma HunterBabylon Magazine
 
邮件沟通技巧
邮件沟通技巧邮件沟通技巧
邮件沟通技巧Zhi Zhong
 
The art of Lita Cabellut - Dephts of Humanity
The art of Lita Cabellut - Dephts of HumanityThe art of Lita Cabellut - Dephts of Humanity
The art of Lita Cabellut - Dephts of HumanityBabylon Magazine
 
Icfcc conference real
Icfcc conference realIcfcc conference real
Icfcc conference realUM
 
Roadshow qunar ppt_2013
Roadshow qunar ppt_2013Roadshow qunar ppt_2013
Roadshow qunar ppt_2013Steve Hu
 
Getting started with fiddler
Getting started with fiddlerGetting started with fiddler
Getting started with fiddlerZhi Zhong
 

Viewers also liked (17)

iOS 8 and iPhone 6 for web developers and designers
iOS 8 and iPhone 6 for web developers and designersiOS 8 and iPhone 6 for web developers and designers
iOS 8 and iPhone 6 for web developers and designers
 
2014 Touch RD Summary & Work Report
2014 Touch RD Summary & Work Report2014 Touch RD Summary & Work Report
2014 Touch RD Summary & Work Report
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
 
Html5不只是个传说
Html5不只是个传说Html5不只是个传说
Html5不只是个传说
 
Bm#11 Arena
Bm#11  ArenaBm#11  Arena
Bm#11 Arena
 
Touch开发应届生培训
Touch开发应届生培训Touch开发应届生培训
Touch开发应届生培训
 
Exact Online Onderwijs
Exact Online OnderwijsExact Online Onderwijs
Exact Online Onderwijs
 
Introduce Fiddler Tips and Tricks
Introduce Fiddler Tips and TricksIntroduce Fiddler Tips and Tricks
Introduce Fiddler Tips and Tricks
 
David Villa, Laduma Hunter
David Villa, Laduma HunterDavid Villa, Laduma Hunter
David Villa, Laduma Hunter
 
邮件沟通技巧
邮件沟通技巧邮件沟通技巧
邮件沟通技巧
 
The art of Lita Cabellut - Dephts of Humanity
The art of Lita Cabellut - Dephts of HumanityThe art of Lita Cabellut - Dephts of Humanity
The art of Lita Cabellut - Dephts of Humanity
 
Icfcc conference real
Icfcc conference realIcfcc conference real
Icfcc conference real
 
Roadshow qunar ppt_2013
Roadshow qunar ppt_2013Roadshow qunar ppt_2013
Roadshow qunar ppt_2013
 
Getting started with fiddler
Getting started with fiddlerGetting started with fiddler
Getting started with fiddler
 
The flaites
The flaitesThe flaites
The flaites
 
Why use linkedin
Why use linkedinWhy use linkedin
Why use linkedin
 
Animals In Danger
Animals In DangerAnimals In Danger
Animals In Danger
 

Similar to 单页面开发遇到的一些问题

Web development introduced history and future
Web development introduced history and futureWeb development introduced history and future
Web development introduced history and futurejarryli
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计Xi Zeng
 
Web development overview
Web development overviewWeb development overview
Web development overviewWei Sun
 
价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流hizhubo
 
移动互联网的机遇与挑战
移动互联网的机遇与挑战移动互联网的机遇与挑战
移动互联网的机遇与挑战Courtney Chow
 
Yog Framework
Yog FrameworkYog Framework
Yog Frameworkfansekey
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web FrameworkFred Chien
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平drewz lin
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 longMeng-Ru (Raymond) Tsai
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用luolonghao
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)锐 张
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器iflytek
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)Joseph Chiang
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展taobao.com
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
应用开发一般工作流程和注意
应用开发一般工作流程和注意应用开发一般工作流程和注意
应用开发一般工作流程和注意cucued
 
数据库性能量化
数据库性能量化数据库性能量化
数据库性能量化yzsind
 
数据库性能量化 叶正盛
数据库性能量化 叶正盛数据库性能量化 叶正盛
数据库性能量化 叶正盛yzsind
 

Similar to 单页面开发遇到的一些问题 (20)

Web development introduced history and future
Web development introduced history and futureWeb development introduced history and future
Web development introduced history and future
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
Web development overview
Web development overviewWeb development overview
Web development overview
 
价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流
 
移动互联网的机遇与挑战
移动互联网的机遇与挑战移动互联网的机遇与挑战
移动互联网的机遇与挑战
 
Yog Framework
Yog FrameworkYog Framework
Yog Framework
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
应用开发一般工作流程和注意
应用开发一般工作流程和注意应用开发一般工作流程和注意
应用开发一般工作流程和注意
 
数据库性能量化
数据库性能量化数据库性能量化
数据库性能量化
 
数据库性能量化 叶正盛
数据库性能量化 叶正盛数据库性能量化 叶正盛
数据库性能量化 叶正盛
 

单页面开发遇到的一些问题