关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
6年前关闭。
Improve this question
我计划在 iOS、Android 和一个网站上使用 AngularJS 创建一个应用程序。
但是为了不必在每个应用程序上重写业务代码,我想尽可能多地重用代码。
为了能够在任何平台上执行项目的核心,我必须使用网络语言。
通过不同的文章,我计划了一个通用架构来分离项目的业务逻辑 - 核心 - 与将为每个系统重新实现的 UI(用于 iOS 的 UIKit,用于 webapp 的 AngularJS 和 Polymer 等)
此架构的目标是尊重重要的软件工程原则,例如 information hiding by decomposing requirements in modules , DRY和 SOLID
此处适用于 iOS(Android 几乎相同):
“core”的代码将通过虚拟机执行,如本文所示:http://www.skyscanner.net/blogs/developing-mobile-cross-platform-library-part-3-javascript
这里是 AngularJS:
现在您已经了解了有关架构的所有信息,以下是我的问题。
我对网络语言没有足够的经验和反馈,无法做出明智的选择。经过一些研究,我发现有多种选择:
感谢您的阅读。
最佳答案
我知道这不是您列出的选项之一,但不会自动排除 C++。例如,这就是 Dropbox 使用的,他们甚至为此目的开源了他们的工具:
C++ 到 Java/Objective-C API 生成器:
https://github.com/dropbox/djinni
适用于 Android/iOS 的“ native ”应用示例:
https://github.com/libmx3/mx3
关于这个主题的有趣文章有更多链接:
http://oleb.net/blog/2014/05/how-dropbox-uses-cplusplus-cross-platform-development/
更新答案:
如果您真的不想使用 C++ 并且可以接受非 native 带来的膨胀,那么您可以尝试以下操作:
https://github.com/MobileChromeApps/mobile-chrome-apps
该项目是 Google 的 Cordova 分支,并添加了许多新功能和好处。
这里有一个基于 Chrome API 的 Dart 包装器:
https://github.com/dart-gde/chrome.dart
基本上,您将使用纯 HTML5 技术在 Dart 中编写您的应用程序,然后对于某些事情您将使用 Chrome API(设备状态等)。然后你可以部署:
关于android - 关于跨平台项目中 Web 语言互操作性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223230/