zoukankan      html  css  js  c++  java
  • React Native 项目结构及运行分析(HelloWorld)

    ********************  RN开发环境搭建完成后,总会来一个“HelloWorld”嘚瑟一下。********************

    参考资料:http://v.youku.com/v_show/id_XMTQ4OTYyMjg4MA==.html

    1.创建HelloWorld (一个很恶心的地方就是:每次都得用终端输入替换镜像源的两个命令,要不然就得悲催的傻等

    2.成功后,会在根目录生成HelloWorld的工程。

    package.json 文件

    A.nameversionpackage.json中最重要的两个字段,也是发布到NPM平台上的唯一标识,如果没有正确设置这两个字段,包就不能发布和被下载。

    B. scripts 通过设置这个可以使NPM调用一些命令脚本,封装一些功能。

    C.dependencies 指定依赖的其它包,这些依赖是指包发布后正常执行时所需要的,如果是开发中依赖的包,可以在devDependencies设置。

     

    3.打开IOS工程,并运行。 

    首先会弹出一个“终端窗口”,叫做React Packager: 做打包的工具,一个微型的HTTP服务器,默认在8081端口运行,把用户写的js文件及所有依赖的第三方js文件收集在一起并打包,通过HTTP协议提供给用户创建的React Navtive应用。

     

    React Native应用分为两个部分:

    A.原生代码部分

    B.JS代码部分

    应用启动,在开发模式下(Debug),就会寻找 “index.ios” 这个文件(参考AppDelegate.m文件),index.ios” 就是有Packager提供。Packager收集js文件通过转码(EC6 -> EC5)

     

    IOS项目中 Icon Launch等设置没有改变

     

    4.index.ios.js 文件分析

    /**
    * Sample React Native App
    * https://github.com/facebook/react-native
    * @flow
    * 定义了一个名为HelloWorldApp的新的组件(Component),并且使用了名为AppRegistry的内置模块进行了“注册”操作
    * 组件本身结构可以非常简单——唯一必须的就是在render方法中返回一些用于渲染结构的JSX语句。
    */

    /* "use strict" --- 严格模式
    * - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
    - 消除代码运行的一些不安全之处,保证代码运行的安全;
    - 提高编译器效率,增加运行速度;
    - 为未来新版本的Javascript做好铺垫。
    参考: http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
    * */
    "use strict"

    import React, { Component } from 'react';
    import {
    AppRegistry, // 注册组件,是应用的JS运行入口
    StyleSheet, // 样式表, 类似于一个集合包含各个组件的属性
    Text, // 文本组件(类似于IOS的UILabel)
    View // 视图组件
    } from 'react-native';

    // 声明一个 Helloworld 组件
    class HelloWorld extends Component {
    render() { // 渲染
    return (
    // 根视图 , 然后根视图上加载一个Text组件用来显示 文本
    <View style={styles.container}>
    <Text style={styles.welcome}>
    根视图上加载Text组件并显示一个段文字:Hello
    </Text>
    <Text style={styles.welcome}>
    副标题
    </Text>
    </View>
    );
    }
    }

    const styles = StyleSheet.create({
    container: { // 根视图的相关属性设置,名字任意, 前后呼应为宜。以下设置参考:http://www.myexception.cn/flex/2040674.html
    flex: 1, // 当一个元素定义了flex属性时,表示该元素是可伸缩的(flex的属性值大于0的时候才可伸缩)。
    justifyContent: 'flex-start', // flex-start、flex-end、center、space-between、space-around
    alignItems: 'flex-start', // flex-start、flex-end、center、space-between、space-around
    // backgroundColor: '#F5FCFF',
    backgroundColor: 'white',

    },
    welcome: {
    backgroundColor: 'black', // 背景颜色
    // padding: 10, // 内边距(文字距离Text组件的边距)
    marginLeft: 10, // x 坐标 (外边距-距离左边) ------ 与根视图的两个属性关联justifyContent & alignItems
    marginRight: 0,
    marginTop: 50, // y 坐标 (外边距-距离上边) ------ 与根视图的两个属性关联justifyContent & alignItems
    // fontFamily:'', // 字体名称(楷体、方正等)
    // fontStyle: '', // 字体样式(粗体、斜体等)
    fontSize: 20, // 字体大小
    textAlign: 'left', // 字体排版 (auto、left、right、center、justify)
    color:'red', // 字体颜色
    // borderStyle: 'dashed',// 边框样式 (solid-固体/立方体、dotted-布满的/打点的、dashed-虚线)
    // borderColor:'red', //边框颜色
    // borderRadius: 9, // 边框圆角
    // shadowColor: "red", // Text组件的影子颜色
    // shadowOffset: 10, // Text组件的影子倾斜度
    // textShadowColor: "red", // 内容文本影子颜色
    // tintColor: 'red', // 前置颜色(一般用不到)
    // height: 85, // Text组件高度
    // 350, // Text组件宽度
    // maxHeight: 80, // Text组件最大高度,自适应宽度情况下用到
    // maxWidth: 80, // Text组件最大宽度,自适应高度情况下用到
    // margin: 10, // 距离四周都是 10
    },
    subTitle:{
    backgroundColor: 'gray', // 背景颜色
    marginLeft: 20, // x 坐标 (外边距-距离左边) ------ 与根视图的两个属性关联justifyContent & alignItems
    marginTop: 100, // y 坐标 (外边距-距离上边) ------ 与根视图的两个属性关联justifyContent & alignItems
    fontSize: 20, // 字体大小
    textAlign: 'left', // 字体排版 (auto、left、right、center、justify)
    color:'red', // 字体颜色
    },
    instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
    },
    });

    /*
    * AppRegistry模块则是用来告知React Native哪一个组件被注册为整个应用的根容器。
    * 一般在整个应用里AppRegistry.registerComponent这个方法只会调用一次
    */
    AppRegistry.registerComponent('HelloWorld', () => HelloWorld);

     

  • 相关阅读:
    电商 JQuery 抓取联系人信息 复制的代发兔
    Linux-Centos下安装工具用来解压压缩
    Linux远程连接及上传文件
    虚拟机-Linux-Centos8.1 与宿主主机ping互通
    虚拟机-Linux-Centos8.1联网
    数字量输入模块和模拟量输入模块的区别是什么?
    串口转以太网模块设备介绍和使用说明
    以太网模块是什么,以太网模块的功能和特点
    4G DTU连接阿里云说明手册
    react07
  • 原文地址:https://www.cnblogs.com/madaha/p/5904972.html
Copyright © 2011-2022 走看看