微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 关于跨平台项目中的网络语言互操作性的问题

我计划在iOS,Android和AngularJS网站上创建一个应用程序.

但是,由于不必在每个应用程序上重写业务代码,我希望尽可能多地重用代码.

为了能够在任何平台上执行项目的核心,我必须使用Web语言.

通过不同的文章,我计划一个通用的架构来分离项目的业务逻辑 – 核心 – 与将为每个系统重新实现的UI(UIKit for iOS,AngularJS和polymer for webapp等)

该体系结构的目标是尊重重要的软件工程原理,如information hiding by decomposing requirements in modules,DRYSOLID

>每个功能都将在模块中分解.
>核心:业务逻辑代码 – 可在每个平台上重复使用 – 将以库的形式表示.
>视图:将在每个不同平台上开发视图类,以使用每个平台上提出的不同UI元素.例如:用于iOS的Objective-C / Swift中的ViewController的子类或用于操作web-app的HTML的简单类.这堂课没有逻辑.它只负责:

>处理用户与业务逻辑的交互.
>显示业务逻辑中的内容

> IView:抽象操纵视图的类的接口.
> Presenter:Interactor和View之间的链接以驱动UI.
> Interactor:模块的逻辑,例如算法.
>数据存储:通过与数据库或API或Web服务通信来管理数据的持久性和提取.
>模型:数据以结构表示.

这里是iOS(几乎与Android相同):

如本文所示,“核心”代码将通过虚拟机执行:http://www.skyscanner.net/blogs/developing-mobile-cross-platform-library-part-3-javascript

这里是AngularJS:

现在您已经了解了有关架构的所有信息,以下是我的问题.

我没有足够的经验和对网络语言的反馈,无法做出明智的选择.经过一些研究,我发现有各种选择:

>飞镖:

>问题1:是否存在允许Objective-C / Swift与Java通过VM实现互操作的机制?我知道两个平台都有VM来执行Javascript代码,而Google提供dart2js来编译Dart到Javascript代码.但它不是简单的Javascript:请参阅示例here.所以我不知道是否还有适当的互操作性.

> Javascript ES6:如果事件尚未在浏览器中完全实现,则可以开始使用带有Traceur编译器的ES6.

>问题2:Traceur和iOS / Android中的VM编译的Javascript是否具有互操作性?
>问题3:通过Traceur使用ES6开发大型项目并拥有生产代码是否“安全”?

谢谢你的阅读.

最佳答案
我知道这不是您列出的选项之一,但不会自动排除C.这就是DropBox使用的例子,他们甚至为此开放了他们的工具:

C到Java / Objective-C API生成器:

https://github.com/dropbox/djinni

适用于Android / iOS的示例“原生”应用:

https://github.com/libmx3/mx3

关于这个主题的有趣文章有更多链接

http://oleb.net/blog/2014/05/how-dropbox-uses-cplusplus-cross-platform-development/

更新答案:

如果你真的不想使用C并且你可以从非本机获得膨胀,那么你可以尝试以下方法

https://github.com/MobileChromeApps/mobile-chrome-apps

该项目是Google的Cordova分支,增加了许多新功能和优点.

Chrome API上有一个Dart包装器:

https://github.com/dart-gde/chrome.dart

基本上,您可以使用纯HTML5技术在Dart中编写应用程序,然后对于某些事项,您可以使用Chrome API(设备状态等).然后你可以部署:

> Web:在没有Chrome API功能的情况下编译为JavaScript.
> Chrome操作系统:使用Chrome API功能编译为JavaScript.
> Android:编译为JavaScript,然后使用MobileChromeApps创建Android应用程序.
> iOS:编译为JavaScript,然后使用MobileChromeApps创建iOS应用程序.

原文地址:https://www.jb51.cc/android/431211.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