hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database

最近在项目中进行hybrid app开发,项目中有大量的js代码运行在android设备上。使用到了很多HTML5的新特性,之前没有遇到过,不了解,这里记录下增加点前端的知识。混合式app开发中,经常需要使用缓存功能,比如你在页面表单控件上输入了数据,你希望下次退出app再次进来的时候还能看到这些数据;比如你的项目中有保存草稿的功能,只是先将数据临时存储在本地,以后再提及到服务器。这就需要我们将数据持久地存储在本地,这就需要用到HTML5中的本地化存储解决方案。本文主要介绍下sessionStorage、localStorage和websql
database这3种存储方案。

sessionStorage和localStorage这2种方案,api的使用方式一模一样,非常简单,具体的使用可以参考"HTML5 LocalStorage本地存储"这篇文章。sessionStorage和localStorage的区别如下:

html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。
因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。当浏览器窗口关闭时,sessionStorage中的数据就会被清除。
而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

可以看到localStorage比起古老的cookie技术有很多优势,但是同样localStorage也存在安全问题。关于本地存储的安全问题,可以参考"HTML5本地存储localstorage安全分析"这篇文章

值得注意的是:sessionStorage和localStorage都是按照跨域进行区分的。

http://localhost:8080/demo/1.html代码如下:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<script type="text/javascript">
		var localStorage = window.localStorage;
		localStorage.setItem("data_in_local",8080);

		var sessionStorage = window.sessionStorage;
		sessionStorage.setItem("data_in_session","session");
	</script>
</head>
<body>
	<div data-role="page" id="indexPage">
		page in localhost:8080
	</div>
</body>
</html>

http://localhost:9090/demo/9090.html代码如下:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<script type="text/javascript">
		var localStorage = window.localStorage;
		var port = localStorage.getItem("tomcat_port");
		alert(port);
	</script>
</head>
<body>
	<div data-role="page" id="indexPage">
		page in localhost:9090
	</div>
</body>
</html>

那么在localhost:9090这个域下面并不能访问localhost:8080域下本地存储的数据。下图可以看到localhost:9090这个域下没有本地缓存的数据。

localStorage只能存储简单格式数据就是key-value这种数据格式,而websql存储方案则提供了类似于关系数据库的表,能够以sql语句的形式操作数据库。websql使用起来也很简单:

<script type="text/javascript">
	var db = window.openDatabase("CacheDB", "1.0", "Cache Database", 10 * 1024*1024);

	db.transaction(function (tx) {
		var sql = 'CREATE TABLE IF NOT EXISTS t_app_cache (key text primary key, value text)';
		tx.executeSql(sql);
	});

	db.transaction(function (tx) {
		tx.executeSql('INSERT INTO t_app_cache (key, value) VALUES ("1", "a1")');
		tx.executeSql('INSERT INTO t_app_cache (key, value) VALUES ("2", "a2")');
	});
</script>

可以阅读"Web SQL Database规范"获取更多API的使用细节等。可以阅读"基于HTML5中的Web
SQL Database来构建应用程序
"这篇文章入门,了解websql是如何使用的。最后提一下:websql和localStorage一样,也是按照域进行区分的,一个域不能访问另一个域下的数据库。

时间: 2024-10-27 03:26:30

hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database的相关文章

面向Web Cloud的HTML5 App开发实战:Browser&amp;HTML5&amp;CSS3&amp;PhoneGap&amp;jQuery Mobile&amp; WebSocket&amp;Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

Hybrid App 开发实践总结

引言 随着 Web 技术和移动设备的快速发展,Hybrid 技术已经成为一种最主流最常见的方案.一套好的 Hybrid架构方案 能让 App 既能拥有极致的体验和性能,同时也能拥有 Web技术 灵活的开发模式.跨平台能力以及热更新机制,想想是不是都鸡冻不已..??.本系列文章是公司在这方面实践的一个总结! Native App 开发模式 Native App,原生APP,使用原生(即Android或iOS)开发的APP.应用的性能好是无容置疑的,但是企业大都处于尝试和摸索期,企业需要在短时间内快

【JavaScript】Hybrid App开发 四大主流移平台分析

转自http://dev.yesky.com/238/34657738.shtml Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java.Object-C.C#等语言,还是选择继续使用网页开发,容忍HTML5功能的局限性?就在开发者左右为难的情况下Hybrid App作为一个折中的解决方案诞生了.那么究竟什么才是Hybrid App呢? Hybrid App概念 Hybrid App:Hybri

Hybrid App开发git多分支代码版本管理实践

3.Setting Up and Configuring Backup and Recovery 这个单元讲述如何启动.与rman client如何互动,准备rman环境,实现备份和恢复策略 注意:尽管闪回数据库和安全还原点不是真的数据库备份,但是它们是数据保护策略一个重要部分.这些特性需要一些初始化设置,这些设置依赖于在备份策略中你怎么混合它们.Chapter 5-Data Protection with Restore Points andFlashback Database 提供了关于怎么

Hybrid App开发 四大主流移平台分析

Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java.Object-C.C#等语言,还是选择继续使用网页开发,容忍HTML5功能的局限性?就在开发者左右为难的情况下Hybrid App作为一个折中的解决方案诞生了.那么究竟什么才是Hybrid App呢? Hybrid App概念 Hybrid App:Hybrid App is a mobile application that is code

hybrid app开发工具

hybrid app开发工具 1.AppCan AppCan是国内Hybrid App混合模式开发的倡导者,AppCan应用引擎支持Hybrid App的开发和运行.并且着重解决了基于HTML5的移动应用"不流畅"和"体验差"的问题.使用AppCan应用引擎提供的Native交互能力,可以让HTML5开发的移动应用基本接近Native App的体验. AppCan作为中国Hybrid混合应用开发.移动平台.移动云平台的倡导者和领导者,以"免费+开源+开放&

Hybrid App 开发模式

开发移动App主要有三种模式:Native. Hybrid 和 Web App. 需要注意的一点是在选择开发模式的时候,要根据你的项目类型(图片类?视频类?新闻类?等),产品业务和人员技术储备等做权衡. Hybrid开发模式就是既有Native开发也有Web app的开发.那我们怎么去确定App中某个功能模块使用Native还是Web开发?它们之间如果需要接口通信又该如何去实现呢?又该如何更好的去维护Hybrid App产品呢? 1.Native or Web开发模块 当我们选择用Hybrid模

HTML5新特性新增功能

HTML5 现如今已经不是SGML的子集,主要是关于图像,位置,存储,多任务等功能的增加. 如:绘图canvas:用于媒介回放的video和audio元素:本地存储localStorage;语义化元素:表单控件等等新增的功能,都是HTML5新特性. 下面列举HTML5新特性详细说明: 一.新的文档类型  (New Doctype) 目前许多网页还在使用XHTML 1.0 并且要在第一行像这样声明文档类型: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1

HTML5新特性,老生常谈——前端面试常见问题

找工作面试的时候有公司技术人员会问html5新特性,那这里就再复习一遍 1.新的文档类型 <!DOCTYPE html> 2.脚本和链接无需type <link href="css/bootstrap.css" rel="stylesheet"> <script src="js/Angular.js"></script> 3.语义化的Header 和Footer 这里通俗说下什么叫做语义化,就是:明