[ReactNative入门到精通]React Native 第一个程序 Hello Word

版权声明:转载请标注:http://blog.csdn.net/yzzst 。 本文为博主原创文章,未经博主允许不得转载。作者:周圣韬(北漂周) https://blog.csdn.net/yzzst/article/details/49038511

人生没有对错,只有选择后的坚持,不后悔,走下去,就是对的。

React Native 项目目录解析

上一节我们简单的新建了一个React Native的项目AwsoneProject,我们什么都没有操作,就直接在模拟器上运行起来了。这里我们详细的看看,React Native给我们生成的这几个文件到底是做什么用的。

项目目录结构

文件建构如下图所示:

  • android
    android 的项目构建目录
  • ios
    iphone 的项目构建目录
  • node_modules
    react native 所引用的资源库,项目依赖库,打包脚本等的目录
  • index.android.js
    这个文件是默认生成的,但是这个可以在android目录中的MainActivity中进行设置。如下

        mReactInstanceManager = ReactInstanceManager.builder()
                .setApplication(getApplication())
                .setBundleAssetName("index.android.bundle")
                // 设置模块的主入口为index.android
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();

其内容遵循的是react 规则

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';

// 声明一个react native项目需要包含的几个依赖库
var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
} = React;

// 整个Project的入口
var AwesomeProject = React.createClass({
   // 渲染的方式,和渲染的内容,类似布局文件
  render: function() {
    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>
    );
  }
});


// 布局类型的样式,并不是继承于css只是包含FlexBox的属性而已,使用时候注意文档
var 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,
  },
});

// 注册整个app的主入口
AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
  • index.ios.js
    类似Android中的js文件,可以在xcodeproject中进行修改
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
} = React;

var AwesomeProject = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.ios.js
        </Text>
        <Text style={styles.instructions}>
          Press Cmd+R to reload,{'\n'}
          Cmd+D or shake for dev menu
        </Text>
      </View>
    );
  }
});

var 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,
  },
});

AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
  • 打包脚本文件package.json
    react native默认是是用来packager进行打包,这个就是针对于packager的打包文件,内容如下所示
{
  "name": "AwesomeProject",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node_modules/react-native/packager/packager.sh"
  },
  "dependencies": {
    "react-native": "^0.12.0"
  }
}

Hello World

Ok 这里我们自己尝试写一个Hello World的项目程序。这里我们根据生成的index.android.js进行修改。

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
} = React;

var AwesomeProject = React.createClass({
  render: function() {
    return (
     // 放置一个 sytle为myFont的Text 。内容为Hello World
     <Text style={[styles.myFont]} >
          Hello World!
     </Text>

    );
  }
});

// 定义 myFont样式 的字体大小为100
var styles = StyleSheet.create({
  myFont: {
      fontSize:100,
  }
});

AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);

得到效果如下:

有过JavaScript基础的同学一看应该就能够看懂了,虽然本程序没有使用到css,但是语法与格式都与css极为类似,可以是使其的子集。

而render的布局样式有极为类似Android中的layout文件编写模式。相信大家简单的联系也能够很快的入手。


调试注意

值得一提的是,一问我们的整个项目都是使用js来进行书写的,所以我们的所有的项目在调试的时候都不需要重新编译。

直接点击Reload js既可以了,这个也就是为什么后面说React Native能够完成在线的Hotpatch功能,如下图所示:

当然没有报错的话,官方说模拟器可以按下F2键也能够reload js,Genymotion下用 ⌘-M。我没有成功过。

还是老实的再运行一遍吧。

/*
* @author zhoushengtao(周圣韬)
* @since 2015年10月11日 凌晨 1:34:20
* @weixin stchou_zst
* @blog http://blog.csdn.net/yzzst
* @交流学习QQ群:341989536
* @私人QQ:445914891
/

猜你喜欢

转载自blog.csdn.net/yzzst/article/details/49038511