React Native 环境搭建的教程


Posted in Javascript onAugust 19, 2017

一直对 RN 充满了好奇,前段时间学习并实际使用 RN 来开发了一个简单的应用。第一步从环境搭建开始。

环境搭建

分别需要安装Node,Watchman,Yarn 和 RN 命令行工具,推荐把 react-devtools 的 debug 工具也一并安装了

$ brew install node

$ brew install watchman

$ brew install yarn

$ npm install -g react-native-cli

$ npm install -g react-devtools   // debug工具,可选

创建应用

只要运行下面的命令就可以创建一个名为 AwesomeProject 的 RN 项目

react-native init AwesomeProject

也可以指定使用 RN 版本号,

react-native init AwesomeProject --version 0.47.0

该命令会创建一个 package.json 的文件,就是 npm 管理依赖的文件。这个文件中需要特别注意,在 dependencies 中申明的 react 和 RN 的版本一定要配对。有一次生成后的项目运行总是报错,百思不得其解,最后才发现是版本不匹配造成的。只能默默修改版本号,然后运行 npm install 才得以解决

{

 "name": "AwesomeProejct",

 "version": "1.0.0"

 "private": true,

 "scripts": {

  "start": "node node_module/react-native/local-cli/cli.js start"

 },

 "dependencies": {

//  "react": "^15.6.1", // was installed by npm but not matched

  "react": "^16.0.0-alpha.12", // correct dependency version for react

  "react-native": "^0.47.0"

 }

}

除了依赖管理文件以外,还有 ios 和 android 两个目录用来存放原生代码,以及一些初始化的 JavaScript 文件模板,以后会用到,就不一一列举了。

初次运行

初次运行是用来检查环境是否正确的简单的反馈,根据平台运行下列命令

$ react-native run-ios
or
$ react-native run-android

Android 需要事先启动模拟器或者连接真机,iOS 会自动启动模拟器。如果看到下面这个界面,恭喜你已经完成了环境的搭建,就可以开始应用层的开发了。

React Native 环境搭建的教程

RN First Launch

启动过程

到此结束也是可以的,但是还有一个问题需要解释一下,以便之后能够快速进入 RN 应用开发。如上节提到的启动命令,可以分解成两步。

步骤1. 启动服务器

一个步骤是启动开发服务器,它是用来提供运行所需的 JavaScript 文件的,当然也可以用下面的命令单独启动

npm start

服务会占用本地的8081端口,如果该端口被占用,需要依次运行下面两个命令来结束占用端口的进程

$ sudo lsof -i :8081
$ kill -9 <PID>

步骤2. 启动移动端

另一个步骤就是编译移动原生代码并安装运行,和平时开发原生移动应用是一样的。也可以到平台各自的目录下,ios或者android,用 IDE 打开并编译运行。

启动完成并看到上面的截图的界面,就不用反复编译和启动移动端程序,每次代码修改只需在模拟器中按提示刷新即可看到修改内容。因为 RN 的主要的逻辑代码在服务器端的 JavaScript 中,就是说每次刷新都会拉取服务器上的最新代码并重新渲染用户界面。

当然,目前提到的整个过程仅指在开发阶段,生产环境中可以更自由, JavaScript 文件的存放可以在服务器和客户端之间进行选择。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用倒置滤镜把div倒置,再把table倒置。
Jul 31 Javascript
利用javascript实现一些常用软件的下载导航
Aug 03 Javascript
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
Dec 15 Javascript
使用node.js 制作网站前台后台
Nov 13 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 Javascript
详解javascript中的事件处理
Nov 06 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 #Javascript
浅谈关于.vue文件中style的scoped属性
Aug 19 #Javascript
如何理解Vue的作用域插槽的实现原理
Aug 19 #Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 #Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 #Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 #Javascript
深入理解ES6的迭代器与生成器
Aug 19 #Javascript
You might like
基于mysql的bbs设计(一)
2006/10/09 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
ucenter通信原理分析
2015/01/09 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
keep-alive保持组件状态的方法
2020/12/02 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
智能钱包:Ekster
2019/11/21 全球购物
企业法人任命书
2015/09/21 职场文书
护士业务学习心得体会
2016/01/25 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技