(特价书)Windows 8应用开发实战:使用JavaScript
基本信息
- 原书名:Building Windows 8 Apps with JavaScript
- 原出版社: Addison-Wesley Professional
- 作者: (美)Chris Sells Brandon Satrom Don Box
- 译者: 李景媛 吴晓嘉
- 丛书名: 华章程序员书库
- 出版社:机械工业出版社
- ISBN:9787111447450
- 上架时间:2017-10-23
- 出版日期:2014 年1月
- 开本:16开
- 页码:406
- 版次:1-1
- 所属分类:计算机 > 操作系统 > Windows

编辑推荐
使用JavaScript构建Windows 8应用的最权威著作之一,微软官方资深专家撰写,数位专家联袂推荐,Amazon全五星好评
系统讲解利用JavaScript和HTML 5构建Windows应用商店应用所需掌握的概念、技术、工具、方法和技巧,包含大量实战案例和最佳实践
内容简介
计算机书籍
《Windows 8应用开发实战:使用JavaScript》是使用JavaScript构建Windows 8应用的最权威著作之一,由来自微软官方的资深专家撰写,10余位专家联袂推荐,Amazon全五星好评。它系统讲解了利用JavaScript和HTML 5构建Windows应用商店应用所需掌握的概念、技术、工具、方法和技巧,包含大量实战案例和最佳实践。
全书共13章。第1章初步介绍Windows 8平台各要素。第2章以ListView控件为例介绍绑定,实现即时UI更新、数据处理,并涵盖常用控件和自定义控件。第3章介绍如何使用CSS和WinJS为Windows商店应用创建丰富并具备弹性的布局。第4章主要介绍如何创建高保真、美观的视觉版式。第5章教授创建和使用各种类型媒体的多种方法、复杂细节以及平台特有特性。第6章介绍如何利用HTML5 Canvas、SVG和WinJS相关技术创建图形、UI元素和过渡效果。第7章介绍如何设置和调试应用程序状态。第8章介绍网络功能、计费考量,以及WinJS.xhr、RSS和Atom等网络连接服务。第9章解析如何对共享协定、搜索协定和联系人选取器协定进行编程。第10章介绍如何利用Shell集成开发动态磁贴、辅助磁贴、磁贴提醒、锁屏通知以及后台任务功能。第11章介绍用户如何与设备交互以及设备如何与世界交互等。第12章讲解如何利用WinRT技术将C++扩展集成到应用中,以扩展平台的功能。第13章从开发者的角度讨论应用的提交准备、提交、追踪以及管理等主题。
作译者
关于Chris和他的各种项目更多的信息,请访问www.sellsbrothers.com。
Brandon Satrom,资深Web开发工程师,Kendo UI(Telerik公司的HTML5和移动产品套件)的程序经理。喜欢谈论HTML、JavaScript、CSS和开源技术,以及任何可以把他从正在从事的工作中吸引过来的新鲜事物、精彩的工具或技术。他对开源项目有极大的贡献,曾经是一名微软布道师,文章多在MSDN杂志、《Architecture Journal》和《.net》杂志刊登。他的博客是:www.userinexperience.com。
Don Box,微软杰出的工程师,在业界享有“鬼才”美誉。曾致力于.NET和SQL等相关技术的研究,现在他领导着Xbox平台的开发团队。在加入微软之前,Don四处游学,倡导开发者接受COM技术,写作了著名的《Essential COM》。
目录
本书赞誉
译者序
Chris Anderson序
Rey Bango序
前言
致谢
第1章 初识Windows 8 1
1.1 第一个Windows应用商店应用程序 1
1.2 Visual Studio 2012入门 5
1.3 Blend的控件、绑定与样式 11
1.4 导航 17
1.5 WinJS和WinRT中的网络访问 20
1.6 拆分布局应用程序模板 25
1.7 其余内容 29
1.8 学习进度 29
第2章 绑定与控件 30
2.1 绑定 30
2.2 初始化器 37
2.3 绑定列表 39
译者序
而这本书的可贵之处正是在于:它把在这样一个全新平台上开发所需的知识全部涵盖其中,既有广度,也不乏深度,大量的实例更是让读者极易上手。不论对于传统桌面应用程序的开发人员、Web开发人员还是设计人员,哪怕你只是想探究从Windows应用商店中获取财富的可能,都可以从书中找到价值。
更何况,这本书的三位作者均是来自于微软,其中有Chris Sells这样著作等身的名家,也有Don Box这样的COM领域祖师级人物,所以此书对Windows 8应用程序开发领域来说绝对是开山之作。承蒙机械工业出版社华章公司信任,将此书交予我夫妻二人翻译,我们既觉荣幸之至,又深感责任重大,在翻译过程中,唯求实现两点:一是准,我们不愿因为自己对技术的理解有误而曲解原意,更不希望因疏忽而产生谬误,所以在翻译中小心谨慎,多番对比验证;二是顺,这是一本传播技术的书籍,我们希望读者阅读时能够不因文字的晦涩和曲折而影响理解,所以力求让读者在阅读时能忘掉这是一本译作,虽然文字未必高雅,但求通畅平顺。但是,这终究是愿望,限于本书内容的丰富深入,限于尽快将书稿交付读者的压力,更限于水平之不足,译稿不免存有遗憾,既请读者多多包涵,更愿能多提意见批评,如若如此,即是最大的鼓励与鞭策,期待联系(@wilmer_wu)。
最后,要感谢华章公司的编辑们专业、认真的工作态度,为我们挑出译稿中的诸多问题,不至于贻笑大方。当然,还要感谢我们的家人,译书的过程占据了大量的生活时间,是他们对小孩的悉心照顾,对生活的精心打理,才让我们能够腾出时间译成此书。最后,也愿女儿长大之后能体谅,在她幼时有那么一段时间,父母经常以工作忙为由而拒绝了陪她玩耍的要求,此书,即是献给她的礼物。
译者:思桐的爸爸和妈妈
二〇一三年秋于昆明
前言
人们常常把艺术和建筑作为人造之美的典范,我们知道,这表达了人们对独创精神从社会和经济角度进行的赞美(或者说,人类无限意志的最佳展现)。
但是,在人造之美中,却有一种更加简单,又更加普遍的例证:那就是舒适之美和熟悉之美。这如同属于自己的感觉,无论身在何处,你都可以找到自我。这样的美是极富意义的,因为,它是对我们都拥有的由来已久的社会需要的诠释。因为它如此微妙,以致我们经常忽视它;因为我们只有失去它,才会强烈地觉察到这样一种需要。
想象自己身处国外机场,或是第一次位于不熟悉的中转车站之中。现在,你刚刚走下火车或飞机,在有限的时间要让自己找到目的地,你要走向何处?如何找到信息?
如果你对这样的地方或这样一种体验有过直接经验,唤醒这一记忆甚至会让你的身体也有所反应:瞳孔放大、心跳加速、手心出汗和呼吸急促。充满了压力、充满了焦虑!
对情况的不熟悉会激发人们对熟悉感的需求。那么,你该怎么办?如果与朋友或家人一同出游,你的压力也许就会减少很多,但是这样的任务还是会摆在你眼前。你该如何是好?
你一定会努力寻找一种熟悉的感觉,即固定的线索:符号、数字、字母和文本,任何可以帮你找到方向的东西。写着文字“B出口”的符号或指定方向的箭头都会立即让你松一口气。一个终端屏幕同样可以起到相同的作用,又或者,你所需要的只是指向最近的洗手间的线条画。不论是什么,你所寻找的,并且可以吸引你的,是所有可以帮助你完成手头最重要任务的一些让你感到熟悉的东西。只要找到这些熟悉的东西,你就会感到心安、感到舒服。
这就是其中的美!如若数字、字母和符号可以把我们拉回更深层的现实中,为我们指明归家的路,那么这就是一种非凡的艺术,无与伦比!
而这,就是metro——它创建出一种体验,哪怕我们面对的是不熟悉、人造的东西,也可以让我们和现实紧密相连。这种体验又不只是简单地在不同的媒介间转移、复制我们的舒适感。对我来说,芝加哥的地铁标记不是非得和曼哈顿或慕尼黑的一模一样,只要这些东西足以激起我的熟悉感,我就会感到舒服。而北京的男洗手间标记也不需要非得是一幅六尺高的栩栩如生的白人照片,我才敢进去。套用Scott McCloud的话,图腾之所以如此强大,不仅仅因为它是抽象的,还因为它的抽象本质让它可以被识别,而我们又能够把这些识别的东西很好地联系在一起。我只需要一幅线条画,就可以提取出我要的信息,它会让我有熟悉感和舒适感。
metro既不是Windows,也不是Windows Phone,更非Xbox;metro不是动态磁贴、黑色背景、Segoe UI,也非直角的方框;metro不是HTML5、CSS,亦非JavaScript。metro,甚至不是微软。metro可以存在于浏览器中或桌面之上;甚至可以存在于iOS或Android之中,因为,metro和平台根本就没有半点儿关系。
metro设计语言逐渐用于指导开发者进行设计,引导他们找出并删除CSS中的每一条border-radius规则,或者指引开发者遵循设计的备忘录,甚至是让开发者用一系列的规则去体现出他们的设计。但是,我们也千万不要忘记metro本身的理念,正如过去每一种伟大设计理念一样,metro关注的是如何构建出令人觉得美妙的事物,关注如何在设计中传递出把我们和现实联系起来、有助于找到自己方向的信息。同时,它也关注如何创造出能够给我们带来美感的事物,而这样的美感是来源于设计的实际作用和带给我们的舒适感觉。
你无法“编码”你的metro之路,也许,即便偶而为之,创建出来的东西也很可能因为太过矫揉造作而并不真实。
你甚至无法“设计”你的metro之路;从来没有任何指南、备忘录或书籍会告诉你:只要你添加了彩色的标题、奇特的翻页效果,或者是用数字表示的桌面日历,就是在传递一种“metro体验”。
当然,所有的软件都是并且一直是我们努力的结果,而metro也毫不例外。虽然从来就没有什么固定的设计清单或设计过程可以明确地告诉我们在什么情况下做什么事情才是最有益的,但metro的真正价值正是在于其发现的过程。所以,只要你发掘出人们使用应用程序的需要,考虑如何才能最好地满足这一需要,就完全是自己的事情。有了这一发现,你会认识到metro其实是把舒适感和熟悉感放到与实用性同等重要的位置。
所以,学习metro,就是阅读设计指南然后使用一些设计清单,不断地观看教学视频,不论构建什么,都学着更像一个设计师那样去思考。但是在此之前,要先考虑怎样体现出设计的舒适感和熟悉感,并且要考虑自己的应用程序或网站与其他人的作品相比,如何才能更好地传达出人的最基本需求。
这就是metro的真正含义。
一些专业术语
在开发Windows 8的过程中,一些特性和技术术语的命名已经发生了变化,在此向读者提供了一份关于这些术语的最新指南(截至写作这本书时,在RTM发布之后、通用版发布之前)。
Metro和Metro风格:这是一种设计语言,描述了使用Windows 8、Window Phone 7、Windows Phone 8和最新的Xbox操作面板的UI和体验,称之为metro。这个术语也用来描述构建在这种设计语言之上的新型Windows 8应用程序,即“metro风格应用程序”(metro style apps,没有连字符)。由于德国一家大型的连锁超市的原因,这个名字现在已经不再使用了。
Windows应用商店应用程序:微软用来代替“metro风格应用程序”的术语是“Windows应用商店应用程序”(Windows Store apps)。这个术语是指以新的风格设计的Windows 8应用程序——也就是说,这不是我们从Windows 95起就一直使用的那些桌面应用程序。其实这也不是一个非常精准的术语,因为以Windows应用商店风格构建的企业应用,根本无须通过Windows应用商店进行部署。
序言
Windows 8代表了微软开发者生态系统中的一个重大变化。Windows 8以消费者为导向,做出了许许多多改变,在吸引了不少公众目光(新的用户体验、触摸操作方式、平板电脑,等等)的同时,其内核也有了结构性的变化。在Windows 8中,开发者有了一个可选择的编程环境来构建他们的杰作,比如DirectX、XAML和HTML等。除此以外,现在Windows 8还有了一个内置的平台,开发者可以藉此将他们的产品变成真金白银。
过去的两年中,我作为开发负责人和架构师,从事Windows Library for JavaScript(即WinJS)方面的工作。在我们一开始考虑让HTML和JavaScript成为构建原生Windows应用程序的最佳平台时,我们所面临的一个最大的挑战就是:如何才能在基于标准的HTML/JS的世界和Windows原生平台的特性之间做出平衡。Windows Runtime(WinRT)出现之后,虽然我们有了技术上的手段,可以简单地将新特性集成到Web平台,但是,我们还是要在坚持标准和创新之间不断权衡。
我们在WinJS团队中奉行的原则是——“按标准编码”。在实现WinJS的过程中,我们对WinRT的使用是非常保守的,因为我们觉得,最好是让开发者自己去决定应用程序对平台的依赖程度。
在JavaScript世界里,充满着各种各样的工具包。人们为了完成工作,经常会把JQuery、require、Modernizer和Backbone混合在一起使用。在构建WinJS的时候,我们也尝试创建了一套工具包,可以和其他现成的工具包混搭在一起使用。所以,你可以轻松使用Knockout去处理WinJS ListView控件的绑定;也可以简单地在WinJS声明式的控件处理中插入jQuery UI控件。我们在这些地方构建了大工具包(ListView是最明显的例子),而在其他地方,又有一些非常小的工具包(例如,包含在base.js中的CommonJS Promise/A的实现)可供使用。
我们在构建WinJS的时候,不断地对设计模式进行调整,试图把JavaScript社区现有的约定俗成的东西无缝地融入其中。我记得我们早前尝试使用模式之一是把许多构造函数的原型定义给固定下来,但很快就被告知,这可不是JavaScript开发者会干的事。于是我们又转向可变原型,并且也认识到在运行的时候能够给原型定义打上“猴子补丁”确实具有很大的作用。
在微软,我有幸与Chris Sells一起工作了几年。但从未与Brandon Satrom共事过。不过从这本书的质量来看,我觉得他应该有着开发者所共有的那种激情,对编程肯定也十分热爱,并且,他和Chris Sells一样,掌握了写作的艺术。
可以说,你现在拿在手中的这本书可以开启一段非常精彩的旅程,它将带你领略如何使用HTML和JavaScript去构建、分发Windows 8应用程序,并从中获益。虽然过去的两年,我一直在从事与Windows 8相关的工作,但坦诚地说,这本书还是让我学到这个平台的不少新东西,我已经迫不及待,马上就想用这些技术去开发应用程序了。
愿你喜欢这本书,谨祝编程愉快!
——Chris Anderson,微软公司杰出工程师,WinJS开发者
2012年8月
Rey Bango序
这是开发者最美好的时代。回忆这20多年的岁月,在当前的信息技术领域中,互联网为程序员们开启了更多的机会之门。对于新技术的学习,我向来有些畏缩(有个人的情感因素在其中),特别是学习一门编程语言,面对着简练的手册、闪烁的单色屏幕、如同电视般大小的CRT显示器,我觉得这实在是件相当艰巨的任务。但是,互联网的出现改变了这一切,它让我们可以在任何愿意的地方学习。利用各种各样的联网设备,顷刻间就可以得到丰富的信息。
虽然开发者从互联网中得到了颇多的好处,但真正受益的其实是那些每天都要使用计算机的普通用户。他们不用再依赖什么黄页、白页去寻找本地的水管维修工;或者使用专门的GPS来获知方位;又或者用专门的DVD播放机来观看一部好电影。有了互联网,今天的我们比以往任何时候都能够更好地联系在一起,这正是通过我们——开发者的创造力,使得一切皆有可能。
消费者变得越来越有见识,他们的需要和要求亦相应提高。他们想让信息变得更快,想让信息简洁地在各种设备间流动,他们不愿每换一部手机或者一台电脑,都要从头再学一遍。
而这就是Windows 8的美妙之处。Windows 8希望能够跨越各种体验,给用户带来一致性和凝聚力,让消费者享受这一过程,使他们可以轻松、流畅地找到自己想要的信息。不过,这其中最大的好处是开发者能够有机会通过Windows 8的应用生态系统,构建出色的用户体验。
而Windows 8的用户也已经习惯了这样一种体验上的紧密联系,对于他们所依赖的具有独特体验的信息与服务,应用程序可谓扮演了重要的角色。有了数以亿计的Windows用户作为应用程序安装的基础,Windows 8的应用程序开发者其实也处于一个超乎想象的位置。他们不但可以增强消费者的使用体验,同样,也可以利用这一技术上的新平台以及这种收益体系,获得成功和收益。由于微软利用了JavaScript、HTML和CSS来构建这类应用程序,对那些一心想要抓住这个机遇的聪明的Web开发者来说,这也将会是一片全新的天地。
我有幸能够在微软和Chris Sells、Brandon Satrom共事过。当他们征询我是否可以为他们的书写一篇序言时,我实在是受宠若惊。说真的,我绝对没有任何含糊就答应了。我知道,这两个人将会为那些对Windows 8的平台影响力还有所担心的开发者带来直接价值。花一段时间看完原稿后,我觉得这本书对于任何醉心于构建优秀的Windows 8应用程序的人来说,都是必须阅读的参考书籍,这也是一本同类图书中的标杆之作。是的,这么说确实相当大胆,但考虑到两位作者是Windows 8应用程序开发领域的资深人士,特别是他们曾经在微软工作过,我对所作的评论就更为自信了。
——Rey Bango
微软公司开发者管理经理
媒体评论
——Jonathan Antoine,Infinite Square公司和微软公司的MVP
“本书对Windows 8应用程序开发做了很好的介绍。尽管我在XAML领域工作多年,这本书会让我好好思考一下JavaScript/HTML的未来。”
——Shawn Wildermuth,微软MVP(数据方面)、
作者、培训师和演讲者,www.wilderminds.com
“可以说,你现在拿在手中的这本书可以开启一段非常精彩的旅程,带你领略如何使用HTML和JavaScript去构建、分发Windows 8应用程序,并从中获益。虽然过去两年我一直在从事与Windows 8相关的工作,但坦诚地说,这本书还是让我学到这个平台的不少新东西,我已经迫不及待,想马上就用这些技术去开发应用程序了。”
——Chris Anderson,微软公司杰出的工程师,WinJS的开发者
“Chris和Brandon已经深入到Windows 8编程的核心,他们创作了一本简明、清楚又易于理解的教程,这本书应该出现在每个Windows 8程序员的书架上。如果你正使用HTML和JavaScript进行Windows 8编程,这本书就是你所需要的。”
——Jesse Liberty,Windows 8技术传道者,Telerik公司
“我觉得对任何醉心于构建伟大的Windows 8应用程序的人来说,本书都是必须阅读的一本参考书籍,这也是同类图书中的标杆之作。是的,这么说确实相当大胆,但考虑到两位作者是Windows 8应用程序开发领域的资深人士,特别是他们曾经在微软工作过,我对所作的评论就更为自信了。”
——Rey Bango,微软公司开发者管理经理
“这本书无疑是我读过的有关使用JavaScript构建Windows 8应用程序的书中写得最好的一本。它是一种无价的资源,帮助我将构建大型JavaScript应用程序和胖客户端应用程序的经验轻松地转换到Windows 8环境的应用开发中。Chris和Brandon做了一件了不起的事情,他们解释了何为HTML、JavaScript和CSS,他们还把如何在原生的Windows应用程序环境里运行Web技术的所有复杂细节和精妙之处都总结出来,完全发挥了WinRT及JavaScript扩展的强大威力。”
——Derick Bailey,独立顾问、在线视频授课者、演讲者和作者,
http://mutedsolutions.com和http://watchmecode.net
“Chris和Brandon做了一件真的非常出色的工作,他们解释了如何创建伟大的Windows 8应用程序。阅读此书,我学习到的是关于整个平台的知识。”
——Josh Williams,微软公司WinJS的首席开发负责人
书摘
初识Windows 8
Windows 8为我们带来不少应用程序开发的新方法和新思路。开发者完全可以自由地选择是否继续使用WPF、Silverlight、Windows Forms和/或DirectX来构建Windows桌面应用程序;同样,开发者也可以继续使用ASP.NET、HTML和JavaScript去构建网站;另外,如果你还想使用Silverlight或XNA,构建以触摸交互为核心的Windows Phone应用程序,也完全没有问题。
但是在这本书中,我们要重点关注的是怎样去构建一种新型的应用程序,这种应用程序可以说混合了上面提到的三种现有的应用程序——它就是Windows应用商店应用程序(Windows Store app)。与网站不同,Windows应用商店应用程序其实和安装在计算机上的桌面应用程序是一样的。但从另一个角度看,Windows应用商店应用程序却又像网站一样,可以使用HTML5、JavaScript和CSS来构建。只是,Windows应用商店应用程序不必像网站一样在服务器端生成UI,开发者利用其所使用的JavaScript框架和底层的Windows Runtime(Windows运行时,WinRT),可以构建出拥有客户端状态、离线存储、控件、模板、绑定以及各种其他服务等新特性的应用程序。此外,由于Windows 8既是一个桌面操作系统,又是一个平板操作系统(tablet OS),所以按理来说,Windows应用商店应用程序既可以通过触摸来操作(就像Windows Phone应用程序一样),也可以通过键盘和鼠标来使用(如同传统的桌面应用程序那样)。当然,Windows应用商店应用程序的最大特性是,开发者可以把它们提交到新的Windows应用商店中,这是新的Windows 8“开始”屏幕中最为出彩的地方。
简而言之,Windows应用商店应用程序能够运行在不同的设备上,发挥出每一种设备的最大优势,并且把桌面、网络和移动应用程序中最为出色的部分全部整合在单一的用户体验和开发者体验中,而所有的一切,用户均可以通过Windows应用商店而得到。在这一章,我们要同时深入开发者体验和用户体验之中,当然,我们关注的是前者,因为这是一本讲述编程的书。
对于编程的书籍,我喜欢从编程开始,我们马上动手吧!
1.1第一个Windows应用商店应用程序
要使用HTML、JavaScript和CSS构建Windows应用商店应用程序,得先从一个HTML文件开始:
如果我们在Web浏览器中加载这个HTML文件,那绝对会是世界上最无聊的网页。而且,简单的一个网页(或者说一系列的网页、样式、代码、资源等),也并非就是一个Windows应用商店应用程序。Windows应用商店应用程序不仅包括了这些,还包含了下面列举的元数据(metadata)和资源,以此来定义Windows 8“开始”屏幕。
清单文件(manifest file),用于对应用程序进行描述,其中包括应用程序的名称、描述信息、启动页面等内容。
一组大小不等的logo图片,用于在“开始”屏幕上显示。
应用商店徽标(store logo),用于在Windows应用商店中显示。
初始屏幕(splash screen)图片,用于在应用程序启动的时候显示。
清单文件是一个名为appxmanifest.xml的XML文件,最精简的清单文件类似这样:
这份清单中包含了以下内容:名称、描述以及徽标图片的引用,其中最为重要的是应用程序启动页面对应的HTML文件的名称(在这个例子中是default.html)。
有了清单以及支持文件,如果要在系统中注册这个超级激动人心的应用,最基本的方法就是使用PowerShell。我们可以从“开始”屏幕访问PowerShell和它的appx模块。在Windows 8的PowerShell里面,appx模块提供了若干命令来管理安装在计算机上的Windows应用商店应用程序。微软用appx这个术语来表示打包的Windows应用商店应用程序,因为它们的扩展名都是.appx。
如果要对应用程序进行打包和签名,以便把它提交到Windows应用商店中,可以使用MakeAppx.exe和SignTool.exe这两个命令行工具(均包含在Windows应用商店开发者工具中);但如果只是想简单地在自己的机器上安装一个应用程序,使用appx模块中的Add-AppxPackage PowerShell命令就可以解决问题了,如图1.1所示。
图1.1添加一个appx文件并在添加后进行校验
成功执行了App-AppxPackage命令之后,可以使用Get-AppxPackage命令检查应用程序是否已经正确安装了,正如图1.1所示。令人激动的是,应用程序现在已经出现在了“开始”屏幕上面,如图1.2所示。
图1.2安装到“开始”屏幕上的示例应用程序