比如,我可以在HTML5中编写一个业务强度应用程序来模拟我们当前的系统,该系统包含许多高度交互的网格,自定义树等等。
我们有一个用C#WinForms编写的好的工作系统,其中的部件是在WPF中完成的,并且最近开始为iPad编写一个自定义应用程序,通过WCF与我们的主服务器主机进行通信。我们现在有一个用C#编写的非常快速的自定义网格,它通过MonoTouch编译成Objective C,还有一个很酷的交互式饼图。
现在我的老板希望为Android构建一个版本,我想我们是不是真的要花时间创建一个可以在iPad和Android上运行的HTML5应用程序。
事情是 - 采取网格 - iPad上的网格很快(可重复使用的单元格等) - 如何从html5中的“数据集”类型源创建网格?我是否真的必须创建大量标签,然后将它们提交给浏览器?像jqwidgets这样的第三方小部件是答案吗?
由于
答案 0 :(得分:2)
这有点轶事,但我的经验是HTML5 / JavaScript在移动设备上还不够快(2012年),特别是如果你要显示大量数据,尤其是你想要快速响应时间和交互式功能。再给它一年,如果随着移动设备的不断发展,这种说法已经过时,我不会感到惊讶。
移动网络开发当前有其用途,例如,如果您希望使用单个代码库来定位大多数设备;如果您没有足够的开发资源并且愿意接受非本地体验;如果您没有本地开发所需语言等方面的经验
鉴于您已经完成了iPhone应用程序的工作,我的拙见是,使用原生Android应用程序向前推进可能会更好 - 您将获得响应速度更快的应用程序这一点。
如何从html5中的'dataset'类型源创建网格?
根据网格包含的内容,您可以使用普通的旧HTML表格或使用CSS样式的其他元素组合来完成。然而,实际上还有许多考虑因素 - 例如,它是否需要在小屏幕(例如电话)或更大的屏幕(平板电脑)上工作。通常情况下,您无法在小屏幕上真正适应整个网格,因此您最终会得到不再是网格的UI。您可以查看移动JavaScript框架(例如jQuery Mobile)以了解它们是如何完成的,甚至可以考虑使用该框架在您自己的应用程序中使用。
答案 1 :(得分:0)
各种JavaScript框架(例如,JQuery和Dojo)具有相当高质量的移动设备特定小部件。请查看http://dojotoolkit.org/features/mobile和http://jquerymobile.com/
这些内容与ObjectiveC和Java开发的本机应用程序有多接近?不完美但也许足够好。您还可以在同一个应用程序中使用本机和HTML的组合,某些页面本机为HTML。我正在使用IBM的Worklight做这种事情,但后来我会为IBM工作;-)无论具体产品如何,我都会看到人们采用这种方法。
除了可移植性之外,在HTML中使用大部分应用程序的好处还在于可以在不通过应用程序商店的情况下交付更新版本 - 这可以提高功能交付的灵活性。
答案 2 :(得分:0)
作为证据,我会说许多Windows 8的应用程序只是包装了JS / CSS / HTML,并提供了一些Microsoft提供的API,以允许访问硬件/文件系统。
我不认为他们已经做到了基于Excel 2013 JS的... ...然而,据说,他们甚至允许开发人员使用applet视图扩展他们的程序 - 这些applet都将建立在“html5”上(再次使用MS-Office JS) API)。
走下去并不是一条轻松的道路 - 人们希望jQuery成为这类事物的救星。 如果你想要破解解决方案,这正是jQuery不会是你想要的。 例如:
$(".table_cell").click(function () { alert(/*whatever*/); });
人们认为jQuery正在指派一个委托人来听取包含class="table_cell"
的任何元素的任何点击。
这真的不是它正在做的事情。 它循环遍历每个,并直接将事件监听器附加到每个。 这是人们想念的这些小事 - 像Twitter这样的人,他们并不打算缓存对元素的引用,因为jQuery很容易与其一起破解。 那么你就一直在JS触摸(或采取行动)数十个或数百个单独的元素。
这对任何人都不好。
jQuery一点都不差 - 它是非常有用的,作为一个低级构造来帮助绕过浏览器差异。 它的一些插件也没问题。 我不能保证他们都是所有事情的高绩效答案。 但是一些插件创建者理解如何维护响应性和性能良好的程序。
哪些适合您的确切需求?谁知道,除了你。
他们会表现得如此完美吗? 当然,这取决于很多不同的事情。
来自C#,您可能会看到像 AngularJS 这样的内容。 Angular本身使用jQuery的内部版本来处理jQuery已经解决问题的一些低级别的东西。 但它允许数据绑定和非常简单的视图模板。 Hammer.js 也是一个非常不错的手势跟踪库。
但是,从那里开始,我建议您构建自己的框架,如果您希望它按照您希望的方式完成。 没有人知道你的需求是什么,但你,并试图将东西塞进鞋盒,因为它可用,并不总是解决方案,无论各种公司可能会想到...
你可以将大部分节点工作留给Angular,你可以将手势感应留给Hammer,你可以从jQuery-lite中取出一些其他的基础知识(如果你不喜欢安装在Angular中的简洁jQ)你的网站上有jQ,或jQ,本身......
但他们只是工具,而不是答案。
如果您缓存对元素的引用,而不是一遍又一遍地查询它们,委托事件,从DOM(在克隆节点上,如果需要)执行大型结构更改,那么Web可以非常快速响应尝试将JS视为传统的继承密集型语言,并且您仍然注意使用AJAX的方式和时间(调用的数量/频率与数据的大小 - 支持更少的调用)。