SlideShare a Scribd company logo
1 of 49
Download to read offline
Eric.Xiao
ericssonxiao@gmail.com
http://www.linkedin.com/in/ericssonxiao
Hybrid App
目前碰到的问题是什么?
ž  弱网络或短暂无网络情况下,用户使用客
户端的问题。
ž  开发一个Native App的应用,费时,费力,
成本高,所以想要降低成本。
ž  学习一下Java语言当时的口号,一次编
译,到处运行,所以想要跨平台,一份代
码搞定所有问题。
ž  到发版的时候,各种发版,各种平台,还
有苹果平台的审核,长达一个月,都有可
能。
目前碰到的问题是什么?
ž  发了版本了,出BUG了,无法改,只好
等待下一版本。
ž  再来谈谈工程化,敏捷软件开发,想要快
速迭代。
ž  Native App 平台依赖强,升级成本高
ž  JS跟CSS,依赖于后端产出的HTML
ž  有的业务逻辑在前端,有的在Model层,
更多的是在View层
比较一下吧!
再来一个趋势图
我们的愿景是:
ž  App可以随时发版,解决各种线上问题
ž  App可以离线使用,不依赖平台,减少用
户升级版本时,造成的用户流失。
ž  App开发快,可迭代,可以并行开发,前
后台分离,职责清晰。
ž  App可以唤起手机的各种功能
ž  App可以插件式的升级各种功能
ž  App便于测试,可以做UI自动化测试,及
其他各种自动化测试。
我们的选择是:
原来的系统
新系统设计
为实现新系统,引入NodeJS
ž  前端熟悉的语言,學習成本低
ž  都是JS,可以前后端复用
ž  体质适合:事件驱动、非阻塞I/O
ž  适合IO密集型业务
ž  执行速度也不差
前后端职责划分:
淘宝使用这样的架构,压测性能
对比
回归正题
ž  先讨论一下Hybrid App 内嵌web部分的
开发
我们的研发工具
ž  Yeomanè Yo, Grunt, Bower
ž  Javascript + Html5 + CSS3
ž  LESS or SASS
ž  Node.js
ž  Java
ž  Redis + Memcached
ž  ActiveMQ or Kafka
ž  Mysql or MongoDB
Yeoman介绍
ž  Yeoman是一个工具的集合,包含三个工
具:Yo, Grunt, Bower.
Yeoman介绍
Yeoman 安装
安装Yeoman的命令:
创建一个新的目录:
运行Yo命令,创建AngularJS项目:
Yo 创建AngularJS项目
Yo 创建AngularJS项目
创建成功
Yo命令
Bower命令
Grunt 命令
HTML5离线存储技术
ž  Application Cache
—  本地缓存应用所需文件
ž  LocalStorage & SessionStorage
—  键值对(key-value)存储数据
ž  Web SQL
—  关系数据库,通过SQL语句访问
ž  IndexDB
—  索引数据库
Application Cache
ž  HTML5支持应用资源的离线存储,每一
个WEB应用可以将网站的静态资源,图
片,js,css等缓存到本地的浏览器中。
ž  通过使用缓存清单(cache manifest)做
控制。
ž  减轻服务器的负载
ž  解决在弱网络或短暂无网络环境下,用户
使用的问题,节省带宽,优化用户体验。
Application Cache浏览器支持情况:
Application Cache 注意事项
ž  站点离线存储的容量限制是5M
ž  如果manifest文件,或者内部列举的某一个文件不能正常下载,
整个更新过程将视为失败,浏览器继续全部使用老的缓存
ž  引用manifest的html必须与manifest文件同源,在同一个域下
ž  在manifest中使用的相对路径,相对参照物为manifest文件
ž  CACHE MANIFEST字符串应在第一行,且必不可少
ž  系统会自动缓存引用清单文件的 HTML 文件
ž  manifest文件中CACHE则与NETWORK,FALLBACK的位置顺序
没有关系,如果是隐式声明需要在最前面
ž  FALLBACK中的资源必须和manifest文件同源
ž  当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问
缓存中的资源。
ž  站点中的其他页面即使没有设置manifest属性,请求的资源如果
在缓存中也从缓存中访问
ž  当manifest文件发生改变时,资源请求本身也会触发更新
Web服务器要添加的配置:
Manifest 文件
ž  Manifest文件有变化才更新
ž  一次必须更新Manifest中的所有文件
ž  下次生效
Application Cache更新机制
LocalStorage & SessionStorage
LocalStorage & SessionStorage
ž  HTML5中定义的WebStorage API的规范,
定义了浏览器存储资料的机制,包含
localStorage 和 SessionStorage
ž  LocalStorage可以长期存储数据,没有时
间限制,一天,一年,两年甚至更长,数
据都可以使用
ž  SessionStorage只有在浏览器被关闭之
前使用,创建另一个页面时同意可以使用,
关闭浏览器之后数据就会消失
ž  最多存储5M的数据
LocalStorage & SessionStorage
浏览器支持情况:
LocalStorage & SessionStorage
浏览器支持情况:
Cookie, LocalStorage,
SessionStorage区别
LocalStorage使用
Window.localStorage.setItem(key,value);//存储
数据
Window.localStorage.getItem(key);//读取数据
Window.localStorage.removeItem(key);//删除数
据项
Window.localStorage.clear();//删除所有数据
SessionStorage使用
Window.sessionStorage.setItem(key,value);//
存储数据
Window.sessionStorage.getItem(key);//读取数
据
Window.sessionStorage.removeItem(key);//删
除数据项
Window.sessionStorage.clear();//删除所有数
据
为支持多个浏览器,建议使用
Store.js
https://github.com/marcuswestin/store.js.git
Web SQL
ž  Web SQL不是HTML5规范的一部分,它通
过一套API来操作浏览器中的数据库。
ž  1)打开数据库openDatabase()方法:
—  此方法创建数据库对象,既可以使用已有的数据
库,也可以创建新的数据库。
ž  2)事务transaction()方法:
—  此方法可以用于控制事务处理,执行提交操作或
回滚操作。
ž  3)执行SQL命令executeSql()方法:
—  此方法用于执行SQL查询。
Index DB
ž  HTML5 的一个重要特性是本地数据持久
性,它使用户能够在线和离线访问 Web
应用程序。
ž  IndexedDB API 取代了 Web Storage
API,后者在 HTML5 规范中已不推荐使
用。
ž  IndexedDB 具有多个优势,其中包括索
引、事务处理和健壮的查询功能。
Web SQL浏览器支持情况:
IndexDB 浏览器支持情况:
Web SQL
IndexDB
Q&A
Contact Me

