SlideShare a Scribd company logo
1 of 30
赶集客户端
 ——团购模块开发总结


     移动互联网事业部-何知翰
项目背景
团购结构
技术选型
整体架构
开发中遇到的问题
项目背景

赶集团购PC端效益日益上升;各大团购势力纷纷进驻
移动互联网。


团购模式:每天推出若干商品,在限时内组织用户线上购买,购买人数达
到最低限制时团购形成,参与用户均可以团购价格购买商品/服务。团购
是强LBS应用,所以在移动互联网上推出产品势在必行。
团购结构




涉及的部门:
团购部门提供团购的数据。
移动后台组封装数据,提供给客户端。
客户端展示数据。(客户端分为ios和android)
技术选型


选择html5的原因:
1.减少沟通成本。
   由原来的4个部门合作改成团购部门和web移动开发组进行合作。客户
   端只是提供入口即可。
2.版本的快速迭代。
   不随着客户端的上线而上线,随时可以上线新的版本。
3.跨平台。
   一个版本对应两个客户端,节省了开发周期。
整体架构

                                    Native language

             HTML5 CSS3
             JAVASCRIPT
后端接口




           Native
       language(java
          Object c)




                                          接口数据
基于WEB的app
                          HTML5,
                          CSS3,JS
整体架构-加载方式
          进入赶集客户端



            获取团
 不是最新       购模块
            的版本
下载最新的页面      号
   代码
              已是最新          三块缓存
          点击进入团购模
                             页面
             块


          使用本地缓存加
            载页面


 请求数据
开发过程中遇到的问题
 性能问题
 上下固定,中间滚动的定位
 javascript与native language的通讯
 本地存储
 测试
 细节问题
性能问题
         滚动事                             对
         件的简                           android
         体以实                           取消点
         现点击                            击态
          态




          下                              下
          拉       优化方案:                  拉
          滚    1.减少显示条数。                 滚
          动    2.去除消耗性能的                 动
          不       js滚动监听                 不
          流                              畅
          畅




320条数据                     最多显示20条数据
上下固定,中间滚动的定位
  固定




       position: fixed;用于实现元素固定在页
  可
  下    面某处的一种样式。在ios5和android
  拉    4以下不被支持。固定菜单面板这样
  滑
  动    的样式单纯使用css不能达到要求。




  固定
上下固定,中间滚动的定位
方案一:iScroll
                                iScroll

               使用JS+CSS3来实现头尾固定的效果。JS负责监听手
               指对屏幕的操作(touchstart,touchmove,touchend),
                控制css3中的transform来实现页面上元素的滚动
                                 的。

               优点:
               代码变得清晰简单。
               可以实现下拉刷新等功能。
               减少对客户端的依赖性。

               缺点:
               在android下不能使用,与原生实现的滚动性能相
               差太大。
上下固定,中间滚动的定位
方案二:拆分成三段


              webview
                        把页面拆分成三个部分,上中
                        下。中间超出的长度自然就有了
                        滚动条。
                        缺点:
                        更加依赖于客户端。
                        结构被限制在上中下三个区域。
                        跨页面间的JS调用也提升了代码
                        的复杂性。
              webview



                        优点:
                        性能得到提升。
                        可以跨平台使用。


              webview
上下固定,中间滚动的定位

iScroll    View拆分



                    虽然代码逻辑复杂了,但是为了
                    代码的通用性与可维护性,最终
                      选择了webview的拆分。
上下固定,中间滚动的定位

