平安金融科技移动技术周报(第二十四期)
本期导读:本期原创专题带来 zepto 点击穿透现象的介绍和 React Native 系列教程第二弹;Android 和 iOS 篇依然带来几篇常规的话题文章,例如 MVVM,APP 瘦身,UI 架构的讨论等;React Native 篇内容比较多,既有基本的教程,也有性能优化,更有源码的解读和工程实践。最后的技术纵横篇可以重点关注吴恩达和刘慈欣的对话。
1)移动端click延迟及zepto的穿透现象 @严晓娥(运营服务组)
本文介绍了移动端 click 的延迟解决方法,以及 zepto 的点击穿透现象。
React Native 发布一年多了,有不少公司已经在线上产品中或小范围试水,或大范围应用,很多公司或开发者都在为 React Native 的生态系统作出自己的贡献。React Native 的开发基本上是 Javascript + 系统原生开发语言(Java,Objective-C,Swift),原生语言的开发所用的 IDE 没有多余的选择,Android 平台只能使用 Android Studio(不要告诉我你还在使用 Eclipse),iOS 平台只能使用 XCode,而开发 Javascript 的 IDE 选择就多了,本文就来介绍 React Native 开发中最常用的五款 IDE 的配置和选型。
Databinding 是一种框架,MVVM是一种模式,两者的概念是不一样的。我的理解DataBinding是一个实现数据和UI绑定的框架,只是一个实现MVVM模式的工具。ViewModel和View可以通过DataBinding来实现单向绑定和双向绑定,这套UI和数据之间的动态监听和动态更新的框架Google已经帮我们做好了。在MVVM模式中ViewModel和View是用绑定关系来实现的,所以有了DataBinding 使我们构建Android MVVM 应用程序成为可能。
当架构规划的结果,整理出一堆不同优先级的需求,尤其是质量需求之后,接下来就要思考如何才能最大限度地实现这些需求,这就是架构设计要解决的问题。那么,如何进行架构设计呢?设计到什么程度才合适呢?我从架构思维和架构原则方面来思考架构设计的问题。
Android对于底部弹窗已经在23.2新的实现方式, 即BottomSheet. 然而对于低版本, 我们仍需使用DialogFragment. 底部弹窗与普通Dialog不同, 需要紧贴应用下部, 但本质仍是一个Fragment, 通过继承DialogFragment类, 定制不同样式的Fragment。
一句话概括,OkHttpUtils一个专注于让网络请求更简单的网络请求框架,对于任何形式的网络请求只需要一行代码。
5)App瘦身不只是一个传说 @Mikhail Nakhimovich
在上一篇文章中,我们探究了一套能保证近乎完美的 APP 启动体验的架构/第三方库的选择。今天我想探究另一种性能优化:APK 的大小。更小的 APK 会带来更快的资源查找和反射调用。图片优化是一种重要的 APK 瘦身手段,能减少更多的掉帧现象。而且用户通常更喜欢更小的 APP,因为它们需要下载的数据更小,安装占用的空间也更小。
1)RAC 核心元素与信号流 @godyZ
ReactiveCocoa是一个函数响应式编程框架,它能让我们脱离Cocoa API的束缚,给我们提供另外一套编码的思路与可能性,它能在宏观层面上提升代码易读性与稳定性,让程序员写出富有诗意的代码,因此备受业内推崇。本文略过RAC基本概念与基础使用,着重介绍RAC数据流方面的内容,剖析RAC核心元素与RAC Operation在数据流中扮演的角色,并从数据流的角度切入,介绍RACComand与RACChannel。
触控是移动设备的核心功能,也移动应用交互的基础,Android 和 iOS 各自都有完善的触摸事件处理机制。React Native(以下简称 RN)提供了一套统一的处理方式,能够方便的处理界面中组件的触摸事件、用户手势等。本文尝试介绍 RN 中触摸事件处理。
2)一文掌握JavaScript生态圈现状 @Bonnie Eisenman
如果你以前有编程经验,但是一名前端JavaScript开发的初学者,那么一系列的术语和工具容易引起混淆。本文中,我们不会纠缠于细节的讨论,而是会纵览当前的“JavaScript生态圈”。这应该足够你找准方向,开启前端开发之旅。
3)深入到源码:解读 redux 的设计思路与用法 @jade
redux 是 facebook 提出的 flux 架构的一种优秀实现;而且不局限于为 react 提供数据状态处理。它是零依赖的,可以配合其他任何框架或者类库一起使用。要想配合 react ,还得引入 react-redux。redux 团队的野心比较大,并不想让 redux 局限于 react 生态链中的一环。他们让 redux 自身保持简洁以便适配各种场景,让社区发展出各种 redux-* 中间件或者插件,从而形成它自己的生态系统。
4)React 应用的性能优化之路 @Alex Reardon
React 应用主要的性能问题在于多余的处理和组件的 DOM 比对。为了避免这些性能陷阱,你应该尽可能的在 shouldComponentUpdate 中返回 false 。简而言之,归结于如下两点:
- 加速 shouldComponentUpdate 的检查
- 简化 shouldComponentUpdate 的检查
JavaScript作为一种脚本语言身份的存在,因此被很多人认为是简单易学的。然而情况恰恰相反,JavaScript支持函数式编程、闭包、基于原型的继承等高级功能。由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。JavaScript中函数的调用有以下几种方式:作为对象方法调用,作为函数调用,作为构造函数调用,和使用 apply 或 call 调用。本文就采撷些例子以浅显说明在不同调用方式下的不同含义。
因为支持用javascript开发原生应用,ReactNative一推出就受到不少公司热捧,各家都跃跃欲试。但有一个痛点是,在移动端,我们是否有必要开发多套程序:iOS、Android和H5?本次将通过对Moles框架的分享,介绍携程在React Native方面的实战干货,希望给大家一些灵感和启发。
React Native是现在移动开发新的可选方案,也带来了原属于Web领域的React的优秀开发特性。另一方面,React Native的技术栈一经掌握,可以用于iOS、Android及Windows(见此)多个平台,即所说的“learn once, write anywhere”。这篇文章是对 React Native 植入原生 Android 应用的流程的详细介绍。
1)浅谈技术领导力 @余晟
“领导”和“管理”是不同的,两者的区别虽然已经有很多的讨论,仍然有很多人搞不清楚,所以有必要在这里强调。“管理”通常描述的是为着某个特定目的来进行周密的组织安排,而“领导”的目的更加抽象,手段也更加多样。如果你去看过工厂的生产线就会深刻体会到,把工作拆分到岗位,给每个岗位定下操作规程,再把人落实到岗位,这就是“组织”。与此相反,带领一群人用创造性的方案高质量地解决问题,并且让团队和个人得到成长,这就是“领导”。
2)Git 分支管理最佳实践 @成富
Git 是目前最流行的源代码管理工具。熟练使用 Git 已经成为开发人员的必修课之一。对于团队开发来说,如何有效的使用 Git 的分支是一个重要的课题。需要在新功能开发,新版本发布和已有版本的维护等需求中达到一个良好的平衡。另外还需要与持续集成服务有良好的集成。本文对几种主流的 Git 分支管理实践进行了介绍,可以帮助开发团队选择自己最合适的方案。
3)从科学到科幻,吴恩达对话刘慈欣 @iCombinator
百度近期推出了凡尔纳计划,旨在邀请很多有趣的人,比如说让科学家和科幻作家之间有一个更好的对话,通过碰撞,让科技更具想象力,将曾经只存在于科幻作品中的未来科技变成现实。首次活动邀请到了百度首席科学家吴恩达和著名的科幻作家、《三体》作者刘慈欣来畅谈人工智能。机器之心在对话现场进行了采访报道。
欢迎关注我们团队的技术公众号