图片 2

看 react native 源码 (1)

Posted by
  • 如何读取 js 文件渲染出组件
  • 如何读取 js 文件
  • js 运行在哪里
  • 原生和 js 是如何通讯的

跨平台一直是老生常谈的话题,cordova、ionic、react-native、weex、kotlin-native、flutter等跨平台框架的百花齐放,颇有一股推倒原生开发者的势头。(事实上更多是共存发展)看完本篇,相信你会对于当下跨平台移动开发的现状、实现原理、框架的选择等有更深入的理解

开始之间我们在想几个问题

全篇内容较多,需耐心食用!

这个东西 ZiInstanceManager 太重要了,贯穿我们整个项目。我们看一看
InstanceManager 包含什么吧。突然一看这是一个 1k
以上的类呀,我们得看一会儿。一步一步来吧。

2、Weex

没有死!阿里公开Weex技术架构,还开源了一大波组件。
2018年初的新闻可以看出,weex 的遭遇有点类似曾经的
Duddo(Dubbo因为内部竞争被阿里一度放弃维护),这波诈尸后 weex
被托管到了Apache,而github的 weexteam
如今也还保持着更新,希望后续能有多好的发展,拭目以待吧。

首先是怎么画上去的,

图片 1百花齐放

public abstract class ZiActivity extends AppCompatActivity { protected String getMainComponentName(){ return null; }}

目前移动端跨平台开发中,大致归纳为以下几种情况:

我们这里 ZiNativeHost
抽象类,这是大人物,我们需要花时间研究一下,说他关键是因为他帮助我们创建了一个
ZiInstanceManager 这是通过 ZiInstanceManagerBuilder 类构建出来的,

为什么我们需要跨平台开发?
本质上,跨平台开发是为了增加代码复用,减少开发者对多个平台差异适配的工作量,降低开发成本,提高业务专注的同时,提供比web更好的体验。嗯~通俗了说就是:省钱、偷懒

  • Set<ZiRootView> mAttachedRootViews包含了 RootView 集合,添加
    rootview 我们组件都会添加到 ZiRootView 下面
  • LifecycleState这是一个枚举列出了生命周期几种状态 before
    create->before resume-> resume

本篇主要以react-native、weex、flutter,结合资讯展望,深入聊聊当前跨平台移动开发的实现原理、现状与未来。至于为什么只讲它们,因为对比ionic、phoneGap,它们更于
“naive” (˶‾᷄ ⁻̫ ‾᷅˵)。

public enum LifecycleState { BEFORE_CREATE, BEFORE_RESUME, RESUMED,}

3、Flutter

Flutter 是 Google 跨平台移动UI框架,Dart作为谷歌的亲儿子在 Flutter
中使用,并且谷歌新操作系统 Fuchsia 支持 Dart,使用 Flutter
作为操作UI框架。这些集合到一起难免让你怀疑 Android
是否要被谷歌抛弃的想法。

或者如今先 Android 等平台上推广 Flutter 与
Dart,就是为了以后跟好的过渡到新系统上,毕竟开发者是操作系统的生命源泉之一。而
Java 与 JVM 或者可以被谷歌完全抛开。当然,目前看起来 Flutter
貌似还缺少一些语法糖,嵌套下来的代码有点不忍直视,或者到正式版之后,我们更能感受出它的美丽吧。

内容有点长,其实很多点并没有细致的展开说明,但是通过本文,对于移动端跨平台的现状与未来,希望可能给你带来一点帮助。

类型 链接
react-native https://github.com/CarGuo/GSYGithubApp
weex https://github.com/CarGuo/GSYGithubAppWeex
Flutter https://github.com/CarGuo/GSYGithubAppFlutter
  • 从Android到React Native开发

  • 从Android到React Native开发(二、通信与模块实现)

  • 从Android到React Native开发(三、自定义原生控件支持)

  • 从Android到React Native开发(四、打包流程和发布为Maven库)

  • Weex原理之带你去蹲坑

图片 2撸文真的好累

每一个模块会建立一个线程,

类型 链接
react-native https://github.com/CarGuo/GSYGithubApp
weex https://github.com/CarGuo/GSYGithubAppWeex
Flutter https://github.com/CarGuo/GSYGithubAppFlutter

然后就是我们应用了

  • react nativeweex均使用JavaScript作为编程语言,目前JavaScript在跨平台开发中,可谓占据半壁江山,大有“一统天下”的趋势。

  • kotlin-native开始支持 iOS 和 Web
    开发,(kotlin已经成为android的一级语言)也想尝试“一统天下”。

  • flutter是Google跨平台移动UI框架,Dart作为谷歌的亲儿子,毫无疑问Dart成为flutter的编程语言,如下图,作为巨头新生儿,在flutter官网也可以看出,flutter同样“心怀天下”。

最近时间感觉 Android 开发成本还是挺高的,尤其还得开发
iOS版本,所以最近这里 Zi = React 了,react native
已经对我们不那么陌生了,Facebook
给我们带来的全新混合开发移动的用户体验。之前自己简单写了混编框架,感觉还不错,当然是和自己比。所以最近对混编框架产生了浓厚兴趣,插一句对于前端学习
c++
变得至关重要。自己学过一段,不过只是皮毛。好回到正题,所以最近开始学习
react native 框架,写了几个小 Demo 感觉开发体验不错,以前写过 react
.p。写着写着就下道了,大胆地想看看内部机制。好看源码,我是一个想法很多的人。

超完整跨平台开源项目

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注