2016年技术路径

引子

       人的命运啊,当然要靠自我奋斗,但有时有也要考虑历史的进程。在夜深人静的时候也会问自己,我一个 iOS 开发怎么就跑来写前端了?

       我作为一个 iOS 开发,在最近一年的时间里马不停蹄地学了 HTML、CSS、JavaScript、AngularJS ,然后在此基础上才有足够的知识储备去学习 Ionic 这个基于前端技术的混合开发框架。做了半年之后又发现公司项目的原生部分是基于 C# 写的,当时真是有日了动物园的感觉。后来不那么忙,就索性把 Xamarin 这个混合开发解决方案也撸了一把 。当然,学习这个之前,还是先去写了几天 C# 作为知识储备。所以这过去的一年,我基本上就跟混合开发卯上了。

       目前主流的混合开发解决方案我算是都有了解过,最有名的大概就是 Facebook 推出的 React Native :
使用 RN 的应用

国内阿里推出的 Weex
Weex 使用的是 Vue

豆瓣也推出了自己的混合开发解决方案 Rexxar
Rexxar 执行过程

       可能还有其他的解决方案,不过后面提到的三个, RNWeexRexxar 原理都大同小异,在原生层的基础上嵌入 UIWebView,通过各种 JavaScript 的配合完成与原生层的交互。总的来说,是比较传统意义上的混合开发,以原生层为基础,在上面迭代开发。但是一开始说的两个,IonicXamarin ,与上面提到的三个截然不同,属于两个极端。

       Ionic 作为一个完全基于前端技术的移动端跨平台解决方案,开发者几乎完全不需要写任何原生代码,表示层、业务逻辑层以及数据持久化层都是通过 HTMLCSSAngularJS 实现的,比较适合一些小型的、业务逻辑简单、对原生 API 依赖较少的项目。
Ionic是一种标签语言

       混合开发最让人担忧的可能就是性能问题了,上面提到的三种比较传统的混合开发在性能上虽然也不能与原生相匹敌,但是换取了更灵活的业务模式、更快速的开发效率、更多的代码复用、更便捷的 Bug 修复方式。而 Ionic 作为一个完全的异类,用于小型项目时性能基本上是可以匹敌原生的,但是一代的 UI 跟原生差距略大了,好在他们现在发布了二代,界面的展示效果有了些提升,不过他们把 AngularJS V1 换成了 V2,而 V2 版本,讲道理来说,相当于把 V1 重写了。LOL。所以又加大了学习成本。不过,话说 AngularJS V2 版本长得更像 ReactTypeScript 了。
AngularJS V1
AngularJS V2

       Xamarin作为一个完全基于 C# 的移动端跨平台解决方案,通过 Xamarin 你可以开发 iOS、Android、WP应用,同时可以复用大部分的代码。如果需要用到很多原生的 API,这个框架也可以满足,因为它丧心病狂地用 C# 重写了 iOS SDK 和 Android SDK 的全部代码!而且是所有在用版本!所以我觉得它的目标是另起炉找,取代 iOS 和 Android 原生开发,而不是像传统混合开发那样依附于原生的基础上存在。另外, Xamarin 也可以用来开发 Mac 应用 ,所以它不但适用于移动端,同样适用于桌面端。
Xamarin

       当然,除了求助于混合开发,也有人把目光转向了热更新,比如微信。微信 iOS 团队负责人 bang 开源了自己写的用于 iOS 的热更新方案 JSPatch ,这个项目在 GitHub 上目前已经接近 9000 Star 了。
JSPatch 核心功能简介

JSPatch 可以让你用 JavaScript 书写原生 iOS APP。只需在项目引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug。

       热更新是什么?它的概念类似于热插拔,让用户在不更新甚至不退出 App 的条件下,通过在后台更新代码达到修复 Bug 以及更新业务的目的。当然,这个也是通过 JS 完成的,不然也不叫 JSPatch 了。所以学好 JS 还是很有前途的,现在可能有几十种 JS 供你随便选择,要啥有啥,是不是很感动?


  转载请注明: 天空之城 2016年技术路径

 上一篇
Xamarin.iOS 初步体验 Xamarin.iOS 初步体验
       Xamarin.iOS 也写了一段时间了,文档看得头晕,Demo做了一些,发现这个东西还是不太靠谱。具体体现在以下几点: iOS Designer 使用
下一篇 
Sketch常用快捷键 Sketch常用快捷键
1.使用Insert快速插入 2.不同情形下的缩放组合键 缩放到100%:CMD+0 查看Artboard中所有的page:CMD+1 缩放特定的对象:选择对象后按 CMD+2 选中要查看的图层,按住CMD+3可以快速聚焦到改图层 3.左
  目录