《React Native移动开发实战》一一1.2 React Native的特点

简介: 本节书摘来自华章出版社《React Native移动开发实战》一 书中的第1章,第1.2节,作者:袁林 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 React Native的特点
  那么,作为跨平台应用开发的“新贵”,React Native相比其他跨平台技术到底有哪些优势呢?
1.2.1 其一:Learn Once, Write Anywhere
  这句话是React Native官网(http://facebook.github.io/react-native/)对React Native的概述,简单明了地概括了React Native的最大特点和优点。
  只需要学习React Native这一种开发方式(包括平台、语言和开发环境等)就可以开发多个不同平台的App。
  这句话简单来说就是Learn Once, Write Anywhere,这也是React Native的宣传广告,如图1.6所示。
image

图1.6 Learn Once, Write Anythere宣传广告
?小知识:除了React Native提出的Learn Once,Write Anywhere的口号,Java语言也提出过类似的口号Write Once,Run Anywhere,两者看起来类似,但其实是完全不同的。React Native就像上面介绍的,降低的是学习成本,针对不同平台可能还需要单独开发;而Java语言的意思是只需要开发一次,就可以成功运行在不同的平台和设备上。
  目前,React Native对iOS、Android平台的支持已经非常好了,在不远的将来,应该还会支持Windows、Tizen等更多的移动平台。
  而且,React Native的大多数组件也是可以在多个平台复用的,所以学习了React Native开发之后,完全可以胜任多个平台的开发任务且不需要很高的额外学习成本,大大降低了开发成本。
1.2.2 其二:简单易学的开发语言
  React Native开发是基于JavaScript语言的,虽然JavaScript也是一门灵活、强大且复杂的语言,但是对于新人来说,上手速度相比Objective-C或Java等还是要快得多。而且,由于JavaScript严格模式的使用以及ECMAScript 2015(下文简称ES 6)标准的推出,JavaScript被人诟病的各种语言问题也大大减少。
  不仅如此,Facebook为了进一步提高代码可读性和开发效率,还扩展出了JSX语法,即一种可以在JavaScript代码中直接书写HTML标签的语法糖。
  例如,一个典型的React Native项目的JavaScript代码看起来是这样的:

01    export default class ch02 extends Component { // 每个页面可以理解成一个组件
02        render() {                                   // 渲染页面的函数
03            return (
04                <View style={styles.container}>  // 页面根View
05                    <Text style={styles.welcome}>
06                        Welcome to React Native!
07                    </Text>
08                    <Text style={styles.instructions}>
09                        To get started, edit index.ios.js
10                    </Text>
11                    <Text style={styles.instructions}>
12                         Press Cmd+R to reload,{'\n'}
13                        Cmd+D or shake for dev menu
14                    </Text>
15                </View>
16             );
17        }
16    }

  
  除了开发语言使用JavaScript之外,在React Native开发中,样式和布局的技术相比原生平台也是比较简单的。
  React Native的样式使用了类似CSS的规范,只是根据JavaScript的语法要求将命名方式改成了“驼峰命名法”,例如,Web开发中的background-color要写成backgroundColor。
  React Native的布局使用了Flexbox布局方式,Flexbox是Flexible Box的缩写,又称“弹性盒子布局”。Flexbox布局不仅使用简单,最大的优势还在于提供了自适应显示设备和屏幕大小的能力,从而可以很好解决iOS、Android等屏幕适配问题。
  例如,一个典型的React Native项目中的样式和布局代码看起来是这样的:
  
01 const styles = StyleSheet.create({
02 container: { // 页面根View的样式
03 flex: 1,
04 justifyContent: 'center',
05 alignItems: 'center',
06 backgroundColor: '#F5FCFF'
07 },
08 welcome: { // “欢迎”文本的样式
09 fontSize: 20,
10 textAlign: 'center',
12 margin: 10
12 },
13 instructions: { // “说明”文本的样式
14 textAlign: 'center',
15 color: '#333333',
16 marginBottom: 5
17 }
18 });
?提示:关于JSX和Flexbox布局的更多介绍,可以参考本书第2章的内容。
1.2.3 其三:接近原生应用的性能和体验
  对于React Native上述的两个优点,混合应用开发的方式其实也都有,但是,混合应用开发的方式在实际开发中却存在性能和体验不佳的先天不足(其原理是在移动浏览器里嵌入HTML页面,导致原生平台的性能优势无法充分发挥出来)。
  混合应用开发方式从PhoneGap发展到Apache Cordova,而且衍生的Ionic也都在不断强调和优化性能,但是现阶段,在移动浏览器中嵌入HTML页面的运行效率,仍然无法和原生应用相媲美。
  而React Native虽然使用的是类似混合应用开发的语言,但是其实现机制却完全不同:React Native的底层仍然是基于原生平台的!所以,React Native在性能和体验上与原生应用几乎没有太大差别,用户很难区分所使用的App到底是原生开发的还是React Native开发的。
1.2.4 其四:完善的生态系统
  生态系统是衡量一个开发平台成熟度的重要标志,所以开发者在选择任何开发平台时,很有必要了解该平台的生态状况。
  React Native有着非常庞大的开发者社区和很高的活跃度,这点从React Native在Github上线第一天5000多颗星,截至2017年1月4日40000多颗星、9000多次Fork以及9000多次提交就可以看出,如图1.7所示。
image

图1.7 React Native项目在Github上的关注度和贡献
  Google Trends(https://www.google.com/trends/explore?date=today%2012-m&q=ios%20 development,android%20development,react%20native)也反映出了React Native开发的趋势和热度,如图1.8所示。
image

图1.8 Google Trends上React Native的趋势和热度
  同时,Facebook也在大力支持和推广React Native,并推出了官方的调试工具React Developer Tools(https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgof adopljbjfkapdkoienihi)和开发工具Nuclide(https://nuclide.io/),如图1.9所示。
image

图1.9 Facebook推出的React Native开发工具Nuclide
  另外,网络上还有大量优秀的开源项目可供学习和参考,例如:

  • React Native开源库检索网站JS.coach(https://js.coach/react-native)。
  • React Native学习资源汇总项目awesome-react-native(https://github.com/jondot/ awesome-react-native)。
      总之,在学习和开发React Native的路上,不仅有本书可以参考,还有非常多的资源和帮助,借用一首歌名来说:You will never walk alone。
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
探索前端开发中的跨平台框架React Native
本文将介绍前端开发中一种备受关注的跨平台框架React Native,通过比较原生应用与React Native的优缺点,探讨其在实际项目中的应用以及未来发展趋势。
|
2月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
3月前
|
前端开发 JavaScript Android开发
跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制
跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制
|
2月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
2月前
|
前端开发 IDE 小程序
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
34 0
|
3月前
|
移动开发 前端开发 JavaScript
探究移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动端混合开发技术在移动应用开发领域日益流行,为开发者提供了更高效的跨平台开发方案。本文将比较三种主流混合开发技术:React Native、Weex和Flutter,从性能、生态系统和开发体验等方面进行评估,以帮助开发者在选择适合自己项目的技术时做出明智的决策。
|
3月前
|
移动开发 前端开发 weex
React Native、Weex、Flutter 混合开发技术的比较与选择
移动应用已经成为人们日常生活中不可或缺的一部分,而混合开发技术也随之崛起并逐渐成为主流。本文将比较 React Native、Weex 和 Flutter 三种混合开发技术,并探讨它们各自的优缺点,以及如何根据项目需求做出选择。
54 1
|
3月前
|
开发框架 Dart 前端开发
Flutter vs React Native:跨平台移动应用开发的终极对决
随着移动应用的普及,跨平台移动应用开发成为了一种趋势。Flutter和React Native是当前最受欢迎的跨平台开发框架之一,但它们各自有着不同的特点和优势。本文将对Flutter和React Native进行全方位比较,以帮助开发者了解两个框架的差异,从而选择适合自己的开发工具。
42 3
|
3月前
|
开发框架 前端开发 JavaScript
react native是什么,怎么用
react native是什么,怎么用
44 0
|
3月前
|
移动开发 前端开发 weex
移动端混合开发技术:React Native、Weex、Flutter 之争
在移动应用开发领域,React Native、Weex 和 Flutter 是备受关注的混合开发技术。本文将对它们进行全面比较与评估,以帮助开发者做出明智的选择。我们将从开发生态、性能、跨平台能力和易用性等方面进行比较,为读者提供全面的参考和指导。