之前的文章()里面描述了HTML5 离线数据存储的Web SQL,一个基于SQLite 的离线数据库,不过W3C 的 WebDatabase 规范中说这份规范不再维护了,取而代之的是IndexDB,一个NoSQL类型的数据库。
Html5Rocks把他们的优缺点做了比对,IndexDB综合看来有如下优点:
允许快速索引和搜索的对象,所以在HTML5 的 web应用程序中, 你可以有效管理你的数据和高效率的读/写操作。
W3C主推的离线数据库类型,逐渐替代Web SQL类型数据库,更新效率高并不断完善。
工作在异步模式下执行每步操作。让你使用高效率的的JavaScript事件驱动模块
现在我们来尝试使用这个IndexDB:
1、初始化声明
2 var dbVersion = 2.0; //数据库版本
3 var tablename = "todo"; //表名
2、初始并实例化IndexDB数据上下文
2 var H5AppDB = {};
3
4 //实例化IndexDB数据上下文,这边根据浏览器类型来做选择
5 var indexedDB = window.indexedDB || window.webkitIndexedDB ||window.mozIndexedDB;
6
7 if ('webkitIndexedDB' in window) {
8 window.IDBTransaction = window.webkitIDBTransaction;
9 window.IDBKeyRange = window.webkitIDBKeyRange;
10 }
11
12 H5AppDB.indexedDB = {};
13 H5AppDB.indexedDB.db = null;
14
15 //错误信息,打印日志
16 H5AppDB.indexedDB.onerror = function (e) {
17 log.debug(e);
18 };
3、打开数据库,初始化数据库,并创建存储对象
2
3 //初始IndexDB
4 var request = indexedDB.open(dbName, dbVersion);
5
6 request.onsuccess = function (e) {
7 // Old api: var v = "2-beta";
8 log.debug("success to open DB: " + dbName);
9 H5AppDB.indexedDB.db = e.target.result;
10 var db = H5AppDB.indexedDB.db;
11 if (db.setVersion) {
12 console.log("in old setVersion: " + db.setVersion);
13 if (db.version != dbVersion) {
14 var req = db.setVersion(dbVersion);
15 req.onsuccess = function () {
16 if (db.objectStoreNames.contains(tablename)) {
17 db.deleteObjectStore(tablename);
18 }
19 var store = db.createObjectStore(tablename, { keyPath: "timeStamp" });//keyPath:主键,唯一性
20
21 var trans = req.result;
22 trans.oncomplete = function (e) {
23 console.log("== trans oncomplete ==");
24 H5AppDB.indexedDB.getAllTodoItems();
25 }
26 };
27 }
28 else {
29 H5AppDB.indexedDB.getAllTodoItems();
30 }
31 }
32 else {
33 H5AppDB.indexedDB.getAllTodoItems();
34 }
35 }
36
37 //如果版本不一致,执行版本升级的操作
38 request.onupgradeneeded = function (e) {
39 log.debug("going to upgrade our DB!");
您好,欢迎来到这个包含35课为Window Phone 8平台创建应用程序的系列教程。我叫Bob Tabor,在过去的11年中我一直在微软的网站和我自己的网站上(www.LearnVisualStudio.NET)创建针对微软开发工具和技术的视频讲座教程。
根据本系列的标题,本培训将针对“绝对初学者”,虽然这肯定正确,因为我们将从最基本的创建手机应用程序开始,但是您将看到我们将很快转到一些Windows Phone 8操作系统的新的和高级的特性。
本系列的推出是因为我之前的系列(Windows Phone 7 Development for Absolute Beginners,初学者Windows Phone 7开发)获得的积极的响应。我们完全重新设计了本系列教程,因此如果您看过那个教程,您将会观察到巨大的变化。
在观看本系列之前,我们假设您已经熟悉了C#。如果不是这样,请暂时搁置几天本系列并去观看Channel9网站上的C# Fundamentals for Absolute Beginners。我在设计该系列时已将受众范围考虑为C#的初学者。在开始本系列之前的最低要求是您需要具备面向对象编程中有关类、属性、方法、可见性修饰符、集合、泛型集合等的基本知识。
我们将本系列课程设计为教程形式,也就是说本系列将通过演练创建两个全功能的应用步骤来指导您如何创建应用程序。希望这种方法能够帮助您理解在一个实际的应用程序场景中众多概念是如何进行相互的协同。为了理清基本的思路,我也将创建一些小的应用程序以说明一些概念。
我还将讨论操作系统和硬件要求,为了开始工作需要安装的软件,获取开发者许可,设计应用程序,提交至商店以及更多的事项。因此希望本教程能够成为Windows Phone 8平台开发者的一个很好的起点。
在向您展示我们将要在本系列中创建的应用程序之前,我们需要完成一些准备工作。此刻显示的屏幕是我的桌面。代码被加载到了visual studio中。视频以720p的高清格式录制,并且非常清晰。因此,如果您看不清屏幕上的文字,很可能是您的互联网连接不能处理高比特率的视频流。您最好的选择是使用在本视频下面的下载链接。您可以根据观看视频的目标设备下载不同格式和分辨率的文件。
接着您需要下载包含在zip文件中的素材及代码。我将确保该链接出现在本页面以及每一个显示本讲座视频的页面上。链接中有您需要包含在项目中的素材以及完成版本的应用程序,这样您就可以对我写的代码和您编写的代码进行比较。
最后,在Channel9网站上算是首次,我们提供了视频的文字和屏幕截图版本(它们出现在每个视频的下方)。虽然它们不是我在视频中所说的每一句话的记录,但是它们确实涵盖了完全相同的材料并提供了我输入的代码,因此您可以复制并粘贴它们到您的应用程序中。我提供该版本的初衷是为了方便有听力障碍和不将英语作为主要语言的人士。此外,它应该有助于日后的参考,您不必回头再次观看视频以回顾以前提及的某个想法或某项技术。
好的,那么我们将在本系列创建什么应用呢?
- 名称为SoundBoard的演示应用程序
- 名称为AroundMe的演示应用程序
在接下来的11个小时您将会一直听到我的声音,但这项工作实际上是多方协作的成果。首先是Channel9的Clint Rutkas,他是上述两个我们将要创建的应用程序背后的策划者。我想我们之间来来回回有过100封左右讨论各类代码细微差别的电子邮件,他很耐心并且非常乐于助人,不愧为本系列贡献最大的人。Windows Phone团队对这一努力提供了支持并使本系列能与读者见面。我认为在很大程度上是因为本系列的之前版本获得了各位Channel9忠实观众的热烈响应。因此,谢谢你们!
最后诺基亚和他们的开发人员顾问帮助我审核了素材。诺基亚加强了对Windows Phone 8平台及平台开发者的支持,并且我一直对他们做事的热情印象深刻。抽空看一看他们的网站:http://www.dvlup.com
他们提供一对一的支持,频繁的交互,竞赛奖品以及更多内容以使像你我一样的开发者更多地参与和思考如何协作以构建这个平台。您需要在www.dvlup.com网站上注册以便参与其中。
由此想到我钟爱的诺基亚Lumia 920。他毫无疑问是我拥有过的最酷的设备,请相信我,我也拥有一些在如今市场上可以得到的构建在其他平台之上的流行设备。如果您对Windows Phone 8开发感兴趣,虽然这并非是必需品,但是我想您会非常想拥有一部这样的手机。它不仅是一个优秀开发者构建应用程序的测试平台,而且是一个非常棒的设备。让我告诉您我最喜欢的一些特性:
- 非常棒的相机—我的妻子不断地让我发送用我手机拍摄的照片,因为她的,嗯,她的功能较弱的手机,几乎不能与之比较,尤其是在弱光的情况下。
- NFC—近场通信(Near Field Communications),与具备NFC功能的其他手机交换数据,不论该手机属于什么平台。
- 固定—您可以将任何东西固定到开始页面,音乐、网站、应用程序....并且我可以找到那些用新的信息更新磁贴的应用程序,所以我不必打开应用就可以了解一些情况,例如查看天气或者我的日历,或查看假期的倒计时。
- 无线充电—是的,您可以为几乎所有手机购买一个充电壳以实现这个功能,但是它内置于您的手机!
- 语音命令—非常适合创建OneNote的代办事项或者当我在路上时发送消息。
另一个很酷的事情是该平台正在成长,每次在演示我手机的功能时,我都能改变他们的想法。我已经使我的家人和朋友确信当他们更新合约时,这就是他们的下一部手机。并且我刚阅读了一篇有关企业市场增长对应用程序开发者会带来什么的文章,它十分令人振奋。
http://www.windowsphone.com/en-US/business/for-business
那么您可能要问最好的功能是什么?我的看法是什么?我想那就是可以利用现有的C#、.NET和Windows运行时经验构建可以随时携带的应用程序。
是的,如果我想为另一个平台创建应用程序,我可以花几周甚至几个月时间学习一门新的语言,新的应用程序接口。或者我可以构建针对所有平台的应用程序,但是最终会错过只有Windows Phone 8操作系统才具备的一些关键新特性。这种想法很自然因此十分有趣。
所以如果您刚开始Windows Phone 8开发,我相信您很快就能分享到我此刻的兴奋心情。这个系列是快速提高的最好方法之一。
如果您在什么地方卡住了或者不理解某些内容,您可以在页面最底部的评论区域提出问题。Clint或我或者其他准备这份材料的人将帮助您解决问题并继续向前。
所以让我们在下一课中开始建立环境,然后迅速编写代码。下节课见。
整个系列的源代码:http://aka.ms/absbeginnerdevwp8
整个系列的PDF版本:http://aka.ms/absbeginnerdevwp8pdf
本文链接:http://www.cnblogs.com/zigzagPath/p/3220946.html,转载请注明。
没有评论:
发表评论