Javascript 使用web移动框架?

Javascript 使用web移动框架?,javascript,cordova,jquery-mobile,sencha-touch,titanium,Javascript,Cordova,Jquery Mobile,Sencha Touch,Titanium,我目前正在一个新的项目上实现一个移动应用程序。客户尚未决定,我必须提出几个解决方案。 需要与Android(版本2.2+)兼容,iOS和其他操作系统也可以。我们只能为Android开发,但我想使用web mobile框架 由于我从未使用过它们,我开始寻找现有的解决方案。我听说过PhoneGap、Titanium、Sencha Touch和jQuery Mobile 以下是我发现的可能性: PhoneGap+senchatouch PhoneGap+jQuery Mobile(或同等产品) Se

我目前正在一个新的项目上实现一个移动应用程序。客户尚未决定,我必须提出几个解决方案。 需要与Android(版本2.2+)兼容,iOS和其他操作系统也可以。我们只能为Android开发,但我想使用web mobile框架

由于我从未使用过它们,我开始寻找现有的解决方案。我听说过PhoneGap、Titanium、Sencha Touch和jQuery Mobile

以下是我发现的可能性:

  • PhoneGap+senchatouch
  • PhoneGap+jQuery Mobile(或同等产品)
  • Sencha Touch(API+UI)
应用程序中的关键点是允许用户拍摄照片并对其进行编辑:调整大小,添加一些文本。。。在安卓系统上,这在技术上是可能的,但在网络移动框架下,我不知道

以PhoneGap和jQuery Mobile为例,有可能做到这一点吗?我发现每个函数都有部分代码,但都不是很完整,而且不确定它是否能在很多手机上兼容。 就开发时间而言,也许最好使用2个本地应用程序,而不是尝试使用移动框架(并用Javascript开发图片版)

我在每个框架上都找到了很多意见,但其中一些发表在那里已经超过一年了,而且它们的发展很难对所有解决方案有一个清晰的愿景

所以我想知道我是否能用这些解决方案中的一个实现这个图片版,哪一个可能是最好的

感谢您的帮助

介绍 从技术上讲,它可以用你所有的可能性来完成,我会按照难度从低到难来排列它们,我甚至会再增加一些可能性。此外,我为我的博客写了更广泛的

PhoneGap/Cordova+jQuery Mobile(低难度) Phonegap是您在这里需要的,jQuery Mobile仅用于UI。尽管如此,这种组合很容易一起实现,并且有很多工作示例。Phonegap充当HTML5/JS/CSS的包装器,它将使您能够访问手机功能。Phonegap将用于拍照,jQM将用于修改

一个全新的PhoneGap+jQuery移动教程。如果您想查看该文章的MAcOS版本,请查看

如果您想找到更多关于jQuery和jQuery Mobile之间差异的信息来源,请查看

PhoneGap/Cordova+Sencha Touch(中等/难度) 与jQM不同,Sencha Touch学习起来有点难(或者更难,取决于您的javascript知识),特别是如果您对javascript没有很好的背景知识或者没有Sencha Touch designer工具的许可证。只有当你有足够的时间学习新东西时,你才能走这条路。Sencha Touch版本2有自己的应用程序包装器,因此不再需要Phonegap

如果您想了解更多信息,请查看这个讨论jQuery Mobile和Sencha Touch之间区别的

钛加速计(中等难度) 与前两种选择不同,钛的工作原理略有不同。jQM和Sencha用于创建混合移动应用程序,Tianium appcelerator用于从javascript代码创建本机应用程序。不难掌握,坦率地说js代码非常简单。虽然是快速开发工具,但要正确设计您的本机应用程序将更加困难(从零开始构建本机应用程序的过程要简单得多)

应用程序间框架/ex jqMoby(低难度) 这个框架几乎和jQuery Mobile一样古老,现在它归Intel所有。和Sencha Touch一样,该框架的主要目标是混合移动应用程序开发,而且效果很好。它针对Android和iOS进行了优化,因此预计执行速度会比jQuery Mobile更快,也像Sencha Touch一样。该框架有自己的原生应用程序包装器。当然,这个框架很少有糟糕的一面,比如可怕的文档(至少在撰写本文时是这样)。如果您想了解有关此框架的更多信息,请查看此

剑道UI(低难度) jQuery Mobile的优秀替代品。更好,更快。只有一个问题,这是一个商业产品。这将花费你200美元

查找更多信息

PhoneJS(低难度) jQuery Mobile和Kendo UI的另一个优秀替代品。比jquerymobile快得多,在与kendoui相同的级别上。它有一个很好的文档,是我迄今为止最好的文档之一

查找更多信息

阅读相关信息

荣誉奖 去Rhomobile。与Phonegap/Cordova类似,但使用较少

从开发时间的角度来看,创建混合应用程序比创建本地应用程序更快。在您的情况下,如果您有Java/Objective C知识,请坚持使用本机应用程序。无论你们花多少时间在混合应用上,它都会足够好或者足够快

编辑: 这里有一个Phonegap+jQuery移动示例:,您将在其中找到Android和iOS实现的github链接

如果您从未使用过jQuery,那么请继续使用Dawson-Toth示例。但如果可能的话,请坚持使用jQuery Mobile

更新1 您可能还对开源项目感兴趣,该项目演示了使用一系列跨平台框架(包括Sencha、jQM和PhoneGap)实现的相同应用程序

更新2
我在过去几周里回顾了其他HTML5移动框架。我的评论可以在

找到。是的,你可以用钛合金来做。下面是一个简单的实现,在5分钟内起草并测试

为了让您了解它的外观,请参考以下内容。然后看看佩德罗·恩里克(Pedro Enrique)的《TiDraggable》(TiDraggable),如果你想增强它,让用户可以重新拖动文本或图像
// This app consists of two visual parts: a canvas where the user does stuff,
// and a save button in the bottom right.
var win = Ti.UI.createWindow({
    backgroundColor: 'black'
});

// First, the canvas.
var canvas = Ti.UI.createView({
    bottom: 50,
    backgroundColor: 'white'
});
// It has a scroll view so the user can...
var scroll = Ti.UI.createScrollView({
    // ... zoom content in or out.
    maxZoomScale: 2, minZoomScale: 0.1,
    // .. and freely position the image.
    contentWidth: 1000, contentHeight: 1000
});
// Add the image to the middle of the scroll view.
scroll.add(Ti.UI.createImageView({
    image: 'http://appc.me/Content/kitten.jpg',
    width: 750, height: 426,
    hires: true
}));
canvas.add(scroll);
// Add some text.
canvas.add(Ti.UI.createLabel({
    text: 'Kittens are the best.', textAlign: 'center',
    font: { fontSize: 28 },
    color: '#000',
    bottom: 20
}));
// Add the canvas to the win.
win.add(canvas);

// Second, create the "save" button.
var save = Ti.UI.createButton({
    title: 'Save to Gallery',
    height: 30, width: Ti.UI.SIZE,
    bottom: 10, right: 10
});
save.addEventListener('click', function (evt) {
    // Turn our "canvas" view (and its children) in to an image,
    // and save it to the gallery.
    Ti.Media.saveToPhotoGallery(canvas.toImage(), {
        success: function () {
            alert('Saved!');
        },
        error: function () {
            alert('Oh no...');
        }
    });
});
// Add it to the win.
win.add(save);

win.open();