分享会:如何成为一名优秀的软件开发工程师、React Native

软件开发工程师是当今社会的热门职业,各大IT企业和非IT企业,都有不同程度的软件工程师的需求。特别是在信息化速度加快的今天,软件开发工程师更是成为了一个高薪的岗位。那么,如何成为一名优秀的软件开发工程师?想要胜任这一高薪职业,我们应该具备什么样的素质呢?
根据调查,想要成为一名优秀的软件开发工程师,就必须具备以下能力:

— 知识储备 —

1

一个良好的态度

·主动
·认真
·负责

2

解决问题的能力

·思路
·自我钻研
·上网搜索
·寻求帮助

3

动手实践

多去阅读别人的代码。一个优秀的作家一定是读过万卷书的,同样,一个优秀的程序员也一定是大量的阅读过别人的代码,github是个好地方。

4

擅于总结

·总结开发问题,思考如何解决,并总结方案。
·总结项目问题,思考如何解决,并总结方案。

5

深入了解原理

对于软件工程师而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要自行制定一些需求。必须能够掌握不少于两到三种的项目设计方法,并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的整体设计。

6

持续学习

·关注行业动态
·翻看技术文档

7

身体健康、心情舒畅

·作息良好
·睡眠充足
·心情愉悦

— React Native —

React Native 诞生于 2015 年,名副其实的富二代,主要使命是为父出征,与 Apple 和 Google 抗衡,为开发者带去一套跨平台、动态更新的 Javascript 框架,口号是:Learn once, write anywhere:Build mobile apps with React。在试图推翻 Android 和 iOS 压制的同时,还提携了一把自家兄弟:React。

1

React Native

·React Native:基于React开发的App

·优点:跳过App Store审核,远程更新代码,提高迭代频率和效率,既有Native的体验,又保留React的开发效率。

·缺点:对于不熟悉前端开发的人员上手比较慢,不能真正意义上做到跨平台,使用后,对app体积增加。

·要想彻底搞明白,需要了解React Native底层实现原理,又来了,想知道原理,继续往下看。

2

React Native原理

·React Native原理其实跟Weex差不多,底层也会把React转换为原生API

·React Native和Weex区别在于跨平台上面,Weex只要写一套代码,React Native需要iOS,安卓都写,说明React Native底层解析原生API是分开实现的,iOS一套,安卓一套。

3

React Native是如何做到JS和OC交互

·iOS原生API有个JavaScriptCore框架,通过它就能实现JS和OC交互。

·首先写好JSX代码(React框架就是使用JSX语法)

·把JSX代码解析成javaScript代码

·OC读取JS文件

·把javaScript代码读取出来,利用JavaScriptCore执行

·javaScript代码返回一个数组,数组中会描述OC对象,OC对象的属性,OC对象所需要执行的方法,这样就能让这个对象设置属性,并且调用方法。

4

React NativeUI控件渲染流程(iOS)

·[RCTRootView runApplication:bridge] -> 通知JS运行App

·[RCTBatchedBridge _processResponse:json error:error] ->处理执行完JS代码(runApplication)返回的相应,包含需要添加多少子控件的信息。

·[RCTBatchedBridge batchDidComplete] ->批量桥架对象调用批量处理完成方法

·[RCTUIManager batchDidComplete] -> RCTUIManager调用批量处理完成的方法,就会开始去加载rootView的子控件。

·[RCTUIManager createView:viewName:rootTag:props] -> 通过JS执行OC代码,让UI管理者创建子控件View ,通过RCT_EXPORT_METHOD宏定义createView这个方法

·RCT_EXPORT_METHOD宏:会在JS中生成对应的OC方法,这样JS就能直接调用

·注意每创建一个UIView,就会创建一RCTShadowView,与UIView一一对应

·RCTShadowView:保存对应UIView的布局和子控件,管理UIView的加载

·[RCTUIManager _layoutAndMount] -> 布局RCTRootView和增加子控件

·[RCTUIManager setChildren:reactTags:] -> 给RCTRootView对应的RCTRootShadowView设置子控件

·[RCTRootShadowView insertReactSubview:view atIndex:index++] -> 遍历子控件数组,给RCTRootShadowView插入所有子控件

·[RCTShadowViewprocessUpdatedProperties:parentProperties:] -> 处理保存在RCTShadowView中属性,就会去布局RCTShadowView对应UIView的所有子控件

·[RCTView didUpdateReactSubviews] -> 给原生View添加子控件

·完成UI渲染

5

React Native事件处理流程(iOS)

·在创建RCTRootContentView的时候,内部会创建RCTTouchHandler
RCTTouchHandler:继承UIGestureRecognizer,也就是它就是一个手势,它会作为RCTRootContentView的手势,这样点击RCTRootContentView,就会触发RCTTouchHandler,RCTTouchHandler:内部实现了touchBegin等触摸方法,用来处理触摸事件。

·在创建RCTTouchHandler的时候,内部会创建RCTEventDispatcher
RCTEventDispatcher:用来把事件处理传递给JS的方法处理,也就是当UI界面产生事件,就会执行JS的代码处理。

·通过RCTRootContentView截获点击事
产生事件就会去触犯RCTRootContentView中的RCTTouchHandler对象。

·当产生事件的时候,会执行[RCTTouchHandler touchBegin]

·RCTTouchHandler的touch方法,会执行[RCTTouchHandler _updateAndDispatchTouches:eventName:]
内部会创建RCTTouchEvent事件对象

·[RCTEventDispatcher sendEvent:event] -> 让事件分发对象调用发送事件对象
内部会把事件保存到_eventQueue(事件队列中)

·[RCTEventDispatcher flushEventsQueue] -> 让事件分发对象冲刷事件队列,就是获取事件队列中所有事件执行

·[RCTEventDispatcher dispatchEvent:event] -> 遍历事件队列,一个一个分发事件
分发事件的本质:就是去执行JS的代码,相应事件。

·[RCTBatchedBridge enqueueJSCall:[[event class] moduleDotMethod] args:[event arguments]]; -> 让桥架对象调用JS处理事件

·这样就能完成把UI事件交给JS代码相应

END

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

推荐阅读更多精彩内容