React-native是什么?

来源:互联网 发布:linux jvm内存设置 编辑:程序博客网 时间:2024/05/29 19:21

开发React-native,需要的技术栈,真的不少。

你需要了解,react-native是什么?react-native开发所需的基础技术是什么?

react-native是什么?

我们知道,传统的开发分为前端开发(web开发),ios开发以及android开发。不同的开发你需要懂得不同的相关技术,如:开发android你就要懂java语言,开发ios你需要懂object-c,开发web网页你需要懂JavaScript。

react有一颗称霸世界的心,它所追求的就是:无论什么应用,我使用同一种语言(JavaScript),使用同一语法(react)来解决任何平台的开发问题。它要做到‘learn once,write anywhere’,注意:是write anywhere而不是run anywhere。意思是在不同的平台,写法上还是有差异的。

简而言之:就是react用来开发网页,react-native用来开发原生App。

react-native实现的原理是什么?

本质上,react-native实现的是一种转化,用它独特的方式,使用JavaScript语言,在内部进行解析,最终转换成原生应用的方式展现出来。至于具体如何转化的,个人觉得,没必要深究。

这样大家也就理解,为什么react-native环境搭建很麻烦了。因为你可能要涉及到android或者ios开发的一些开发环境问题。比如,打包集成一个android应用,你没有android开发环境是不行的。

react-native环境搭建问题

这里不会涉及具体怎么做的问题,但是会把一些为什么这样做的问题,呈现给大家。

因为react-native的开发,分为ios环境和android环境。但是开发平台有三种:windows、linux、mac。也就是对应当前不同的几种操作系统环境。

其中,react-native开发ios,必须在Mac上进行。开发Android应用,三种操作系统都行。

android环境

如果你要搭建一个Android应用的开发环境,jdk的安装和java_home的环境变量的配置是必须的。

jdk是什么?JAVA_HOME又是什么?

这你应该明白的一点就是java语言的实现上,它在内部实现很多功能的封装。举一个列子,使用jQuery的前提就是你要引入jQuery库才能开发web网页。而你要使用Java语言进行开发,那Jdk就是Java语言实现的基础库。

JAVA_HOME是设定的一个环境变量,你要设定这样的一个环境变量,让系统能知道,你的jdk到底放在哪里。

Android studio

java语言仅仅是开发android应用的一门语言而已,你还需要一个开发工具–android studio。它集成了开发android应用的模拟器以及Android SDK。在这里,同样的你需要设置一个ANDROID_HOME。

具体的环境搭建可以参考官网:http://reactnative.cn/docs/0.47/getting-started.html

ios环境

ios的环境搭建相对简单一点,除了基本的Node和yarn,react-native命令行工具,你还需要一个类似Android studio的工具,叫Xcode。

环境搭建完成,就可以开始一个react-native项目,构建一个react-native项目是从react-native命令行开始的。

react-native init AwesomeProject
cd AwesomeProject
react-native run-android

一般而言,作为android开发,在真机上运行你的react-native项目。个人在开发过程中是没有在android studio的虚拟机上调试的。只是把它当做一个查看log的工具。

ios开发,一般在Xcode上运行调试的。非常方便,强烈建议开发react-native的开发人员使用Mac进行开发。

//一个最简单的react-native界面:hello world!

import React, { Component } from 'react';import { AppRegistry,View,Text } from 'react-native';//class生成一个继承自Component的组件,叫App。class App extends Component{    render(){        return (           <Text>Hello world!</Text>                )    }}AppRegistry.registerComponent('App',()=>App);