React Native 系列(三) -- 项目结构介绍
前言
本系列是基于React Native
版本号0.44.3
写的,相信大家看了本系列前面两篇文章之后,对于React Native
的代码应该能看懂一点点了吧。本篇文章将带着大家来认识一下React Native
的项目结构。由于之前的项目被我们改动了很多,因此,这里我们重新创建一个项目。
初始化 React Native 工程
- 自动创建 iOS/Android 工程和对应的
JS
文件,index.iOS.js
,index.android.js
- 并且通过
npm
加载package.json
里面的依赖库到node_modules
文件夹中
终端执行以下命令行:
react-native init RNDemoOne --version 0.44.3
打开iOS工程,查看 Appdelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
// 获取js文件url
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
// 加载控件
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"RNDemoOne" initialProperties:nil launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
// 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
// 设置窗口根控制器
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
// 显示主窗口
[self.window makeKeyAndVisible];
return YES;
}
- 加载控件方法:
(initWithBundleURL: moduleName: initialProperties: launchOptions:)
中的moduleName
不能随便写,必须跟js
中注册的模块名字一致。
查看index.ios.js
我是使用的webStorm
,webStorm代码提示
iOS程序一启动,就会去加载这个文件,去创建组件,并且把加载完的组件显示到界面
index.ios.js 实现步骤
- 因为需要用到
JSX
,所以需要加载React
模块;需要用到里面Component
组件,所以需要加载Component
。 - 加载
AppRegistry
,StyleSheet
,Text
,View
原生组件,它们都在react-native
文件夹里面。 - 自定义组件,作为程序入口组件。
- 创建样式表。
- 注册组件,程序入口,程序一启动就会自动加载注册组件。
React Native语法
我们已经创建过两个React Native
(简称RN
)项目了,可能大部分同学看RN
代码感到头疼的事情是,不知道什么时候使用{}
,什么时候使用()
。因此,我在这里为大家做个简单的总结,如果发现有不对的地方,欢迎纠正。
RN
中,使用表达式的时候用{}
包住style={styles.container}
RN
中,在字符串中使用变量的时候用{}
包住var str = "scott"
<Text>{str}</Text>
RN
中,对象,字典需要用{}
包住<View style={{flex:1}}></View>
{flex:1}
是一个字典RN
中,创建组件必须要用()
包住,因此在返回组件的时候,需要用()
render(){
return (
<View style=styles.container>
</View>
)
}
致谢
如果发现有错误的地方,欢迎各位指出,谢谢!
React Native 系列(三) -- 项目结构介绍的更多相关文章
- React Native 系列(三)
前言 本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧.本篇文章将带着大家来认识一下React N ...
- .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI
作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...
- 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信
http://blog.csdn.net/xiaominghimi/article/details/51586492 一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解R ...
- 上门洗车APP --- Androidclient开发 之 项目结构介绍
上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分 ...
- SpringBoot项目结构介绍
一项目结构介绍 springboot框架本身对项目结构并没有特别的要求,但是按照最佳的项目结构可以帮助我们减少可能遇到的错误问题.结构如下: (1)应用主类SpringbootApplication应 ...
- React Native 学习(三)之 FlexBox 布局
React Native 学习(三)之 FlexBox 布局
- React Native 系列(九) -- Tab标签组件
前言 本系列是基于React Native版本号0.44.3写的.很多的App都使用了Tab标签组件,例如QQ,微信等等,就是切换不同的选项,显示不同的内容.那么这篇文章将介绍RN中的Tab标签组件. ...
- React Native 系列(九)
前言 本系列是基于React Native版本号0.44.3写的.很多的App都使用了Tab标签组件,例如QQ,微信等等,就是切换不同的选项,显示不同的内容.那么这篇文章将介绍RN中的Tab标签组件. ...
- React Native 系列(一) -- JS入门知识
前言 本系列是基于React Native版本号0.44.3写的,最初学习React Native的时候,完全没有接触过React和JS,本文的目的是为了给那些JS和React小白提供一个快速入门,让 ...
随机推荐
- js数组string对象api常用方法
charAt() 方法可返回指定位置的字符. stringObject.charAt(index) indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. stringObject ...
- IDE-Ecplise-代码注释 模版 编码规范 配色
说明: 代码注释主要用于方便代码后期维护,编码规范,增加代码阅读性和维护性.因网上看到的很多博客中片段局多,故整理后重写一篇,方便交流学习. 先看下加过注释模版后的效果. 如上图所示,创建类,方法和继 ...
- 2018年html5入门到精通教程电子书百度云盘下载共22本
名称 查看 <HTML5启动和运行>(HTML5.Up.and.Running)扫描版[PDF] 下载 <Pro HTML5 Performance>(Pro HTML5 Pe ...
- 路由测试-lee
//get 路由 Route::get('/', 'WelcomeController@index'); Route::get('home', 'HomeController@index'); //路 ...
- MySql中的varchar长度究竟是字节还是字符
今天在设计表的时候,遇到个小问题,由于不知道未来将要存储的数据有多长(数据是通过第三方http接口提供的,根据sample显示,数据大概是如下:) 也就是6个字符. 我在设计表的时候,有点犹豫,本来准 ...
- Pymsql
Pymsql 1.创建数据库连接 pymsql connect conn=pymysql.connect(host="localhost",user="root" ...
- MongoDB系列五(地理空间索引与查询).
一.经纬度表示方式 MongoDB 中对经纬度的存储有着自己的一套规范(主要是为了可以在该字段上建立地理空间索引).包括两种方式,分别是 Legacy Coordinate Pairs (这个词实在不 ...
- JavaScript初探之字符串与数组
一直在研究JS以至于忘记跟新博客... 字符串:// str.charAt(x); //获取下标为x的字符// str.indexOf(",",1); //获取",&qu ...
- c#代码输入图片
Image bgimage = Image.FromFile(flieUrl + bgImg); if (bgimage != null) { Bitmap bmp1 = new Bitmap(bgi ...
- [LeetCode] Poor Pigs 可怜的猪
There are 1000 buckets, one and only one of them contains poison, the rest are filled with water. Th ...