More Related Content

What's hot

和.Net开发比较的白皮书
和.Net开发比较的白皮书和.Net开发比较的白皮书
和.Net开发比较的白皮书Helen Xu
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发Scourgen Hong
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710
HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710
HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710Jenson Lee
 
105-2 iOS程式設計(七)
105-2 iOS程式設計(七)105-2 iOS程式設計(七)
105-2 iOS程式設計(七)Hao Lee
 
陈子舜-Html5 based web app
陈子舜-Html5 based web app陈子舜-Html5 based web app
陈子舜-Html5 based web appWebrebuild
 
軟體品質與持續整合
軟體品質與持續整合軟體品質與持續整合
軟體品質與持續整合家弘 周
 

What's hot (7)

和.Net开发比较的白皮书
和.Net开发比较的白皮书和.Net开发比较的白皮书
和.Net开发比较的白皮书
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710
HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710
HPX 94.5 產品經理讀書會「使用者故事對照」導讀 20170710
 
105-2 iOS程式設計(七)
105-2 iOS程式設計(七)105-2 iOS程式設計(七)
105-2 iOS程式設計(七)
 
陈子舜-Html5 based web app
陈子舜-Html5 based web app陈子舜-Html5 based web app
陈子舜-Html5 based web app
 
軟體品質與持續整合
軟體品質與持續整合軟體品質與持續整合
軟體品質與持續整合
 

