你的降级策略是怎样的?
最后一点,需要指出的是各种设备存在着或多或少的差异。即使你只打算支持某一种平台,在这种平台上的各个设备也不是完全相同的。当应用无法按照预想的方式呈现时,能够提供一组隔离代码是最好的撤回策略。换句话说,就是要使代码尽量简洁且不依赖某些特殊的边缘技术——我们称之为优雅的降级。
HTML5开发的代码最好严格地遵循语法规定。首先不要在代码中加入任何的CSS或Javascript,通常这种形式最简单的代码具有最好的通用性。
广州网站建设,网站建设,广州网页设计,广州网站设计
Javascript

现在可以介绍其中一个很重要的部分了,Javascript。在几年以前,跨平台的Javascript还没有受到广泛的关注(那时HTML5也没有引起大家的注意)。但就在这几年,Javascript的地位发生了明显的变化。在短短两年的时间里,Javascript已经成为为用户提供数据、逻辑和交互的主要方法了。
而Javascript上的这些转变都是伴随着HTML5的推进而发生的,难怪人们总是将Javascript和HTML5视为一体。换言之,HTML5上有许多新的功能,但是如果没有Javascript,这些功能也无法应用。你能否找到用户的物理位置?如果有Javascript就可以。能否离线保存用户数据?有了Javascript就可以。
想想Javascript之前的开发框架: Scriptaculous, Prototype, MooTools和jQuery。我不认为有人是因为喜欢Javascript才采用它的——Javascript使用起来并不方便。所有的这些开发框架确实使得我们的生活变得更加方便,并且改变了Web的面貌,许多开发者如果没有其他这些框架的帮助,根本无法开发出Javascript程序。
移动web apps开发中最困难也是最耗时的工作就是测试。你使用的所有技术必须都是可以被检测的。如果你不了解一个技术的原理,那么你需要耗费大量的时间和精力来解决一个小小的bug。
如果你的应用只是针对某个特定的平台,也许这还可以容忍。但如果应用平台变得复杂起来,开发和测试的工作量将会呈现指数级的增长。
Murphy定律——“一个事情只要有可能出错,那么它不久将会出错”——是移动web apps开发中唯一的准则。如果你使用了某个技术,那么你需要确保这个技术在你的应用中不会出错。
下面将Javascript分成三个部分分别进行介绍。
广州网站建设,网站建设,广州网页设计,广州网站设计
混合脚本
混合脚本可以将开发人员编写的核心脚本与设备SDK连接起来。如果你想使用本地封装器(如 UIWebView和PhoneGap.)将HTML5 app封装起来,那么你需要使用混合脚本。需要针对不同的平台编写不同的混合脚本(phonegap.js是唯一一个支持多个平台的脚本)。
核心脚本
核心脚本是app在所有平台上的通用部分。如果app是通过浏览器访问的,核心脚本也应该使得app看起来像是一个native SDK。你的app需要负责收集和渲染HTML5页面。这个时候使用jQuery这类完整的框架是非常有用的,但是我们建议还是尽量使用微框架。
设备脚本
最后,你需要使用设备脚本模拟本地的行为。 jQTouch是一个很好的例子,它使用jQuery模拟iPhone的本地行为和动作。但是jQTouch无法区分不同设备间的差异,在Android以及其他的移动平台上,它都仍然使用在iOS上采用的方法。这一点受到用户的诟病。因此,需要为不同的设备编写单独的设备脚本。
CSS

CSS是app的展示层。CSS的开发更像是设计工作,而不是单纯的技术工作。页面的显示其实是HTML5移动App上最重要的一个部分。
Apple,Nokia,Microsoft等公司都花费了大量的人力物力开发出非常丰富的用户界面,从而省去了程序员的很多工作。但是如果你想要开发一个HTML5移动App,那么你需要自己开发一个用户界面,尽管这是一件很令人头疼的事情。
现在让应用拥有一个良好的用户体验变得越来越重要了。CSS就是用来帮助程序员提升应用的用户体验的。
如果说HTML5 App是一部小轿车的话,那么CSS就是这辆车的外观,颜色,甚至是内部的详细设计装饰。当你坐在车内,你看的的不仅仅是一些布料和皮革。我们更看重的是设计的细节。方向盘的手感如何,仪表盘的设计是否清晰,音响的立体声效果怎样,所有的这些因素都能影响我们的驾车体验。
Javascript也能影响我们的用户体验,但是它没有那么直接。我们当然需要Javascript,但正如 Top Gear(汽车杂志)所说的——好的引擎并不等于好的驾车体验。
只有让性能和外观和谐统一起来,才能给用户最好的体验。
我曾和jQTouch、Sencha Touch和jQuery Mobile的爱好者交流过,我向他们询问了他们设计应用界面的方法,回答无非是使用 “Device Theme”这类网页风格,他们用 “Device Theme”模拟iOS的界面风格,再加上几行Javascript代码。很少有人考虑使用CSS模拟其他设备的界面风格(Android上的CSS模板)。
有时候,开发者需要设计一个不同于其他app的应用,想要摆脱传统的设计风格,使用自己的页面风格。那么你可以考虑使用CSS为你的app设计一个全新的界面风格:
设备主题
这是开发者用来模拟设备风格的CSS代码。它是用户惯用的语言,普通用户看到这些语言后,能够直接开始执行想要处理的任务,而不用花费时间去学习你的界面。据不完全统计,每个平台上有将近100个独立的界面组件。我不推荐开发者自己设计一种新的组件,除非你清楚的知道自己在做什么。
Sencha Touch,jQuery Mobile和其他的工具都是用来帮你完成这项工作的,但是这也难免使得你的app看起来和这些平台很像,而没有了自己的风格。但是,使用这些工具可以帮助你开发自己的风格。
核心主题
核心主题是应用程序中可以重复利用的部分——那些你需要使用,但不一定会显示在界面的上的内容。我习惯将各种部件单独表示(如复位按钮,布局,排版,颜色,图像),这样就能将这些部件作为我的核心主题。这些主题在不同的平台上都是一样的。比如,你的logo在所有的平台上都是一样的。你的工具栏的颜色总是保持一样的风格。这些组件都可以定义为你的核心主题。当你在不同的设备上使用这些核心主题时,只需要修改相应的设备主题即可。
App主题
App主题是专属于某个App的风格组件。许多项目诣在将这些组件整合到一个样式表中。但是我建议,还是将你的核心主题和App主题区分开来。这对于debug有很大的帮助。
总结
HTML5能否满足你的要求?回答是肯定的。HTML5能够完成你的要求吗?答案也是肯定的,不过…
可能需要耐心等待。这个项目可能比以往你碰到的其他项目需要更久的时间
合理的预算。这不是一个网站,可能会花费你较多的预算
确保你有合适的人才。如果你认识到世界上最有经验的专家都在对此苦苦探索,那就不难想象,你的开发过程也不会太轻松
现在还没有所谓的合适工具,更多的时候,你得自己开发需要的工具
仔细考虑你的每一个选择,在移动开发领域没有绝对的对与错,要保持开放性,关注客户的需求