总结
新的技术必须要在充分的测试情况下
再去使用。网上基本上都没有提及iScroll
的性能问题。自己亲自测试,才知道还
是有差距的。
部分效率问题可以由原生控件去实
现。浏览器的转译引擎没有原生编译引
擎效率高。
js与native的通讯
Android与js




                  WebView
                                      客户端新                  Webview.
                                                        loadUrl(“javascri
                      webkit                             pt:ganji.foo()")
 native
                                        增接口

javascript
                                      ganji(namespace
             window        documnet
                                              )
js与native的通讯
iPhone与js




                  UIWebView
                                       监听URL     evaluateWebScri
                                                 pt:@”ganji.foo();
                      webkit                            ”
 native
                                        的改变

javascript
             #showLoading   #showMap    改变URL的
                                         hash
js与native的通讯
如何通过一个方法让js可以通用于android和ios?


                                           对这一层的封装可以对以后程序的维
                                           护,扩展,及错误定位起到了积极的作
                 判断当                       用。
                 前系统
android                             ios

直接调用window对象              改变hash,通知ios需
   内的方法                    要调用本地方法




      与android和ios定义的接口名称


callNative(methodName,[args1,args2...]);
                         接口所需要的参数
本地存储

疑问
为什么不使用使用浏览器的缓存策
略?
为什么不直接使用cookie ?
本地存储


Webview会接忽略http请求header头中的max-age 、 Cache-
Control 、cookie等参数,并不会缓存页面。
Webview不记录,接收cookie。
需要使用localStorage 来记录本地数据。
调试


后端与JS接口的调试
UI的调试
客户端与JS接口的调试


                服务器




          客户端         HTML5
调试
后端与JS接口的调试




                  使用PC,用
                   chrome,
                  safari来模拟
             调试
  服务器              客户端环
                  境,通过工
                  具去查看抓
                   取的请求
调试
样式的调试




           调试
  Weinre        实机测试
调试
客户端与JS接口的调试




                     优先在
                   iphone上测
              调试   试,相对于
  HTML5
                   android的调
                   试,更透明
                      清晰
调试

心得

Android和ios对JSON字符串解析的区
别。
Chrome,safari不能提供真实的效果。
优先适配ios,再调试android
一些细节


webview中不想点击的时候出现黄框焦点




   在需要去掉焦点的节点上加上样式:
   -webkit-tap-highlight-color:rgba(0,0,0,0);
一些细节

莫名其妙的出现横向滚动条




检查一下,极有可能是添加阴影造成的。如
果X轴的偏移不等于阴影的发散长度,就会
出现横向滚动条。
一些细节

Android1.6下不支持部分圆角,即4个角,
只需要其中某几个是圆角

 Android 1.6不支持这样写:
 -webkit-border-radius:5pt 0 5pt 0 ;
 这样圆角在1.6下需要改成:
 -webkit-border-top-left-radius:5pt;
 -webkit-border-bottom-left-radius:5pt;
一些细节

input type=number在iphone下,长度超过4
位会出现”,”导致无法验证是否为整数。




 换成input type=phone,这样不会自动转换了
一些细节

element.className.indexOf('xx') 在iphone下
返回空。


      element.className.indexOf(‘xx’) 在iphone下返
      回空。这里需要注意一下,与PC上的一些细
      节区别。
谢谢!

More Related Content

What's hot

0502 Windwos Server 2008 Card Space 新一代身份驗證機制
0502 Windwos Server 2008 Card Space 新一代身份驗證機制0502 Windwos Server 2008 Card Space 新一代身份驗證機制
0502 Windwos Server 2008 Card Space 新一代身份驗證機制Timothy Chen
 
Mobile web開發架構與入門
Mobile web開發架構與入門Mobile web開發架構與入門
Mobile web開發架構與入門Chi-wen Sun
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 
一淘新首页总结
一淘新首页总结一淘新首页总结
一淘新首页总结jieorlin
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVCjeffz
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing江華 奚
 
移动网站的兼容性探索
移动网站的兼容性探索移动网站的兼容性探索
移动网站的兼容性探索Webrebuild
 

What's hot (7)

0502 Windwos Server 2008 Card Space 新一代身份驗證機制
0502 Windwos Server 2008 Card Space 新一代身份驗證機制0502 Windwos Server 2008 Card Space 新一代身份驗證機制
0502 Windwos Server 2008 Card Space 新一代身份驗證機制
 
Mobile web開發架構與入門
Mobile web開發架構與入門Mobile web開發架構與入門
Mobile web開發架構與入門
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 
一淘新首页总结
一淘新首页总结一淘新首页总结
一淘新首页总结
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
 
移动网站的兼容性探索
移动网站的兼容性探索移动网站的兼容性探索
移动网站的兼容性探索
 

Similar to 赶集团购开发总结4

OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
前端性能测试
前端性能测试前端性能测试
前端性能测试tbmallf2e
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
Dev camps Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps Windows Store App 市集應用程式最佳實踐Meng-Ru (Raymond) Tsai
 
Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事Yihua Huang
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)Dexter Yang
 
客户端存储与计算
客户端存储与计算客户端存储与计算
客户端存储与计算xiaotao ning
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Liyao Chen
 
Node js feat pegasus
Node js feat pegasusNode js feat pegasus
Node js feat pegasuscnfi
 
Hello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web appHello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web apphungjie19
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理gorillazf
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题 Lumend
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctechKai Cui
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile appsAdam Lu
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 longMeng-Ru (Raymond) Tsai
 
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山imShining @DevCamp
 

Similar to 赶集团购开发总结4 (20)

OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
Dev camps Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps Windows Store App 市集應用程式最佳實踐
 
行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 
Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)
 
客户端存储与计算
客户端存储与计算客户端存储与计算
客户端存储与计算
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享
 
Node js feat pegasus
Node js feat pegasusNode js feat pegasus
Node js feat pegasus
 
Hello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web appHello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web app
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理
 
Html5
Html5Html5
Html5
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
 
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
 

More from yangdj

磊友科技CTO 赵霏演讲
磊友科技CTO 赵霏演讲磊友科技CTO 赵霏演讲
磊友科技CTO 赵霏演讲yangdj
 
黎明帝国发布会By黄何
黎明帝国发布会By黄何黎明帝国发布会By黄何
黎明帝国发布会By黄何yangdj
 
黎明帝国
黎明帝国黎明帝国
黎明帝国yangdj
 
海豚浏览器CTO刘铁锋:Web App发展现状
海豚浏览器CTO刘铁锋:Web App发展现状海豚浏览器CTO刘铁锋:Web App发展现状
海豚浏览器CTO刘铁锋:Web App发展现状yangdj
 
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规yangdj
 