Similar to Hybrid app简要介绍

第一次 Mobile App 就上手
第一次 Mobile App 就上手第一次 Mobile App 就上手
第一次 Mobile App 就上手Ying-Hsiang Liao
 
React-Native share
React-Native shareReact-Native share
React-Native shareEddie Hsu
 
行動與雲端科技在圖書館的應用
行動與雲端科技在圖書館的應用行動與雲端科技在圖書館的應用
行動與雲端科技在圖書館的應用皓仁 柯
 
App Developer Team Learning Map
App Developer Team Learning MapApp Developer Team Learning Map
App Developer Team Learning MapRyan Chung
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409zhengyiwuxian
 
110929 kn-手机软件测试
110929 kn-手机软件测试110929 kn-手机软件测试
110929 kn-手机软件测试Zoom Quiet
 
使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​Poy Chang
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台MOBINODE
 
[DCTPE2010] Drupal 遇上行動網路服務
[DCTPE2010] Drupal 遇上行動網路服務[DCTPE2010] Drupal 遇上行動網路服務
[DCTPE2010] Drupal 遇上行動網路服務Drupal Taiwan
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 longMeng-Ru (Raymond) Tsai
 
PhoneGap Guide
PhoneGap GuidePhoneGap Guide
PhoneGap Guidecolorhook
 
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰Sam Lee
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicKyle Shen
 
鼎鈞數位行銷App營運實務全攻略
鼎鈞數位行銷App營運實務全攻略鼎鈞數位行銷App營運實務全攻略
鼎鈞數位行銷App營運實務全攻略淳甫 鄭
 
2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例
2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例
2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例Justin Lee
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发fangdeng
 
React Native on Android
React Native on AndroidReact Native on Android
React Native on Android萬皇 楊
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发完颜 小卓
 
面孔@极客公园创新大会的产品宣讲
面孔@极客公园创新大会的产品宣讲面孔@极客公园创新大会的产品宣讲
面孔@极客公园创新大会的产品宣讲面孔 网
 

Similar to Hybrid app简要介绍 (20)

行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 
第一次 Mobile App 就上手
第一次 Mobile App 就上手第一次 Mobile App 就上手
第一次 Mobile App 就上手
 
React-Native share
React-Native shareReact-Native share
React-Native share
 
行動與雲端科技在圖書館的應用
行動與雲端科技在圖書館的應用行動與雲端科技在圖書館的應用
行動與雲端科技在圖書館的應用
 
App Developer Team Learning Map
App Developer Team Learning MapApp Developer Team Learning Map
App Developer Team Learning Map
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409
 
110929 kn-手机软件测试
110929 kn-手机软件测试110929 kn-手机软件测试
110929 kn-手机软件测试
 
使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​使用最新 Edge 瀏覽器來進行開發​
使用最新 Edge 瀏覽器來進行開發​
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台
 
[DCTPE2010] Drupal 遇上行動網路服務
[DCTPE2010] Drupal 遇上行動網路服務[DCTPE2010] Drupal 遇上行動網路服務
[DCTPE2010] Drupal 遇上行動網路服務
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
 
PhoneGap Guide
PhoneGap GuidePhoneGap Guide
PhoneGap Guide
 
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
 
鼎鈞數位行銷App營運實務全攻略
鼎鈞數位行銷App營運實務全攻略鼎鈞數位行銷App營運實務全攻略
鼎鈞數位行銷App營運實務全攻略
 
2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例
2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例
2011/08/20跨平台行動應用程式使用者介面開發—以titanium mobile為例
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
 
React Native on Android
React Native on AndroidReact Native on Android
React Native on Android
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
 
面孔@极客公园创新大会的产品宣讲
面孔@极客公园创新大会的产品宣讲面孔@极客公园创新大会的产品宣讲
面孔@极客公园创新大会的产品宣讲
 

Hybrid app简要介绍