【问题标题】:Best way to build native applications with JavaScript?使用 JavaScript 构建本机应用程序的最佳方式是什么?
【发布时间】:2013-11-12 09:32:30
【问题描述】:

我玩phonegap已经有一段时间了, 在我的 Android 上做了一些测试...

挺好看的。

我的问题是:
使用 Web 客户端(HTML / JavaScript / CSS)开发原生移动应用程序的最佳(您最喜欢的)框架是什么?

在多平台(iOS / Android / BlackBerry)中并行构建和维护这些应用程序有多容易? 不同平台(iOS / Android / BlackBerry)之间是否有很多例外?

为 iOS 开发我的应用有哪些要求? 我是否需要带有特殊 SDK 的特殊 IDE?我必须有 Mac 吗?

【问题讨论】:

标签: javascript mobile cordova native


【解决方案1】:

我们目前正在使用 React Native 构建原生 iOS 应用程序。如果不包含在此处将是一种耻辱。

优点:

  • React 将 DOM 视为实现细节。这使得向原生 UI 的过渡非常自然。它还消除了编写本机应用程序时对 HTML/CSS 的需求。您只需要使用 JavaScript 编写的原生组件。
  • 原生组件!基本的原生组件已经桥接到 JavaScript,并且有一个社区正忙于将其他所有东西都带过来。问题是,如果你知道或愿意学习一些 Objective C 或 Java,有一个 easy process 可以将任何本机模块(或第三方模块)添加到 React Native。
  • 快速迭代。自 3 月开源以来,master 分支已提交超过 2600 次。
  • 您可以获得普通 React 的所有好处:虚拟视图层、差异化、声明式 UI 创建、出色的开发人员体验和一流的社区。​​li>
  • 您可以从同一个存储库为多个平台构建,重用大部分相同的代码库(主要是应用程序逻辑)。

缺点:

  • 它还很年轻。有一些功能需要 jimmy-rigging、第三方库或自定义 Objective-C/Java 才能发挥作用。
  • 一些与 DOM 或浏览器 API 相关联的优秀第三方库仍然无法在 React Native 上运行,包括 React Router。
  • 最大的痛苦与 XCode 和 Apple 的开发者计划有关,但没有办法解决这个问题。

在多平台上构建和维护这些应用程序有多容易?

React Native for Android 于 2015 年 9 月 14 日开源。我还没有使用它,但这是我迄今为止能够学到的。 2016 年 10 月 21 日更新:今年早些时候宣布了适用于 Windows 通用平台的 React Native。这意味着您现在可以使用 React Native 为 Windows 桌面、Windows 手机甚至 Xbox 构建应用程序!

React Native 不是旨在成为一次编写,随处运行的心态。他们采用了一次学习,随处编写的范例。 iOS 是一个与 Android 非常不同的平台,因此需要在这两个平台的设计上付出真诚的努力。原生 API 也会有所不同。

因此,您最终会为原生组件和 API 重新编写代码。但是,您的大部分应用程序逻辑都可以重复使用。事实上,React-Native 的组织方式使您可以将 Android 和 iOS 应用程序保存在同一个存储库中,以便您可以尽可能重用相同的代码。我认为它很棒,但只有时间会证明一切。 According to them,目前运行良好。

顺便说一句,Facebook built an iOS app using React Native 的一个团队随后转身用 87% 的相同代码库在三个月内构建了 Android 版本。

开发我的 iOS 应用有什么要求?

目前,您需要 Mac 和 XCode 才能进行部署。目前,解决这个问题的方法很少。根据this issue 和 Slack 上的对话,一旦部署,您实际上可以从 Windows 或 Linux 机器进行开发。 Facebook 还致力于开源其所有 Nuclide 软件包,据 their presentation at F8 称,其中将包括无需 XCode 即可打包和构建的工具。

总体而言,React Native 是一次出色的体验。在我看来,它比目前其他任何东西都高出一筹。社区内的感觉也非常积极。我只能假设它会随着时间的推移而变得更好。

【讨论】:

  • 非常感谢您的回答,我非常感谢您的详细信息,感觉非常公正
  • 这不只是框架吗?不是实际构建应用程序的方式?
【解决方案2】:

如果您的应用程序非常简单(例如现有 Web 应用程序的一个端口),并且您只需要在一个平台上使用它,并且不需要与特定于手机的功能集成,您可能只想在其上使用 WebView选择的平台。如果您选择的平台是 iOS 并且您没有任何编程技能,您可以按照以下步骤操作:

  • 在您的 Mac 上下载 xCode,
  • 下载这个简单的网页视图应用项目:https://github.com/nomtek/iOSWebViewApp
  • 在 xCode 中打开简单的 Web 视图应用
  • 将您的 HTML 添加到项目中
  • 运行它:)

这种方法的优点:

  • 简单设置
  • 无需加载额外的库 - 应用程序启动速度更快

【讨论】:

    【解决方案3】:

    这是一个不断变化的竞技场,它只会变得更好。在您感兴趣的那一刻谷歌搜索将是最好的选择。在撰写本文时,我正在观看以下内容,排名不分先后:

    【讨论】:

    • 不是meteor更像一个通用的javascript框架吗?我知道最初它是为实时网络应用程序构建的。
    • 引用 Meteor 的话——“Meteor 是一个完整的开源平台,用于在纯 JavaScript 中构建 Web 和移动应用程序。”我同意这实际上可能不会生成原生应用,但值得考虑。
    【解决方案4】:

    这些是选项

    电话:http://phonegap.com/

    PhoneGap 是一个免费的开源框架,可让您创建 为您关心的平台使用标准化 Web API 的移动应用程序 关于。 .下载Phonegap.

    Coronalabs:http://coronalabs.com/

    Corona SDK 为 iOS、Android、Kindle 和 Nook 构建了丰富的移动应用程序。 在很短的时间内构建高质量的 >移动应用程序。

    应用加速器:http://www.appcelerator.com/

    Appcelerator 是唯一支持企业的移动优先平台 创建、交付 > 和分析他们的移动应用程序。

    【讨论】:

      【解决方案5】:

      如果您尝试使用 javascript 构建移动应用程序,Phone Gap 确实是您的最佳选择

      是的,你需要一个 mac,因为你需要安装 XCODE (https://developer.apple.com/xcode/) - 苹果自己的 IDE。

      【讨论】:

        【解决方案6】:

        如果您在学习一门新的脚本语言方面投入一些精力,Coronalabs 将是您选择的新武器。有了它,您可以构建原生(跨平台)应用程序,如果需要,您可以使用 webview 添加 HTML/CSS/Javascript 内容。

        【讨论】:

          【解决方案7】:

          目前,React Native 是使用 JavaScript 创建移动应用程序的最佳选择。

          以下是我的三大理由:

          1. 非常积极的开发和更新 - 毕竟它起源于 FB

          2. 可忽略不计的学习曲线

          3. 很棒的在线资源

          我能够在没有以前的 React Native 经验的情况下编写一个小而实用的应用程序,甚至可以在 2 天内将其部署到 Google Play 商店。

          我还看到 React Native 的一大好处是您可以随时“弹出”您的应用程序并继续在 Android Studio 或 XCode 中处理它。对于开始很简单但在一段时间内可能会变得复杂的项目,这可能是一个很大的缓解。

          这是我在为 Android 构建第一个 react 原生应用时整理的简短教程: http://geekycentral.com/creating-a-native-android-app-using-javascript-hello-react-native/

          【讨论】:

            猜你喜欢
            • 2015-06-25
            • 1970-01-01
            • 2013-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-25
            • 1970-01-01
            相关资源
            最近更新 更多