面孔演讲词
面孔演讲词面孔演讲词
面孔演讲词yangdj
 
面孔网张路:Julia开源框架
面孔网张路:Julia开源框架面孔网张路:Julia开源框架
面孔网张路:Julia开源框架yangdj
 
微游戏Ceo徐城:HTML5的移动互联网时代
微游戏Ceo徐城:HTML5的移动互联网时代微游戏Ceo徐城:HTML5的移动互联网时代
微游戏Ceo徐城:HTML5的移动互联网时代yangdj
 
Adobe董龙飞:关于PhoneGap的12件事
Adobe董龙飞:关于PhoneGap的12件事Adobe董龙飞:关于PhoneGap的12件事
Adobe董龙飞:关于PhoneGap的12件事yangdj
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaveryangdj
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegapyangdj
 
iOS5 开发新特性
iOS5 开发新特性iOS5 开发新特性
iOS5 开发新特性yangdj
 
CSDN移动电子刊第三期
CSDN移动电子刊第三期CSDN移动电子刊第三期
CSDN移动电子刊第三期yangdj
 
Csdn移动电子刊 9月
Csdn移动电子刊 9月Csdn移动电子刊 9月
Csdn移动电子刊 9月yangdj
 
淘宝无线电子商务数据报告Marked
淘宝无线电子商务数据报告Marked淘宝无线电子商务数据报告Marked
淘宝无线电子商务数据报告Markedyangdj
 
Csdn移动电子刊第一期
Csdn移动电子刊第一期Csdn移动电子刊第一期
Csdn移动电子刊第一期yangdj
 
字霸一点通2003
字霸一点通2003字霸一点通2003
字霸一点通2003yangdj
 
友盟2011第一季度国内android数据报告
友盟2011第一季度国内android数据报告友盟2011第一季度国内android数据报告
友盟2011第一季度国内android数据报告yangdj
 
应用汇,Android
应用汇,Android应用汇,Android
应用汇,Androidyangdj
 
百度移动互联网发展趋势报告 2011年q1 (1)
百度移动互联网发展趋势报告 2011年q1 (1)百度移动互联网发展趋势报告 2011年q1 (1)
百度移动互联网发展趋势报告 2011年q1 (1)yangdj
 

More from yangdj (20)

磊友科技CTO 赵霏演讲
磊友科技CTO 赵霏演讲磊友科技CTO 赵霏演讲
磊友科技CTO 赵霏演讲
 
黎明帝国发布会By黄何
黎明帝国发布会By黄何黎明帝国发布会By黄何
黎明帝国发布会By黄何
 
黎明帝国
黎明帝国黎明帝国
黎明帝国
 
海豚浏览器CTO刘铁锋:Web App发展现状
海豚浏览器CTO刘铁锋:Web App发展现状海豚浏览器CTO刘铁锋:Web App发展现状
海豚浏览器CTO刘铁锋:Web App发展现状
 
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规
 
面孔演讲词
面孔演讲词面孔演讲词
面孔演讲词
 
面孔网张路:Julia开源框架
面孔网张路:Julia开源框架面孔网张路:Julia开源框架
面孔网张路:Julia开源框架
 
微游戏Ceo徐城:HTML5的移动互联网时代
微游戏Ceo徐城:HTML5的移动互联网时代微游戏Ceo徐城:HTML5的移动互联网时代
微游戏Ceo徐城:HTML5的移动互联网时代
 
Adobe董龙飞:关于PhoneGap的12件事
Adobe董龙飞:关于PhoneGap的12件事Adobe董龙飞:关于PhoneGap的12件事
Adobe董龙飞:关于PhoneGap的12件事
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
 
iOS5 开发新特性
iOS5 开发新特性iOS5 开发新特性
iOS5 开发新特性
 
CSDN移动电子刊第三期
CSDN移动电子刊第三期CSDN移动电子刊第三期
CSDN移动电子刊第三期
 
Csdn移动电子刊 9月
Csdn移动电子刊 9月Csdn移动电子刊 9月
Csdn移动电子刊 9月
 
淘宝无线电子商务数据报告Marked
淘宝无线电子商务数据报告Marked淘宝无线电子商务数据报告Marked
淘宝无线电子商务数据报告Marked
 
Csdn移动电子刊第一期
Csdn移动电子刊第一期Csdn移动电子刊第一期
Csdn移动电子刊第一期
 
字霸一点通2003
字霸一点通2003字霸一点通2003
字霸一点通2003
 
友盟2011第一季度国内android数据报告
友盟2011第一季度国内android数据报告友盟2011第一季度国内android数据报告
友盟2011第一季度国内android数据报告
 
应用汇,Android
应用汇,Android应用汇,Android
应用汇,Android
 
百度移动互联网发展趋势报告 2011年q1 (1)
百度移动互联网发展趋势报告 2011年q1 (1)百度移动互联网发展趋势报告 2011年q1 (1)
百度移动互联网发展趋势报告 2011年q1 (1)
 

赶集团购开发总结4