《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。
相关文章
|
6月前
|
开发框架 前端开发 JavaScript
探索前端开发中的跨平台框架React Native
本文将介绍前端开发中一种备受关注的跨平台框架React Native,通过比较原生应用与React Native的优缺点,探讨其在实际项目中的应用以及未来发展趋势。
101 2
|
6月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
6月前
|
开发框架 Dart 前端开发
【Flutter前端技术开发专栏】Flutter与React Native的对比与选择
【4月更文挑战第30天】对比 Flutter(Dart,强类型,Google支持,快速热重载,高性能渲染)与 React Native(JavaScript,庞大生态,热重载,依赖原生渲染),文章讨论了开发语言、生态系统、性能、开发体验、学习曲线、社区支持及项目选择因素。两者各有优势,选择取决于项目需求、团队技能和长期维护考虑。参考文献包括官方文档和性能比较文章。
235 0
【Flutter前端技术开发专栏】Flutter与React Native的对比与选择
|
4月前
|
前端开发 JavaScript Android开发
React Native跨平台开发实战
【7月更文挑战第21天】React Native为跨平台移动应用开发提供了一种高效且强大的解决方案。通过本文的学习,你应该能够掌握React Native的基本概念和实战步骤,并开始在你的项目中使用React Native进行开发。随着你对React Native的深入理解,你将能够利用其强大的功能来构建更加复杂和高效的移动应用。
|
5月前
|
前端开发 自动驾驶 程序员
鸿蒙? 车载?Flutter? React Native? 为什么我劝你三思,说点不一样的
本文探讨了在信息技术快速发展的背景下,开发者如何选择学习路径。作者提倡使用终局思维来规划职业发展,考虑技术的长远影响。终局思维注重长远目标、系统分析、反向规划和动态调整。以车载开发为例,预测未来智能汽车可能由语音助手主导,而非依赖平板界面。此外,作者建议不要过分投入打工状态,应思考创建自己的产品,如App,以实现技能补充和额外收入。选择对未来发展和自主性有益的技术,如Kotlin,比盲目追求热点更为重要。做减法和有标准的选择,能帮助减轻焦虑,实现更高效的成长。关注公众号“AntDream”获取更多相关内容。
127 1
|
6月前
|
开发框架 移动开发 前端开发
【Uniapp 专栏】Uniapp 与 React Native 的对比分析
【5月更文挑战第14天】Uniapp和React Native是热门的跨平台移动开发框架。Uniapp以其一套代码多端运行、丰富的组件生态和较低的学习曲线受到青睐,适合快速开发简单应用。React Native基于React,拥有活跃社区和优秀性能,适合复杂应用。React Native在性能上略胜一筹,尤其在需要接近原生体验的场景。Uniapp的官方组件弥补了社区资源不足。选择时需考虑开发效率、性能需求、团队技术栈和社区支持。
1841 1
【Uniapp 专栏】Uniapp 与 React Native 的对比分析
|
5月前
|
开发框架 前端开发 JavaScript
移动应用开发中的跨平台策略:Flutter与React Native的比较
在移动应用领域,跨平台解决方案已成为开发者追求高效、成本效益和广泛覆盖的关键。本文深入探讨了两种领先的跨平台框架——Flutter和React Native,从技术架构、性能、社区生态及实际应用案例四个维度进行全面对比分析。通过这一比较,旨在为移动应用开发者提供选择合适框架的参考依据,帮助他们根据项目需求做出明智的决策。
|
5月前
|
前端开发 iOS开发 Android开发
React Native跨平台开发实战:从零到一
学习React Native跨平台开发,首先安装Node.js和React Native CLI,设置Android/iOS环境。使用CLI创建项目,如`npx react-native init MyProject`。运行应用:`npx react-native run-android`或`run-ios`。编写组件,如在App.js中创建Hello World。添加样式,安装第三方库如react-native-vector-icons,使用react-navigation进行路由和导航。
107 2
|
6月前
|
前端开发 JavaScript Android开发
使用React Native开发跨平台移动应用的技术详解
【5月更文挑战第22天】本文详述了使用React Native开发跨平台移动应用的技术,该框架由Facebook推出,基于JavaScript,支持iOS和Android。React Native通过JNI/JSI实现JavaScript到原生代码的转换,提供高效性能和原生体验。其优势包括跨平台性、原生体验、开发速度及社区支持。开发流程涉及环境搭建、项目创建、编码、调试与测试,以及构建与发布。注意事项包括性能优化、平台适配、利用第三方库和持续学习。React Native为开发者构建高质量跨平台应用提供了便捷途径,未来潜力无限。
|
5月前
|
Dart 前端开发 JavaScript
探索移动应用开发中的跨平台解决方案:Flutter与React Native的比较
在移动应用开发领域,选择合适的跨平台解决方案是关键。本文将深入分析Flutter和React Native这两大主流框架,从性能、开发效率、社区支持等方面进行比较,帮助开发者做出明智的选择。
71 0
下一篇
无影云桌面