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

android– 关于跨平台项目中的网络语言互 *** 作性的问题,第1张

概述我计划在iOS,Android和AngularJS网站上创建一个应用程序.但是,由于不必在每个应用程序上重写业务代码,我希望尽可能多地重用代码.为了能够在任何平台上执行项目的核心,我必须使用Web语言.通过不同的文章,我计划一个通用的架构来分离项目的业务逻辑 - 核心 - 与将为每个系统重新实现的UI(UIKit for iOS,AngularJS和Poly

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

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

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

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

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

>每个功能都将在模块中分解.
>核心:业务逻辑代码 – 可在每个平台上重复使用 – 将以库的形式表示.
>视图:将在每个不同平台上开发视图类,以使用每个平台上提出的不同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应用程序.@H_403_81@ 总结

以上是内存溢出为你收集整理的android – 关于跨平台项目中的网络语言互 *** 作性的问题全部内容,希望文章能够帮你解决android – 关于跨平台项目中的网络语言互 *** 作性的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1140590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存