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 相关文章推荐
一个符号插入器 中用到的js代码
Sep 04 Javascript
JavaScript 题型问答有答案参考
Feb 17 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
May 23 Javascript
Jquery取得iframe下内容的方法
Nov 18 Javascript
类似php的js数组的in_array函数自定义方法
Dec 27 Javascript
JavaScript中伪协议 javascript:使用探讨
Jul 18 Javascript
Javascript中的apply()方法浅析
Mar 15 Javascript
浅谈js中的bind
Mar 18 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 Javascript
JS判断浏览器类型与操作系统的方法分析
Apr 30 Javascript
JS实现页面鼠标点击出现图片特效
Aug 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
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
js取得url地址参数实例
2013/02/22 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python内建数据结构详解
2016/02/03 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
大学毕业生的自我鉴定
2013/11/30 职场文书
个人承诺书格式
2014/06/03 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
2016特色励志班级口号
2015/12/24 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
导游词之镇江焦山
2019/11/21 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS