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 相关文章推荐
在新窗口打开超链接的方法小结
Apr 14 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
Sep 06 Javascript
javascript实现节点(div)名称编辑
Dec 17 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
Mar 06 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
element-ui的回调函数Events的用法详解
Oct 16 Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 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
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
python中list循环语句用法实例
2014/11/10 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python下载指定页面上图片的方法
2016/05/12 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
django定期执行任务(实例讲解)
2017/11/03 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
jQuery treeview树形结构应用
2021/03/24 jQuery
大学生文员专业个人求职信范文
2014/01/05 职场文书
海上钢琴师观后感
2015/06/03 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书