2016年技术路径

引子

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

       我作为一个 iOS 开发,在最近一年的时间里马不停蹄地学了 HTMLCSSJavaScriptAngularJS ,然后在此基础上才有足够的知识储备去学习 Ionic 这个基于前端技术的混合开发框架。做了半年之后又发现公司项目的原生部分是基于 C# 写的,当时真是有日了动物园的感觉。后来不那么忙,就索性把 Xamarin 这个用 C# 写的混合开发解决方案也撸了一把 。当然,学习这个之前,还是要先去写了几天 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 重写了。哈哈哈。所以又加大了学习成本。不过,话说 AngularJS V2 版本长得更像 ReactTypeScript 了。

AngularJS V1
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 的应用

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,401评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 生活中只要互动就有博弈。 如何运用博弈心理学做出更有效处理各项决策。 1.幼犬效应 在做并不是清楚一件事情的情况下...
    飘渺_d65f阅读 179评论 0 0
  • 在制作「标准化作业流程」的时候,总会发现有一些很难归类或是很多类别当中都需要具备的、防止的、注意的事项。不写下来好...
    周明达老师阅读 490评论 0 2
  • 今天是大年初四,外面下起了雪。感觉很冷。 今天一个上午去了五家亲戚家拜年,匆匆忙忙的把礼物送去,就...
    静姝__阅读 209评论 0 1