• Stars
    star
    1,457
  • Rank 32,287 (Top 0.7 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 5 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

CRN是Ctrip React Native简称,由携程无线平台研发团队基于React Native框架优化,定制成稳定性和性能更佳、也更适合业务场景的跨平台开发框架。

CRN

CRN是Ctrip React Native简称,由携程无线平台研发团队基于React Native框架优化,定制成稳定性和性能更佳、也更适合业务场景的的跨平台开发框架。

本次开源基于ReactNative 0.59.0, react 16.8.3版本, 开源的主要是性能优化部分, 也是规模化使用RN进行业务开发必须要做的优化。

一、 功能列表

  • 打包支持框架和业务代码拆分
  • 支持框架代码后台预加载
  • 打包支持增量编译(同一模块,两次打包模块ID不变)
  • iOS&Android统一一套打包产物
  • 首屏加载性能统计
  • LazyRequire

二、 如何运行

开源代码中的iOS/Android Demo工程可以运行起来,参考以下操作步骤。

  1. RN运行环境搭建,参考官方文档
  2. 进入iOS目录,使用xcode打开./iOS/CRNDemo/CRNDemo.xcodeproj工程,运行
  3. 进入Android目录,使用Android Studio导入./Android工程,Run

三、 CRN性能数据

以Demo工程为例,运行RN官方tester项目。分别在iPhone 7Plus、iPhone 6、Samsung S6 Edge+手机上测试页面的首屏加载时间,对比图如下。

可见CRN优化后的页面首屏加载时间与优化前RN官方的方式相比在iOS上减少了50%左右,Android上减少了60%左右,优化效果明显。

四、 对官方RN的修改

CRN是基于ReactNative定制的,我们对其Runtime、CLI工具代码,都有调整。 主要改动点包括:

  • 支持拆分之后的包运行, 针对CRN打包格式的nativeRequire实现
  • 增强稳定性,主要是Android平台, 大量的异常处理和保护
  • 跨平台共享一份代码、资源, CRN-CLI内部实现

有兴趣的同学可以研究我们的改造点,具体改造点我们都有相应的注释:

  • iOS - 在iOS目录搜索CRN_OPT宏
  • Android - 在Android目录搜索注释'CRN BEGIN'和'CRN END'
  • CLI - 在packages/crn-cli目录搜索'CRN BEGIN'和'CRN END'

五、 CRN-CLI的使用

以上是开源代码的的工程结构及DEMO运行效果,实际开发过程中,不需要关注这些细节,我们可以直接使用CRN-CLI脚手架进行开发调试和打包。

为了方便使用,我们将该开源的CRN-CLI工具发布到了npmjs.com,安装之后可以直接使用,具体使用参考详情

六、 如何接入

为了方便接入,需首先安装crn-cli, 执行 npm install -g crn-cli 即可

1. 全新工程接入

  • crn-cli init <project-name> 初始化工程,里面包含iOS、Android、JS代码
  • crn-cli run-ios , crn-cli run-android 运行RN工程,进行开发调试
  • crn-cli pack 打包,并将打包产物拷贝到Native工程的webapp目录

2. 现有工程接入

  • JS代码部分

    只需在现有JS入口模块文件如index.js中添加一行模块导出代码即可,示例如下:

//index.js
AppRegistry.registerComponent(appName, () => App);
module.exports = App; //添加此行代码,导出入口模块即可

七、 其它

License

CRN is MIT licensed, as found in the LICENSE file.

More Repositories

1

C-OCR

C-OCR是携程自研的OCR项目,主要包括身份证、护照、火车票、签证等旅游相关证件、材料的识别。 项目包含4个部分,拒识、检测、识别、后处理。
Java
2,373
star
2

x-pipe

X-Pipe是由携程框架部门研发的Redis多数据中心复制管理系统。基于Redis的Master-Slave复制协议,实现低延时、高可用的Redis多数据中心、跨公网数据复制,并且提供一键机房切换,复制监控、异常报警等功能。开源版本和携程内部生产环境版本一致。
Java
2,001
star
3

dal

Ctrip Database Access Layer
Java
1,246
star
4

flybirds

基于自然语言的,跨端跨框架 BDD UI 自动化测试方案,BDD testing, Python style, Present by Trip Flight
Python
844
star
5

moles-packer

moles-packer 是由携程框架团队研发的,与携程moles框架配套使用的React Native 打包和拆包工具,同时支持原生的 React Native 项目。
JavaScript
721
star
6

wean

🍀 Super fast miniapp compiler.
JavaScript
390
star
7

tars

携程下一代发布系统
JavaScript
365
star
8

vi

帮助了解和控制应用
Java
269
star
9

SQLlin

A DSL ORM library for Kotlin Multiplatform.
C
218
star
10

tripdocs

TripDocsSDK是基于携程内部在线文档编辑器内核,提炼的一款通用的,现代的、稳定的、支持协同的、可用于生产环境的在线文档编辑器
TypeScript
159
star
11

dataworks-zeus

Ctrip Hadoop Job Scheduling System derived from https://github.com/alibaba/zeus
Java
153
star
12

nephele

Image Service
Go
145
star
13

mmkv-kotlin

A Kotlin Multiplatform porting for MMKV.
Kotlin
130
star
14

drc

Java
127
star
15

hermes

Message Queue Solution at Ctrip.com
Java
85
star
16

cat.net

.Net Client of CAT
C#
69
star
17

zeus

Soft Load Balancer at ctrip.com
JavaScript
55
star
18

kbear

Enterprise Kafka Solution
Java
51
star
19

artemis

artemis
Java
41
star
20

caravan

Caravan
Java
34
star
21

cat.js

Javascript client of CAT
JavaScript
29
star
22

ghost

A set of go tools with simple construction and powerful features.
Go
18
star
23

xredis-crdt

C
11
star
24

caravan.net

caravan.net
C#
9
star
25

crdt-module

C
8
star
26

chystrix.net

chystrix.net
C#
7
star
27

homer

Go
6
star
28

TripLink

TripLink
Java
5
star
29

artemis.net

artemis.net
C#
4
star
30

hermes.js

hermes client for javascript
4
star
31

kvrocks

kvrocks
2
star
32

venus

Dependency Injection Framework for .NET
1
star
33

ares-ceph

1
star
34

react-native-cba

react-native-cba
1
star