使用HTML5开发手机离线应用

使用HTML5开发手机离线应用

本来这篇文章想叫《挺起你的HTML5》或者《让HTML5飞》或者神马其他的,但是为了更好的体现主题,我就用这个直白点的题目吧  [酷] ~

随着各种智能手机(iPhone、Android)大行其道,App模式的应用开发变得热火朝天,反观Web领域则黯然失色。然而即将(或者说已经)到来的HTML5,又为Web注入了新鲜的鸡血,让我等Web码农再次激动不已——我们可以用HTML、CSS、JavaScript开发手机应用了!可以实现绝大部分Native App的功能,跨平台,自动更新,即需即取……亲,只需要有浏览器哟!而且没有恶心的IE6 [喜欢] ~

做任何一个应用都离不开两种东西:文件和数据。下面我就以一个简单的小应用来介绍一下如何开发一个Web应用,让它能够在Offline的情况下取得文件和数据。

 

Cache Manifest

首先,请自行实现一个包含图片、JavaScript、CSS的普通HTML页面。

显而易见的,这个页面所包含的文件有HTML、JavaScript、CSS、图片。为了让这个页面能够离线访问,我们必须告诉浏览器,它要缓存那些文件,让我们下次访问的时候直接在本地取即可。

HTML5给我们提供了一种Cache Manifest的机制,让我们实现这样的功能。Cache Manifest是通过一个 .manifest为后缀的文件来配置需要缓存的或者一定要保持联网的文件,格式如下:

CACHE MANIFEST
# VERSION 1.0

# 直接缓存的文件
CACHE:
index.html
img.jpg
script.js
stylesheet.css

# 需要在时间在线的文件
NETWORK:
/wp-admin/

# 替代方案
FALLBACK:
/ajax/ ajax.html

同时,我们要给页面的html标签添加一个manifest属性:

<html manifest="到Manifest文件的路径.manifest">

还有一点要注意的,就是Manifest文件的MIME类型必须正确,对于Apache有两种设置方法(IIS没研究过),一种是在Apache的配置文件mime.types中加上:

text/cache-manifest manifest

一种是在网站的.htaccess文件中加上:

AddType text/cache-manifest manifest

最后,最好重启一下你的服务器~~~

使用了Cache Manifest机制后,浏览器就不会自动更新你所缓存的内容了,如果想更新客户端缓存的内容,修改.manifest文件的任意内容即可。修改版本号是一种推荐的做法,即上面的“#VERSION 1.0”(这是一个注释),甚至可以说是最佳实践。

如果想了解更多,请看这里

 

Local Storage

localStorage是Web Storage存储规范中的一部分(虽然大家很喜欢把它归到HTML5的东西里面去),目前多数浏览器都已经支持了(ie8+也支持喔~)。

这是一个易学易用的东西,用于保存key-value形式的键值对。说到键值对肯定很容易想到Cookie,不过Cookie在每次请求中都会被发送到服务器端,如果使用大数据集合的话会有性能问题,在传输中也会有安全问题。

下面就讲讲localStorage的使用吧。

首先,在召唤localstorage之前当然要检测一下是否可用:

//检测localStorage是否可用
//本段代码来自<Dive Into HTML5>
function supports_html5_storage() {
  try {
    //不懂为啥要写这么复杂
    return 'localStorage' in window && window['localStorage'] !== null;
  } catch (e) {
    return false;
  }
}

使用localstorage的方式很简单, 直接像访问对象一样访问它即可:

//设置数据 setItem
localStorage.setItem("myKey", "myValue");

//获取数据 getItem
var data= localStorage.getItem("myKey");

//还能用数组这样的格式来访问
localStorage["myKey2"] = "myValue2";

var data2 = localStorage["myKey2"];

//移除指定数据
localStorage.removeItem("myKey2");

//清空数据
localStorage.clear();

 

操作结果可以在“开发人员工具”中看到

一些LocalStorage的注意事项:

  • localStorage要通过域名访问的方式才能起作用,直接打开本地文件是不行滴哟~
  • 俺们保存的都是string,如果是int或者float的话,get回来之后记得转换一下;
  • 本地存储数据在同样域名下的网页间是共享的,即便是在多个浏览器标签页中;
  • 使用http://连接的页面是看不到使用https://连接会话中的数据库的。

 

有了Cache Manifest和LocalStorage这两个利器,是不是觉得HTML5开发手机离线应用开始有这么点眉目了?

我说:还有个利器叫PhoneGap,不过没试过~

发布者

Rolf

伪文艺IT攻城师,热爱前端,热爱互联。

《使用HTML5开发手机离线应用》有4个想法

  1. “•localStorage要通过域名访问的方式才能起作用,直接打开本地文件是不行滴哟~”
    我曾写过一个简单的记事本应用,放在手机里使用浏览器访问,上次保存的数据,关闭浏览器后重新打开,数据还在的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

[喜欢] [嘻嘻] [奋斗] [问号] [鼓掌] [泪] [酷] [强] [耶] [握手] [心] [给力] [神马] [围观] [奥特曼] more »