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 相关文章推荐
JQuery下关于$.Ready()的分析
Dec 13 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
遍历DOM对象内的元素属性示例代码
Feb 08 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
利用jquery禁止外层滚动条的滚动
Jan 05 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
仿京东快报向上滚动的实例
Dec 13 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
详解Puppeteer 入门教程
May 09 Javascript
JavaScript逻辑运算符相关总结
Sep 04 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 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下判断网址是否有效的代码
2011/10/08 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
用Python实现一个简单的线程池
2015/04/07 Python
python如何读写json数据
2018/03/21 Python
Django框架自定义session处理操作示例
2019/05/27 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
普通员工辞职信
2014/01/17 职场文书
办公室文员自荐书
2014/02/03 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
营销计划书
2015/01/17 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
Python实现仓库管理系统
2022/05/30 Python