前言

刚接触RN,相信很多人无从下手,不知道下一步要干什么,能干什么,本次学习围绕这个问题,将RN的常用命令总结一下,帮助你快速上手

架构理解

光知道命令的作用,远远不够,如果知道命令背后的意义,才能运用自如,不惧困难,下面先理解下RN的架构,请看图

 
架构图

最简单的解读就是,RN通过编写JS代码最终调用各系统原生API实现跨平台。看图知道最关键的部分是Bridge,Bridge是一种映射,将js代码映射成平台原生代码,并执行。
JSX:一种高级语法糖,可以在js代码中直接写HTML标签,如图

 
JSX

React UI Components : RN所有的UI组件,如图

 
组件

一共就这么多,看名字是不是很熟悉。

React Module Components :除了官方的组件外,你可以引用第三方的任意组件。

Framework:还可以用第三方的库来提高开发效率,这是一个开发平台必不可少的一部分。

这里讲的不深,如果想深入理解,请看一下地址:

架构组件设计应用架构设计架构初探架构分析深入理解架构

常用命令

react-native init projectName

初始化RN项目,会创建新项目,并下载RN依赖,新增IOS,Android项目目录

react-native run-ios

构建IOS项目,做了两件事1.启动node服务2.执行xcode项目构建安装app到ios模拟器

react-native run-android

构建Android项目,同上:1.启动node服务,如果已启动则跳过2.执行studio  gradle自动构建

项目构建整个过程就是RN架构原理的体现,首先将JS代码打包成bundle文件,放到node服务层,公开下载接口,安装到原生平台后,由Bridge层解析代码转成原生Api调用。这就是上面命令背后的事。

npm install   --save-dev  库名

如果是生产环境的话 需要在–save后面加-dev,该命令实际是给RN添加第三方库,架构中属于React Module Components部分,在Android中就是新增引用的jar包。

react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/bundle/index.iosbundle.js  --assets-dest ios/bundle

这个命令比较长,背后就干了一件事,将JS代码转成bundle,供原生平台下载,并解析渲染成UI
详细解释:
--entry-file ,ios或者android入口的js名称,比如index.ios.js
--platform ,平台名称(ios或者android)
--dev ,设置为false的时候将会对JavaScript代码进行优化处理。
--bundle-output, 生成的jsbundle文件的名称,比如./ios/bundle/index.ios.jsbundle
--assets-dest 图片以及其他资源存放的目录,比如./ios/bundle

react-native start / npm start

启动node服务,当你run-ios 或者Android项目的时候会执行这个命令。

总结

通过对整个RN原理的理解来解读命令,知道命令背后做的工作,就能很容易的记住,这种方式在学习过程中有助于理解。希望对你有帮助。


 

转自https://www.jianshu.com/p/bef4000e8934

React Native 【学习总结】-【常用命令】的更多相关文章

  1. react native 学习一(环境搭配和常见错误的解决)

    react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...

  2. React Native 学习笔记--进阶(二)--动画

    React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...

  3. React Native 学习-01

    React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...

  4. React Native 学习资料

    React Native 学习资料 学习资料 网址 React Native中文网 https://reactnative.cn/

  5. 一张图学习vim常用命令

    一张图学习vim常用命令

  6. React Native 学习(三)之 FlexBox 布局

    React Native 学习(三)之 FlexBox 布局

  7. goland学习-go常用命令使用

    goland学习-go常用命令使用 1.跨平台编译:env GOOS=linux GOARCH=amd64 go build 2.获取go第三方包:go get -u github.com/go-sq ...

  8. iOS、swift、React Native学习常用的社区、论坛

    <!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...

  9. iOS 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  10. React Native学习(一) 环境搭建

    需安装工具 RN环境: [必须] Node [必须] react-native-cli [可选] Node Package Manager(npm):node包管理工具,一般安装Node会带上npm ...

随机推荐

  1. C++程序设计入门(上) 函数学习

    局部变量和全局变量的访问: 全局变量的作用域时全局,局部变量的作用域是局部,若全局和局部的变量名相同的话,局部变量的改变不会引起全局变量的改变#include<iostream> int ...

  2. Ubuntu下apt方式安装与更新Git

    本人使用的系统 Ubuntu 18.04.1 ,使用apt安装Git: sudo apt insatll git 安装后发现不是最新的版本,更新方法: sudo add-apt-repository ...

  3. 前端基础-jQuery中的如何操作标签

    阅读目录 样式操作 文本操作 属性操作 文档操作 一.样式操作 1.样式类 addClass();// 添加指定的CSS类名. removeClass();// 移除指定的CSS类名. hasClas ...

  4. python小项目之微信远程控制

    前两天接触了一个有趣的python模块--itchat,这个模块可以非常方便的操作微信,今天就来使用这个模块来实现微信远程控制. 环境准备 itchat模块不是python标准模块(内置模块),是一个 ...

  5. S2-057远程代码执行漏洞复现过程

    0x01 搭建环境docker https://github.com/vulhub/vulhub/tree/master/struts2/s2-048 docker-compose up -d 0x0 ...

  6. 郁金香指标开源库的使用--(tulipindicators-0.8.4)

    瞎逛发现最新出了这么一个指标库,有100多种指标的函数库,文档写的比较好,重要的是作者一直在维护. 把它编成库,然后测试一下,可用于自动交易,策略交易等开发. 1.下载地址 https://githu ...

  7. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  8. 【转】ASP.NET 防止同一用户同时登陆

    要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在.在这里使用一个cache存放已经登陆的用户名,但是还有一个问题就是要知道用户是什么时候离开 ...

  9. 2017-2018-1 20155318《信息安全技术》实验二——Windows口令破解

    2017-2018-1 20155318<信息安全技术>实验二--Windows口令破解 一.实验原理 口令破解方法 口令破解主要有两种方法:字典破解和暴力破解. 字典破解是指通过破解者对 ...

  10. 百度地图api 常用 例子

    功能一:获取map地图窗口的可视区域: var map = new BMap.Map("allmap");            // 创建Map实例 map.centerAndZ ...