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跨域访问示例(客户端/服务端)
May 19 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
JS实现控制表格单元格垂直对齐的方法
Mar 30 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
Mar 10 Javascript
AngularJS中ng-class用法实例分析
Jul 06 Javascript
详解wow.js中各种特效对应的类名
Sep 13 Javascript
node简单实现一个更改头像功能的示例
Dec 29 Javascript
javascript实现日历效果
Jun 17 Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
JavaScript字符串对象
2017/01/14 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
Python Web版语音合成实例详解
2019/07/16 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
超市后勤自我鉴定
2014/01/17 职场文书
考试违纪检讨书
2014/02/02 职场文书
开学典礼感言
2014/02/16 职场文书
保护环境建议书
2014/03/12 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
对Keras自带Loss Function的深入研究
2021/05/25 Python
Django基础CBV装饰器和中间件
2022/03/22 Python
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技