【问题标题】:Would it be feasible to use jQuery Mobile in a Xamarin solution?在 Xamarin 解决方案中使用 jQuery Mobile 是否可行?
【发布时间】:2014-03-28 02:42:51
【问题描述】:

在 Xamarin 解决方案中,典型的项目分组如下:

SOLUTION
    CORE Project (shared non-UI code, referenced by all the other projects)
    Android Project
    iOS Project
    Windows Phone Project

使用此解决方案架构,您需要为每个(非核心)项目编写特定于平台的 UI 代码。

只有两个项目不是更容易吗,像这样:

SOLUTION
    CORE Project
    HTML5/CSS/jQuery/jQuery Mobile Project

有什么缺点? HTML5/jQuery Mobile 的“服装”可能看起来不像原生应用程序;性能可能不太好。

但这会是一个可行的选择吗?我很想根据以下陈述尝试一下:“...总的来说,Web 应用程序比使用不同语言的多个本机应用程序更容易开发和维护”here

我将 PhoneGap 视为具有单独本机代码的最低公分母 GUI,将 Xamarin 视为具有单独 GUIS 的 API 的最低公分母子集,并且该提案是这两个 GUI 的最低公分母和 API。但作为对两端“贫民窟”的补偿,代码(部分)共享,所有的 GUI 都是共享的(尽管对各种浏览器进行调整和填充无疑是必要的)。

我看到的主要问题是那些需要编写特定于平台的代码的领域,例如处理条形码扫描和外围设备(带式打印机)打印——它会在哪里?

更新

根据我在 Doogie Howser 的“Xamarin Cross-platform Application Development.pdf”中看到的内容,似乎解决方案文件夹实际上应该是这样的:

SOLUTION
    FooeyBar.Core
        . . .
    FooeyBar.Core.Droid
        . . .
    FooeyBar.Core.iOS
        . . .
    FooeyBar.Droid
        . . .
    FooeyBar.iOS
        . . .

想法/肯定/反驳?

【问题讨论】:

  • 我已经做了一些将 HTML/JS 嵌入到原生 Web 视图中的示例,并在 JS 和 C# 之间建立了一座桥梁。虽然这对于某些用例可能很有用(我使用 CanvasJS 创建了一个示例来显示图表),但我觉得通过适当的设计(例如 MVVM),您的 UI 层会变得很薄且易于实现。性能和原生 UI 是 Xamarin 是不错选择的原因,而过多的抽象和非原生 UI 将是一个倒退。
  • 是的,我知道您所说的“太多抽象”是什么意思。我最近看到一个(可能是半开玩笑的)引用,它说计算机科学中没有任何问题无法通过添加另一层抽象来解决,有时似乎这些层已经铺得如此之厚,以至于最后一层有与原始/基础几乎没有关系,似乎英语翻译成德语翻译成西班牙语翻译成皮拉丁翻译成祖鲁语,一个人要么失去了线索,要么失去了试图建立联系的思想。
  • 作为旁注,我想知道为什么 Mono 猫(这是一个可怕的名字,总是让我想起单核细胞增多症)没有将 Xamarin 命名为“C#Xam”(发音为“ShaZam!” )?

标签: jquery-mobile windows-phone-8 xamarin.ios xamarin.android xamarin


【解决方案1】:

绝对可以将 Web 前端封装在本机应用程序中。单独使用 Xamarin 时您会遇到的一个令人头疼的问题是,您的 UI 必须针对您所针对的任一平台几乎完全重写(良好的业务逻辑分离可以减轻这种痛苦)。

在集成硬件的本机 shell 中使用 Web UI 的一种方法是在两者之间编写一个由 injecting javascript 和自定义协议处理程序工作的薄通信层,我已经在一个项目中成功应用了这个策略 - 它有效它允许您开发一次 UI,然后为每个设备设置样式。好消息是您无需依赖浏览器检测 - 您的原生应用程序可以使用特定 URL 加载其 WebView,后端可以确定要使用的样式,甚至提供 UI 版本控制和设备之间的功能更改。

如果您确实采用了这种方法,请确保将您的原生应用程序通信层编写得尽可能精简和通用,以减少将来更新原生应用程序的需要。

【讨论】:

    【解决方案2】:

    如果您打算用 html/javascript 编写应用程序中的所有 UI,为什么还要使用 Xamarin?这是 MonoTouch 提供的主要优势 - 每台设备上的 100% 原生 UI 体验(具有共享代码库)。如果您想走那条路,只需使用 Phonegap 或 Titanium。

    至于您的示例,它不一定“更容易”,这只是您想要完成的事情或您希望您的应用看起来像什么的问题。我发现单独项目的第一种方法对我来说“更容易”。我也喜欢它在各自平台上提供的原生 UI。

    最重要的是找到最适合您需要的工具。我不建议尝试使这些工具中的一个像另一个一样工作。与采用任何一种方法相比,这种方法会给您带来更好的结果。

    【讨论】:

    • “如果你想走那条路,只需要使用 Phonegap 或 Titanium”但是那样我就会失去共享业务/数据代码的 Xamarin 优势,不是吗?
    • 难道你不能用javascript来完成你所有的业务逻辑吗?如果您真的关心共享 UI,可以尝试类似:ifactr.comintersoftpt.com/Crosslight。他们都使用 Xamarin。
    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多