现在一个应用需要有IOS,Android,webapp(通过phonegap等打包工具可变成app),这个是最基本的,有可能还需要微信端等等。现在国内有一些工具,比如:wex5,appcan,apicloud,HBuilder等等这些工具说是可以开发多端应用,在这么多工具之中我们应该如何选择呢?如果不使用这些工具用h5开发多端应用是否有更好的选择呢?比如:react native,可能后续vue也会出一个类似react native的解决方案。请了解的童鞋分析一下各种方案利弊或者你们有更好的选择求分享。
Web本身就是跨平台的,这意味着这中间存在着无限的可能性。
我是一名Web Developer,对于我来能用Web开发的事情就用Web来完成就好了——不需要编译,不需要等它编译完。我想到哪我就可以写到哪,我改到哪我就可以发生哪发生了变化。
最近我在写Growth——一个帮助开发人员成长的应用,在近一个月的业余时间里,完成了这个应用的:
截图合并如下:
而更重要的是它们使用了同一份代码——除了对特定设备进行一些处理就没有其他修改。相信全栈的你已经看出来了:
Web = Chrome Angular.js Ionic
Desktop = Electron Angular.js Ionic
Mobile = Cordova Angular.js Ionic
除了前面的WebView不一样,后面都是Angular.js Ionic。
从Web到混合应用,再到桌面应用在最打开的时候它只是一个单纯的混合应用,我想总结一下我的学习经验,分享一下学习的心得,如:
接着我用Ionic创建了这个应用,这是一个再普通不过的过程。在这个过程里,我一直使用Chrome在调度我的代码。因为我是Android用户,我有Google Play的账号,便发布了Android版本。这时候遇到了一个问题,我并没有Apple Developer账号(现在在申请ing。。),而主要的用户对象程序员,这是一群不土的土豪。
偶然间我才想到,我只要上传Web版本的代码就可以暂时性实现这个需求了。接着找了个AWS S3的插件,直接上传到了AWS S3上托管成静态文件服务。
几天前在Github上收到一个issue——关于创造桌面版, 我便想着这也是可能的,我只需要写一个启动脚本和编译脚本即可。
所以,最后我们的流程图就如下所示:
除了显示到VR设备上,好像什么也不缺了。并且在我之前的文章《Oculus Node.js Three.js 打造VR世界》,也展示了Web在VR世界的可能性。
在这实现期间有几个点可以分享一下:
响应式设计可以主要依赖于Media Query,而响应式设计主要要追随的一点是不同的设备不同的显示,如:
这也意味着,我们需要对不同的设备进行一些处理,如在大的屏幕下,我们需要展示菜单:
而这可以依赖于Ionic的expose-aside-when="large",而并非所有的情形都是这么简单的。如我最近遇到的问题就是图片缩放的问题,之前的图片针对的都是手机版——经过了一定的缩放。
这时在桌面应用上就会出现问题,就需要限定大小等等。
而这个问题相比于平台特定问题则更容易解决。
平台特定代码对于特定平台才有的问题就不是一件容易解决的事,分享一下:
存储我遇到的第一个问题是数据存储的问题。最开始的时候,我只需要开始混合应用。因此我可以用Preferences、或者SQLite来存储数据。
后来,我扩展到了Web版,我只好用LocalStoarge。于是,我就开始抽象出一个$storageServices来做相应的事。接着遇到一系列的问题,我舍弃了原有的方案,直接使用LocalStoarge。
数据分析为了开发方便,我使用Google Analytics来分析用户的行为——毕竟数据对我来说也不是特别重要,只要可以看到有人使用就可以了。
这时候遇到的一个问题是,我不需要记录Web用户的行为,但是我希望可以看到有这样的请求发出。于是对于Web用户来说,只需要:
<code class="language-text"> trackView: function (view) {
console.log(view);
}
</code>
Ionic LeanCloud; react 方面暂时没有能够像 ionic 提供这么充足的满足移动场景的框架体系
wex5,appcan,apicloud,HBuilder等等这些工具确实是都在推广一次开发多端运行,不过宣传是宣传,具体操作也都有自己非常明显的优缺点,在这里简单的说一下(谨代表个人观点,不喜勿喷)