• Android开发学习之路--React-Native之初体验


      近段时间业余在学node.js,租了个阿里云准备搭建后端,想用node.js,偶尔得知react-native可以在不同平台跑,js在iOS和android上都可以运行ok,今天就简单学习下react-native。(这里的开发环境是mac,windows和linux可能会有所不同,而且跑ios也需要mac的)。


    安装react-native

      首先是安装react-native了,这里首先是已经安装好了node,并且也安装好了npm了,关于node和npm就只能google了,不过之后我也会在web开发中介绍,暂时没有这么多时间总结了。好了,言归正传执行如下命令:

    sudo npm install -g react-native-cli

      等待一段时间安装好了之后,会有react-native的命令,可能PATH没有设置,会出现不了这个命令。首先查看下/usr/local/bin下会有react-native的命令如下:

    ll /usr/local/bin
    total 47064
    -rwxr-xr-x  1 jared  admin   656B  3 28 17:38 brew
    -rwxr-xr-x  1 root   wheel   290K  3  6  2015 ctags
    -rwxrwxr-x  1 root   wheel    23M  3  9 10:52 node
    lrwxr-xr-x  1 502    staff    38B  3 14 14:21 npm -> ../lib/node_modules/npm/bin/npm-cli.js
    lrwxr-xr-x  1 root   admin    45B  5  8 10:21 react-native -> ../lib/node_modules/react-native-cli/index.js
    -rwxr-xr-x  1 root   wheel   2.2K  2 27  2015 wstorm

       继续查看PATH路径有没有包含这个路径:

    echo $PATH
    /usr/local/Cellar/git/2.7.4/bin:/usr/local/bin:/usr/local/sbin:/Users/jared/.gradle/bin:/Users/jared/Desktop/jared/software/sdk/platform-tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

       因为我的配置里面有,所以就可以直接使用了,如果没有就在.bash_profile中添加了。好了,既然命令有了,那么就执行react-native init AwesomeProject,这里的AwesomeProject指的是你的工程名字,也可以定义为HelloWorld。

    react-native init AwesomeProject
    This will walk you through creating a new React Native project in /Users/jared/Documents/workspace/react-native/AwesomeProject
    Installing react-native package from npm...

       等待一段时间,等获取React Native的源代码和依赖包之后在相应的目录下会生成如下目录和文件:

    ->AwesomeProject ls
    android          index.ios.js     node_modules
    index.android.js ios              package.json

      期中andorid目录就是android项目的工程,ios目录就是iOS项目工程,node_modules是react native的源代码和依赖包,index.ios.js是iOS的相关js的代码,index.android.js是android的相关的js代码,package.json是包的管理。


    运行react-native

      既然都准备了,那么就运行下看下效果了。
      首先是iOS,打开xcode,打开上述ios目录的工程,运行后在模拟器中得到如下:

      因为iOS用的是模拟器,所以不需要改ip地址了,直接使用localhost了,接着就是andoird了,因为用的真机,所以这里修改下ip地址如下图:

      接着运行android,然后reload js如下图:

    react-native代码解析

      既然两个平台都运行ok了,那么接下去就可以修改js代码来看看效果了,先看下源代码吧,这里就分析下android了,因为ios的也是一样的:

    class AwesomeProject extends Component {
      render() {
        return (
          <View style={styles.container}>
            <Text style={styles.welcome}>
              Welcome to React Native!
            </Text>
            <Text style={styles.instructions}>
              To get started, edit index.android.js
            </Text>
            <Text style={styles.instructions}>
              Shake or press menu button for dev menu
            </Text>
          </View>
        );
      }
    }

      主要代码如上所示,这里AwesomeProject继承了Component,然后可以看到主要在屏幕上显示的代码就是View,这里的View由三个Text组成,每个Text都有他对应的style和content,这也就是上述运行后的图中为什么是居中,还有颜色大小了,具体如下的样式:

    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
      },
      welcome: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10,
      },
      instructions: {
        textAlign: 'center',
        color: '#333333',
        marginBottom: 5,
      },
    });

      既然我们基本了解了代码,那么就可以试着做一点点修改,添加一行文字,并且把背景色修改如下,

        <Text style={styles.instructions}>
          I am studying the React Native!
        </Text>
    backgroundColor: '#00FFFF'

      接着我们运行看下效果:

      和预期的效果一样,这样的话只要修改一份代码,可以同时在android和iOS中运行。
      先简单学到这里了,之后可以学学别的简单的空间。感觉这么一来,web端,android端,ios端,以及服务端,都只要用js就可以完成个七七八八了,很赞,js还是要好好学学了。

  • 相关阅读:
    APP切换环境
    Cors
    有关JavaScript事件循环的若干疑问探究
    你知道async await的缺陷吗?
    Referrer Policy示例讲解
    HSTS 示例讲解
    解决element ui的zindex问题
    js加载在css前面或后面的示例讲解
    window.name和postMessage跨域详解
    clickjacking的示例讲解
  • 原文地址:https://www.cnblogs.com/wuyida/p/6299940.html
Copyright © 2020-2023  润新知